Dave Ranck is Chief Technology Officer of Software Consortium, Inc., a Mid-Atlantic applications development company which specializes in both .NET and J2EE development. He has designed and built award-winning Web-based applications in both Microsoft and Java technologies. Dave regularly speaks at seminars and events on topics relating to Web Services, .NET and J2EE.
Post your questions for SearchWebServices site expert Dave Ranck.
A user asks Dave, "Assume that we have a new mission critical Web application that we need to develop over the next six months. How would you recommend we compare & contrast the pros/cons of J2EE vs. .NET as the platform (assuming we have the proper skills)?"
There are many, many factors that come into play when deciding between J2EE and .NET. As a foundational statement, let me state that I personally believe you can build (and I have built) mission critical Web applications on both platforms. Sun Microsystems commissioned a white paper (see links at the end of this post) that states the theoretical scalability of each platform is unlimited. I say this because your decision should not based on whether or not you *can* build a more robust application in one or the other. It can be done.
As far as developing Web services, either platform offers a great foundation. Of course there are intrinsic advantages to each platform which I'll list later. Web services and .NET are tightly integrated. It is *very* easy to create a basic Web service in .NET. It is simply a matter of placing a directive on each method you want exposed as a Web method. The compiler does the rest for you. Deployment is also a breeze. For the most part, you simply copy your files to the server and you're done. Visual Studio .NET is also a development environment that has no peers, in my opinion. I still believe Microsoft has the edge in getting a project out the door as fast as possible.
J2EE on the other hand also has some good tools for creating Web services. IBM's WebSphere Studio Application Developer 4 offers some great work-saving features for creating Web services. Basically you choose a Java bean or other object to "WebServicefy" and step through the wizard. When you are done, WebSphere Studio has created a wrapper for your object and all the SOAP, WSDL, etc. code needed. It also has created a JSP application to test your new Web service. It works and it is straightforward. I was able to create a simple Web service within 30 minutes of opening the environment for the first time. Pretty impressive for a Java IDE.
If you have developers skilled in one or the other platforms, then lean strongly toward that platform. The cost of training is high. Leveraging existing skills should be a priority.
That said then, what are the decision points one would consider when choosing between J2EE and .NET? Here are a few considerations and who I think has the advantage in each:
Currently if you need to create applications that run on more than one platform, Java is your only choice. This may change in future as .NET is ported to other platforms - we'll see.
Legacy Integration: J2EE?
If you need to integrate legacy systems you may have an easier time in J2EE. IBM for example, provided the iron for many of these systems and has very workable solutions to connect to mainframes through WebSphere. On the other hand, you *could* create a Web service on the legacy platform, making this point moot.
If you have developers in VB, C++, Java and want a unified environment for them to work in, .NET is your choice. All languages are created equal and work together, including cross-language inheritance.
Choice of Vendors: J2EE
Is a choice of vendors important to you? There are advantages to a multi-vendor solution - you can choose the best-of-breed for each component of your system. There are also advantages to a single vendor solution, which include better interoperability between components. For example, .NET and SQL Server 2000 working together are a powerful, easy to use (relatively) combination.
Vertical Scalability: J2EE
If scaling up by buying bigger iron is your organizations preferred method, than lean toward J2EE.
Horizontal Scalability: .NET
If your organization likes the idea of a greater number of cheaper servers than there is probably an edge with .NET.
Finally, after all is said and done, many decisions are in reality based on shall we say, non-scientific criteria such as:
Like Microsoft: .NET
I say this only partly tongue-in-cheek. Prejudice against Microsoft and the underlying technology goes deep with many technical folks and some business folks. It is a real factor in making this decision. There is also a prejudice in the Microsoft community against Java that is also based on less than scientific findings.
I have a PowerPoint presentation available here that might be useful.
J2EE vs. Microsoft .NET: (Copyright2001 The Middleware Company Prepared for Sun Microsystems, Inc.)
FOR MORE INFORMATION: The Best Web Links for .NET, J2EE and more