Let us accept the fact that both Microsoft products and Java are focussed at the lower end medium level organizations and not at companies that use proprietary mainframe products.
That being the case, ease of use, the learning curve involved and productivity timeframes are the most important.
Microsoft has all along been a software company and has specialized in User interfaces, ease of use and integrated products. If not more it has been bringing out products in these lines for the past 12+ years.
Why should a hardware company like Sun even try to compete in this area. It would have been nice if developments in the hardware front would have been concentrated. Giving away something free on the software front, projecting itself as a messiah for s/w developers and having the hardware prices nowhere in the reach of a common developer is beyond my thinking. How many Java developers use Sun Solaris for developing their Java applications compared to Windows machines. That seems ridiculous.
As far as the development environment goes, today as we stand, there is no single product in the market that can match Visual Studio.NET And as far as i have seen from the Beta1 stage of the .NET framework, i dont see if it lacks anything that Java has to offer. Don't bring the platform independency aspect into this discussion anymore. With SOAP, XML and WebServices, the days of platform dependency is history.
See the kind of complexity EJB involves, especially for a begginner to distributed computing. What is it that you can greatly achieve with EJB that u cannot with a simple dll, for which i need not take one single step extra to develop in VS.NET Why make things complex when the same can be achieved in simple ways.
It is very easy to say Microsoft copies technologies and remodels it as if it is its own. What did Sun do. Almost all the technologies from Sun, except Servlets, were tehnologies that were around somewhere in some form. Also see, if Sun has done anything great in the last one year. Two things that have come out from this side are Apache Struts and bundled up old XML packages as WebServices. None of them are simple and straightforward. Even for the serious Java guy, it is playground for tweaking around. See ASP.NET's Server Controls, how are they less than struts, yet so simple and intuitive to use.
Then this big talk about MVC and design patterns, Model 1 and Model 2 and so on confusing the young Java programmer and distracting the .NET guy. Is it not common sense that code and content has to be separated. This we are doing the days ASP and COM. In fact the real use of COM caught on when this problem was identified in the initial days of internet programming. MVC in JFC was understandable. There itself Java has not adopted the complete MVC architecture as that science goes. If you pour through the documentation of Sun's MVC for software today it talks basically about how to write applications separating code and content. Something which can be told in one paragraph need not be talked about as if it is a technology. These kind of things can put away a young computer scientist who is venturing into the world of computing.
As a Microsoft developer, i have only one thing to do, get on to .NET Everything is part of the environment and if anything advanced there are leads from within the ide. In fact VS.NET is a one window opening to a Microsoft developer....What is the equivalent, or even a far equivalent thing from Sun's side.....That should tell whether the world should imbibe .NET or J2EE. I am a strong Java lover and have developed many systems in Java, but when a better technology comes around i dont suggest anyone to stick to something because i love it. That way i loved COBOL too, I loved C too.....Can i suggest COBOL to the world now.
Let us agree facts, .NET is definitely superior as a usable product to whatever Sun has to offer as disjointed entities.
After all this debate, take it from me .NET and J2EE will go hand in hand, only thing is .NET will have the upper hand and the lead. J2EE will be trailing behind. Like Coke and Pepsi, Like Unix and Windows, Like ......
But this time on .NET is a sure winner!!!