I am curious what your latest thoughts are about the relative value of .NET vs. J2EE "superplatforms"
Can they be fairly evaluated due to their radically different degrees of openness, standards support, and ability to leverage the value of open source-style collaboration?
These features are just some of the many features that should be considered when evaluating a superplatform. Personally I don't think that there are such radically different degrees of openness and standards support between the superplatforms. All superplatforms "embrace and extend" industry standards. .NET is built on an ISO standard. The Java platforms are built on JCP standards. All superplatforms provide excellent support for the stable bits of the web services framework (SOAP, WSDL, UDDI, WS-Security, and WS-I BP). Likewise, all superplatforms add their own proprietary bits that pretty much lock you into the platform. Users can avoid using these proprietary bits, but then they pass up some of the unique value-add of using the superplatform in the first place. If that's the goal, then I suggest using JBoss rather than one of the superplatforms.
There is one important difference between the Microsoft and the other superplatforms -- .NET doesn't support Java, and therefore doesn't support the plethora of popular open source rebel frameworks out there, like Struts, Spring, and Hibernate. Likewise, the Java-based superplatforms don't support the .NET languages, and therefore don't support the plethora of .NET frameworks out there. Microsoft supplies a tremendous number of built-in frameworks, and there's a vibrant ecosystem of both open source and commercial add-on frameworks.
One way of looking at the situation is that the open source community had to developed a bunch of rebel frameworks for Java mostly because the J2EE standard doesn't provide a reasonable set of built-in frameworks. Very few .NET users complain about how inadequate ASP.NET, ADO.NET, Avalon, and Indigo are. I don't know anyone that thinks that JSP/servlets is adequate without something like Struts, or that think that EJB CMP is a stellar piece of engineering.
Openness, standards support, and ability to leverage the value of open source-style collaboration are important considerations, but just as important are things like:
- ease of use
- completeness of solution
- cohesiveness of the environment
- integration with user productivity applications (e.g., Office)
- integration with collaboration services
- how do you feel about open source?
- are you risk takers or risk averse?
- Do you prefer to buy from a sinlge vendor or cobble together a best of breed solution?
- Do you tend to build or buy?
The same trends that are propelling Google seem to be working against Microsoft. Do these same trends not affect the longer-term prospects for "superplatforms"?I agree that Google is a tremendous force to be reckoned with, and Google may very well emerge as the first in the next generation of superplatform vendors. But of all the current crop of superplatform vendors, I think Microsoft is best positioned to compete with Google. Microsoft is the only superplatform vendor that has any type of focus on the consumer marketplace. And Microsoft has already proven that it has the ability to make a massive mid-course change (embracing the Internet in the late '90s). I have a lot of confidence that Microsoft will remain in the game.
As for the other superplatform vendors, I don't think they realize yet that Google is a threat to them.