header image
Home arrow .NET Vs J2EE arrow Similarities and Differences between J2EE and the .NET Platform
Similarities and Differences between J2EE and the .NET Platform PDF Print E-mail
User Rating: / 6
PoorBest 
Written by Administrator   
Jun 16, 2007 at 06:14 PM

Similarities between J2EE and the .NET Platform

A full listing of equivalencies between J2EE and the .NET platform is given in Figure 5. As you can see, many of the .NET platform functional areas have no counterpart in J2EE. In some of these cases, it is considered to be an implementation specific decision as to whether or not to support the functionality, and if so, how. Note: for unfamiliar abbreviations, see the glossary.

Figure 1. Technology equivalences

Technology

.NET

J2EE

Support technologies

 

 

Distribution protocol

DCOM, SOAP

RMI/IIOP

Firewall

ISA*

not specified

HTML page caching

ISA*, ASP.NET

not specified




Presentation tier technologies

 

 

Infrastructure

IIS

not specified

Programming model

ASP.NET

Servlets, JSP

High availability

NLBS*, ACS*, other

not specified

Load balancing

NLBS*, ACS*, other

not specified

Management

ACS*

not specified

 

 

 

Middle tier technologies

 

 

Infrastructure

COM+

EJB

Programming tool

Visual Studio.NET

not specified

High availability

ACS*

not specified

Load balancing

ACS*

not specified

Security API

COM+ Security Call Context

JAAS

Message Queue API

MSMQ

JMS 1.0

Asynchronous components

Queued (COM+)

Message driven beans (EJB 2.0)

Naming and Directory Service

ADSI

JNDI




Data tier technologies

 

 

Distributed transaction

MS-DTC

JTS

Relational DB API

ADO.NET

JDBC 2.0

Hierarchical DB API

ADO.NET

-

Database storage

SQLServer**

-

Mainframe DB connectivity

HIS*

Java Connectors

 

 

 

Framework technologies

 

 

eCommerce framework

Commerce Server*

-

Business to business orchestration

BizTalk Server*

-

 

some of Differences between J2EE and the .NET Platform
You can see that there is tremendous overlap between the J2EE and .NET platform technologies. How, then, does one choose between them? In this section I will discuss what I see as the main differences.

Vendor Neutrality
Many companies buy into J2EE believing that it will give them vendor neutrality. And, in fact, this is a stated goal of Sun's vision:
A wide variety of J2EE product configurations and implementations, all of which meet the requirements of this specification, are possible. A portable J2EE application will function correctly when successfully deployed in any of these products. 
In fact, few non-Sun J2EE proponents believe this is achievable. One of the most prominent independent J2EE spokespersons is Paul Harmon, a principal consultant for the Cutter Consortium and the writer of the widely read Architecture/e-Business E-Mail Advisory. While Harmon is usually very pro-J2EE, he recently wrote this unusually frank assessment of J2EE vendor portability
Has the EJB model reached the point where I can move EJB components from one EJB application server to another?  Not in most cases.  The EJB specification isn't comprehensive enough.  EJB application server vendors have "filled in" by providing proprietary solutions to complete the model and to guarantee that their clients can build production systems. 
Harmon summarizes the vendor neutrality situation today, as do many, with this assessment:
The reality, at the moment, is that if you want to develop an EJB application, you should stick with a single vendor.
The reality today is that there is no such thing as vendor neutrality. Of course, the .NET platform is not vendor neutral, it is tied to the Microsoft operating systems. But neither are any of the J2EE implementations. The best advice I can give is to choose some vendor, plan on staying with that vendor, and leverage the heck out of the platform that vendor provides.
 

Framework Support
When building a large, eCommerce solution, it goes without saying that one does not want to start from scratch. One wants to build on top of a well defined and tested eCommerce framework. The use of such a framework can dramatically reduce development costs, probably by a factor of at least 10.
The .NET platform includes such an eCommerce framework called Commerce Server. At this point, there is no equivalent vendor-neutral framework in the J2EE space. With J2EE, you should assume that you will be building your new eCommerce solution from scratch. Paul Harmon appears to agrees with this assessment, saying
Moreover, no matter what [J2EE] vendor you choose, if you expect a component framework that will allow you to quickly field complete e-business applications, you are in for a frustrating experience.
If MS Commerce Server can serve as your eCommerce foundation, then it will likely have a tremendous impact on the cost of developing your system. Commerce Server is particularly well suited for retail operations. Such eCommerce systems should look carefully at this technology.

