I used to intern at MS and have used .NET platform for a while (on and off, including not too long ago doing a bit of ASP.NET, ASP.NET MVC, and Sharepoint for one-week project). I've used VS.NET 2005, 2008, and 2010.

I've also used Java for a while, the whole Spring MVC, JEE6, Eclipse, IntelliJ.

If you're willing to live in Windows OS platform, you should go with .NET, no question asked. Forget about tooling and everything else.

If you want more flexibility, more choices, etc, Java is your choice. (There's also Python, Ruby, and the rest but let's scope it to Java).

.NET culture is heavily influenced by the culture of Microsoft which means:

1) Less Open Source, More mISV (more "pay" products)

2) Windows/GUI, less command-line (has changed a bit but still not there)

3) Fire and Motion http://www.joelonsoftware.com/articles/fog0000000339.html

#3 is important because MS makes money from tooling as well. When I was there, the internal chatter was "tool will be out of date every 2-3 years". Please make your own conclusion.

Some people said Java had this period of "sleeping" which was true. But during that time frame, we've seen TONS of open source projects that are very mature, battle-tested, and probably everlasting.

We've also learned a better way to write Java code (HN made such a big deal of Factories yet HN never acknowledge the best breed of Java code out there, it's a typical of a community like this anyway).

Thus that "sleeping" period is being used efficiently to stabilize things.

When it comes to tooling, Java beats .NET by miles. Java deployment packaging (JAR for library and WAR for web-app) is one of the best out there and it's been stable for many many years. (http://dirtsimple.org/2004/12/java-is-not-python-either.html)

Java build and dependency management tool is also far ahead of what the .NET has. Maven is far beyond NuGET and MSBuild (shrudder).

Integrating Java build with popular Continuous Integration server like Jenkins, TeamCity is waaaay easier than .NET.

Eclipse foster a good community of open source and free tools/plugins which put VS.NET to shame BUT BUT BUT experience may vary when using Eclipse. Eclipse is like black magic and moody: if somehow you're in the position that your Eclipse is stable, it's one of the best IDE out there.

Eclipse has its own built-in "app-store" that makes installing plugins sooo much easier, seamlessly, and faster.

m2clipse, a Maven plugin for Eclipse can perform the following steps:

1) Download dependencies

2) Download the dependencies javadoc (auto-complete will show the code documentation)

3) Download the dependencies source code (#1 only download the compiled code) if you ever wanted to "navigate to the implementation of a method"

It does this seamlessly without you breaking a sweat.

Tools like FindBugs and CheckStyle helped to improve your code hygine/style and EclEmma can tell your Code Coverage. All of these are free.

Java has rich and mature tools and libraries:

1) Sonar => http://www.sonarsource.org/

2) Jenkins => http://jenkins-ci.org/

To put it simply, the Java community has a very strong Software Engineering discipline and continue to find better ways to develop whereas the .NET/C# community is either following Java lead or serving its own master: Microsoft.

I'm glad I'm out the .NET world because it was soo much limiting and "capping" your day-to-day productivity.