Microsoft has a lot riding on Windows Server 2003, the latest upgrade to its flagship software for managing computer networks. Will it work for large enterprises, where Microsoft hopes to finally compete with IBM? Redmond certainly thinks so.
Should developers with years invested in writing Windows-based code blindly commit to .Net? Definitely not, because .Net is inferior to Java 2 Enterprise Edition (J2EE) for Web application development.
There's no doubt that Microsoft has built a good relationship with the technical community. However, the company's greatest challenge to date is the dramatic shift from client/server computing to the Web. Microsoft is rolling out .Net in response to the explosion in Web development and J2EE, but unfortunately, it's two years late. But by sheer market force and its enormous installed base, Microsoft is trying to jump in and grab a greater chunk of customers' IT budgets.
As companies use the Web to integrate internal systems with the outside world, chief technology officers are deciding whether to depend on Windows as the development platform or to evaluate open systems. Some IT decisions make perfect sense -- moving from DOS to Windows, for example. But for those who think that .Net is a better, easier platform than client/server, think again.
It's common knowledge among developers I know that .Net is a complex migration from client/server, that it's not as scalable, and that Java is a much more open development environment. But another big issue is .Net's weak middle tier -- the crucial piece to the Web development platform puzzle. The middle tier has the single greatest impact on simplicity, productivity and application flexibility.
The Web was originally designed to link documents via HTTP. For more complex integration, it's necessary for back-end systems, such as applications and databases, to be connected to the browser via the middle tier of software. A smart middle tier makes it possible to build workflows that remember where you are within the business process -- such as a special approval within a loan application flow -- and make that happen automatically and effortlessly.
What separates J2EE from .Net is the maturity of that middle tier. Microsoft's .Net doesn't do much beyond connecting information -- basically where J2EE was years ago. For small-scale systems, it doesn't matter. But as applications grow in size and complexity, .Net's lack of a solid middle tier puts the burden on programmers, because it's cumbersome and time-consuming to build workflows into .Net. That leads to higher development and maintenance costs for customers.
A career Microsoft consultant told me how much time and effort he wastes just managing workflows within .Net. He is forced to write complex, redundant code to control the flow of an application. It's like a powerful 18-wheeler with a five-gallon gas tank that must stop every few miles to refuel. And since the driver doesn't have a map, he must constantly ask directions in order to find the next gas station. That's not bad when you deliver across town, but it's a logistical nightmare if you're driving from San Francisco to Boston.
In the same vein, .Net is fine for an online shoe catalog, which has limited options, but not for a complex process such as booking a cruise, which has many variables such as location, accommodations, land excursions, meals and payment.
J2EE, on the other hand, is well suited for Web development, with a mature middle tier supported by a wide variety of free open-source software from communities such as Apache and Eclipse.
J2EE's open standards have driven technology innovation from dozens of competing companies large and small, so customers aren't beholden to a monolith like Microsoft that holds all the cards.
This competitive environment has produced the latest J2EE technologies that enhance these open-source platforms to completely automate and simplify the Web development process -- comparable to installing a 500-gallon gas tank and GPS system in our 18-wheeler, making it possible to drive coast-to-coast without making a single stop.
How long will it take for .Net to offer this level of sophistication? We simply don't know.
I received a call the other day from an old friend who is an experienced Microsoft developer out of MIT. He had been laid off and asked me whether he should get a WebSphere certification to make himself more marketable. I said yes, it's a good idea; you shouldn't put all your eggs in Microsoft's basket. It's a wide-open world out there.