Java and .NET are both OO functional languages that execute code in JIT compilers, but there are many differences.
.NET has stronger patterns throughout the system, you basically learn one set of patterns and it works on everything. most developers support all of the patterns.
.NET has superior thread and memory management. in most tests i have seen, .NET code runs faster with less memory bulk and with better memory access models for most object calls.
.NET remoting is built in, while with Java you need external 3rd party Apps.
Visual Studio Blows Eclipse out of the water. I have yet to see a feature in Eclipse that was not first deployed in Visual Studio.
Visual Studio Team Edition, better supports 100,000 lines of code or more in revision control than any other platform, while remaining agile.
Microsoft has a long term support option if you plan to actually scale your product, Java on the other hand requires you to base your support options on the user community.
If you want to get access to the hardware layer for graphics, or communication, you can use the same tool set vertical, as you can to develop the rest of your code. With Java, if you want to do hardware, you need to break out of your development tools and use different ones.
.NET/ Visual Studio has framework language packages for C#, Visual Basic, Python, PHP, Ruby, C, C++, J#, JavaScript,
-and if we wanted to, we could write a framework package for ActionScript3 (yes we have considered it)
We love the .NET platform, but what we do not like is the server licensing fee. at $1000 a software license, we would rather amortize that cost based on uptime like a service, so that we could deploy an image on any number of computers, and pay for what we use. I have raised this concern with MS and how they do not fit well with EC2. For now we feel that MS will move along with their Novell relationship and Mono will become an extension platform for MS developers, with a service contract only.