Let me upfront clarify i am a strong Java supporter. I love Java But...
There is no doubt that .NET will take a bigger bite. Microsoft will definitely have the last laugh with .NET
On whatever comparable standards J2EE can in no way even come near .NET.
Take for example the recently offered JWSDP from Sun as a single window download for WebServices. Take a VB.NET/C# guy and a Java guy who are both new to implementing WebServices. I can bet by the time the Java guy writes his first Hello World Web Service the Microsoft programmer would have mastered atleast all the fundamentals of WebServices, like how to publish, how to consume, and the fundamentals of what is WSDL,SOAP,UDDI and what they are meant for (if not mastering them).
In fact there is no comparable tool to VS.NET in the whole of Java world including Visual Cafe, VisualAge or any such thing.
I can say that the only innovative thing Java did in its whole life time was to bring in the context of Servlets (Compileds pages) when the entire world was toying with scripting whihc is now anyway a matter of history with ASP.NET offering everything Servlets have to offer and more.
Microsoft made some mistakes which Java corrected. That does not mean that Java invented them. I am talking about the DLL Hell and Registry problems. That was the area which made EJB succeed. And that is also a matter of the past now with X-copy deployment introduced in .NET now.
If .NET was not there then there is meaning in using Java as a Technology for the Internet. But i dont see any reasoning in using Java for the Internet when we have an all in one solution in .NET
ClientSide of Java according to me is almost dead. See the way ASP.NET has leveraged XML to bring Server-side controls. This one concept i cannot but admire. The idea is revolutionary.
I dont need to write a single line of code for client side validation.
Take for instance ADO.NET again. Manipulating XML is one of the key developer job today, and that is done in a fizzy in .NET
Above everything, the beauty of it all is .NET is a product that is getting released as a finished product. Compare it with EJB which released specifications in three chunks and the related products even now not having implemented many of the EJB 2.0 features. Even the JDK is not fully mature after 7 years of Java. What are we talking about. Whose money are we playing around with.
Can you do anything in Java, without downloading something from somewhere. Can you build an application without any support from any responsible source. Then how is it Sun and Java different from OMG and Corba.
This discussion can be argued to any length.
While have been a strong supporter of Java and worked with it for past 6+ years, i cannot but admire the robustness, flexibility and artifacts of .NET
Kudos to Bill Gates and his team. With Unix Bill had to go hand in hand with his competing Windows, but that will not be the story with J2EE and .NET
.NET according to me has already won the race, technically. It is a cohesive complete solution for today's internet.