I was chatting with Steve last night about his upcoming Big Announcement, and the topic of Java vs. .NET came up, as it often does. Coincidentally, tonight I noticed this article over at InfoWorld quoting Mark Hapner, a Sun web services guy, that the future of Java is secure against Microsoft and .NET simply because of the supposed danger of being wedded to Microsoft’s business plans. In other words, people will choose Java because Microsoft won’t be able to force them to upgrade their operating system every three years. While the veracity of that statement is as usual debatable, I think he is totally missing the mark.
First a short aside into my background. I am a “best tool for the job” kind of guy. In college, I did a lot of work in C, C++, and Java. Afterwards, I spent the first several years of my professional career developing n-tier applications using Microsoft technologies. Later, I worked at Avanade developing in C#. My current work is almost entirely written in Java.
Now here’s my opinion: Java is secure against .NET simply because Java is a more mature platfrom with some amazing tools. While Microsoft spent five years pretending that VB6 and COM didn’t suck, a community was forming and beginning to create using Java. During that time, they built some amazing tools and software. Things like Eclipse and Cocoon and Maven and JUnit and JMock. It is these amazing tools, most of which are built with Java, by Java, and for Java, that will ensure the platform’s future for many years to come. Personally, I think C# and the CLR are a superior platform in raw technological terms - but if Microsoft has ever taught us anything, it is that the best technology doesn’t always rule the world.
Now sure, there are a lot of people busy porting many of the aforementioned projects to .NET, and many of those said projects are being improved and tweaked to better fit with the .NET model. NUnit is a perfect example. However, Microsoft and their community have a lot of code to write before they will be able to match the already existing tools for Java. That is why .NET hasn’t yet won the day, and why it never will.
Honestly, I’m hoping for some good competition and a nice 50/50 marketshare split. That would certainly lead to the best tools for me to use.