I've just been reading through a thread at Javalobby, where LINQ was discussed. The person who wrote the post was very open minded, but I was staggered by many of the the comments from Java developers. So many (about half) were dismissive of anything that Microsoft did, and they spoke about the Java language almost as though they were members of a cult.
One guy stated that 'While Java guys have only had one platform for the last ten years, Microsofties got nine! (soon to be ten)'.
There's a Java community view that the platform is abstracted away by the JVM, so you can port your app to any OS.
In my capacity as an IT Security consultant, I work on Java and .Net projects. When working on the security design for an application, one generally works with the technical architect to build security into the app. This inevitably entails many structural changes to the architecture.
Now, although there are a good number of excellent libraries in Java for providing security (such as JAAS for authentication and authorisation), much of the security for an enterprise application is in the implementation tool chosen. For instance, if you wish to secure a message bus, then you'd have to look at the documentation provided by WebSphere (or whichever product you're using) to know how to secure it. The security changes to the structure of the application are thus dependent on the OS and tools used.
So, the app is not independent of the OS in the case of enterprise applications that have to be secured. And that's that!