The difference between the bottom-line value propositions of Java and .NET really come down to the fact that Java is platform independent at the cost of losing your programming language choices, while .NET is programming language independent at the expense of your operating system choices (of course Mono will reduce this burden over time somewhat).

With statement above in mind it's quite pleasing to see the emerging pool of .NET bridges for the Java Virtual Machine (basically tools that allow the use of Java Components within the .NET CLI (CLR and .NET bound languages e.g. C#, VB.NET, and others):

JavaBridge (awaiting url)