J2EE: What It Is and What It's Not
In the previous article, "The Wired World of Enterprise Computing," you saw various challenges encountered by enterprises in coping up with their day-to-day operations and in meeting technological and infrastructure demands of the future.
Java 2 PlatformEnterprise Edition (or simply J2EE) is a middleware technology pioneered by Sun Microsystems, and is seen as a viable solution to meet all these demands and challenges efficiently. From CORBA and IDLs to messaging-oriented systems, middleware technologies have traversed a long way; and their evolution, from stage to stage, is beyond the scope of this article. Sun's J2EE is perceived as a decisive landmark in the history of middleware technologies, and enjoys widespread industry recognition and adoption
Now, we will take a clear look at what J2EE isand more importantly, what it is not. With a perplexing set of standards and editions on one end, and various application servers, vendors, and their own proprietary jargons on the other end, J2EE is usually misunderstood.
What Is J2EE?
Before defining what J2EE is, let us understand that J2EE is not simply a language, package, utility, or service.
Java 2 Platform, Enterprise Edition (J2EE)
In simpler terms, J2EE is essentially a standard middleware architecture, proposed by Sun Microsystems for developing and deploying multitier, distributed, e-enabled, enterprise scale business applications. Applications written for J2EE standards enjoy certain inherent benefits such as portability, security, scalability, load-balancing, and reusability.
Middleware are essentially server-side software solutions that provide the much-required foundation for linking several disparate systems and resources that are scattered across the network. Prior to the introduction of J2EE, middleware solutions were highly proprietary and restrictive to specific vendors and productswith limited features and compatibility, and no interoperability or portability across different solutions. There was no common/acceptable industry standard in place to adhere to, and many of the features were left to the choice of vendors.
J2EE represents the maturity and seasoning that middleware technology has undergone over the years by learning from the mistakes of the past and addressing all the essential requirements of the industry. It also provides enough room for future developments. While developing this standard, Sun collaborated with other major vendors of middleware, operating systems, and database management systemsincluding IBM and Oracle.
At its core, J2EE is a set of standards and guidelines that defines how distributed n-tier applications can be built using the Java language. Developers build their applications on the top of these standards while middleware infrastructure vendors ensure compatibility to these guidelines set forth by J2EE . Thus, J2EE applications can be ported and deployed across several application servers, with minimal or no code-level changes. This concept is represented in Figure 1.
Figure 1 J2EE compatibility between application servers and developer codes.
Perspectives on J2EE
J2EE offers several perspectives, as discussed in the following sections.
J2EE: A Syntax for Multitier, Distributed Middleware
J2EE clearly demarcates various tiers that are involved in application development, and defines components that can be hosted in those tiers. These tiers include the clients tier, presentation logic tier, business logic tier, and enterprise information systems tier. All J2EE applications are built on the top of this basic framework, and they naturally evolve as multitier systems, even without conscious effort. Each tier may be physically distributed across several servers.
With J2EE, distributed application development is no longer a complex task. J2EE components make no assumptions about the server environment in which they existand all resources are accessed through distributed directories. This means that there is no deliberate effort required on the part of application developers to distribute their components and resources.
J2EE: A Platform for Enterprise Scale Applications
J2EE, implemented as specific Web application servers such as BEA Web logic or IBM Web sphere, is a platform for building enterprise scale distributed applications. Applications can be built on top of the J2EE application-programming model, and can be deployed in one or more J2EE-compatible Web application servers.
A specific application server platform that is best suited for a given enterprise IT infrastructure can be chosen from a wide variety of J2EE compatible productseach enjoying its own distinctive advantage over the others. Irrespective of their unique features, all J2EE application servers provide a common groundwork for developing and deploying enterprise scale applications.
J2EE: A Model for e-Enabled Application Development
J2EE applications can be very easily exposed to Web, Palm, and handheld devices; mobile phones; and a variety of other devices. In other words, application components can be "e-enabled" without much effort. The J2EE application-programming model ensures that the business logic and back-end systems remain untouched as their facilities are exposed to different types of client access.
Yet another great feature of J2EE platform is automatic load-balancing, scaling, fault-tolerance, and fail-over. Components deployed in J2EE environment automatically inherit these facilities, and there is no deliberate coding effort required.
These features are significantly important for constructing Web portals that are available to clients 24/7/365.
J2EE: The Widely Adapted Standard in Web Application Servers
J2EE is perhaps the first industry standard to relish widespread industry recognition and adoption in the middleware world. Almost all top-notch Web application servers (BEA's Weblogic, IBM's Web sphere, HP's Application servers, Sun-Netscape's iPlanet, and Macromedia's Jrun, to name a few) are all J2EE-certified application servers. No other standard advocated before has been supported by such a long list of middleware infrastructure providers.
Moreover, with J2EE, companies are no longer nailed down to a specific vendor or application server provider. As long as the application components stick to J2EE specifications, they can be deployed across different application servers along the enterprise network. To ensure compatibility and coherence across different J2EE application servers, Sun has released a compatibility test suite.
Vision of J2EE
The primary vision that propels J2EE can be summarized as follows: "Developers should be writing codes to express their business and presentation logic, whereas the underlying middleware infrastructure takes care of system-level issues such as memory management, multithreading, resource allocation, availability, and garbage collectionautomatically."