Portability
Much of the appeal of J2EE lies in the promise of portability. There are two flavors of portability. The first is vendor portability. I refer to this as vendor neutrality, and have already discussed (and rejected) this idea earlier. The second flavor of portability is operating system portability. This refers to the ability to move a code base from one operating system to another without having to change the code itself. Operating system portability, unlike vendor portability, is a possibility with most implementations of J2EE.
The reason that operating system portability is a possibility with J2EE is not so much because of any inherent portability of J2EE, as it is that most of the J2EE vendors support multiple operating systems. Therefore as long as one sticks with a given J2EE vendor and a given database vendor, moving from one operating system to another should be possible. This is probably the single most important benefit in favor of J2EE over the .NET platform, which is limited to the Windows operating system. It is worth noting, however, that Microsoft has submitted the specifications for C# and a subset of the .NET Framework (called the common language infrastructure) to ECMA, the group that standardizes JavaScript.
It is obvious why vendor portability/neutrality would be desirable, but what is the benefit of operating system portability? There are typically two types of companies that think they need operating system portability: independent software vendors (ISVs) and corporations looking for scalability solutions.
ISVs need operating system portability when they have a significant customer base on non-Windows platforms. One can't sell a product to Unix customers that is tied to  the .NET platform. It doesn't matter if the .NET platform is better than J2EE or not. It doesn't run on Unix.
J2EE offers an acceptable solution to ISVs when the product must be marketed to non-Windows customers, particularly when the J2EE platform itself can be bundled with the ISV's product as an integrated offering.
If the primary customer base for the ISV is Windows customers, then  the .NET platform should be chosen.  It will provide much better performance at a much lower cost.
Many companies that want operating system portability are not ISVs. Most of these companies think portability is the path to scalability. These companies believe that they can achieve higher scalability by migrating applications to higher and higher end hardware platforms as throughput requirements expand.
If you believe operating system portability will in any way help you achieve scalability, you are making a serious mistake. Scalability is not a hardware problem; it is a software problem. The highest scalability is achieved by writing for a highly scalable platform and then leveraging that platform as much as possible. Writing for a J2EE implementation that just happens to run on multiple platforms will be a distant second in terms of achievable scalability. The platform that is by far the best documented in terms of its ability to achieve high scalability is the .NET platform.
Using the numbers given in my section on scalability, the .NET/Windows platform can scale from 16,000 transactions per minute to over 500,000 transactions per minute. The IBM WebSphere J2EE/Unix technology, one of the best representatives of the J2EE genre, will probably do no better than a 17,000 to 110,000 range of transactions per minute, at a much higher cost per transaction.
So portability is not as simple as it appears. If you really want scalability, the .NET platform is a clear winner over J2EE. If you must support non-Windows platforms, then J2EE is the clear winner over the .NET platform.
If you want portability so that you are independent of the whims or fortunes of a particular vendor, then forget it. That kind of portability doesn't exist. So choose your vendor carefully. Make sure that you understand and are comfortable with the technical direction of that vendor. Make sure that your vendor has a long-term commitment to that platform. And finally, make sure that your vendor has the financial resources to be a survivor in this highly competitive technical arena.

Client device independence
I discussed the difference between the Java and the .NET platform presentation tier programming models. The major difference being that with Java, it is the presentation tier programmer that determines the ultimate HTML that will be delivered to the client, and with .NET, it is a Visual Studio.NET control.
This Java approach has three problems. First, it requires a lot of code on the presentation tier, since every possible thin client system requires a different code path. Second, it is very difficult to test the code with every possible thin client system. Third, it is very difficult to add new thin clients to an existing application, since to do so involves searching through, and modifying a tremendous amount of presentation tier logic.
The .NET Framework approach is to write device independent code that interacts with visual controls. It is the control, not the programmer, that is responsible for determining what HTML to deliver, based on the capabilities of the client device.. In the .NET Framework model, one can forget that such a thing as HTML even exists!
This approach solves all three of the problems of the Java/old-ASP approach. One can write an effective presentation tier application with much less code, since a single code path works for all possible thin clients. It is much easier to test that code, since one is only testing one's interaction with the control, rather than the client devices themselves. And finally, one can add new client devices very easily, but simply downloading the latest version of the control that has hopefully been updated with the latest knowledge about thin client devices.
From a cost perspective, the .NET Framework approach is a clear winner. Development, debugging, and maintenance are all much easier (and much cheaper) when the presentation tier developer is not responsible for determining what will be displayed on the client device.

Last Updated ( Jun 16, 2007 at 06:25 PM )
<Previous