How Does J2EE Meet the Challenge?
Now, let us see how J2EE addresses the core issues and problems faced by enterprisesand how it provides scope for future developmental needs.
Hardware- and OS-Independent
The J2EE runtime resides over the Java virtual machine (JVM)as shown in Figure 2. JVM is essentially hardware- and OS-independent. The Java runtime environment (JRE), which is the installable version of JVM and other essential components, is available for almost all popular hardware/OS compositions. Thus, by adopting Java, J2EE relieves enterprises from reinvesting in expensive hardware and operating systems.
Figure 2 J2EE middleware implementation.
Another significant advantage is that it is possible to accommodate the J2EE enterprise integration tier much closer to the actual back-end systems. In some cases, it can be hosted well within the EIS server environment itself, saving network traffic and increasing performance.
Adherence to Object-Oriented Design and Component Methodology
Being strictly an object-oriented language, Java lends itself to well-disciplined and structured coding. Almost all features of object-oriented programming are fully supported in Java. The J2EE application-programming model is built on top of the object-oriented methodologies and components-based design.
J2EE has a variety of component models for different tiers. Thus, by adopting suitable combinations for a given project at hand, developers achieve a high degree of extendibility and agility in developing and assembling componentsoften resulting in rapid application development. The implication of all this for enterprises is that the resulting applications are well-structured, modular, flexible, and reusable.
Flexibility, Portability, and Interoperability
Java codes are portable across different operating systems, and J2EE components are portable across different application-server environments. This implies that enterprises can instantaneously embark on a unified development platform whose codes are transferable across all machines.
Applications can be hosted in more than one J2EE application server. J2EE components that sit across several servers in different environments can still work in orchestration with each other. This feature gives unprecedented interoperability in assembling application components.
For example, it is possible to host EJBs that interact directly with mainframe/CICS environments in IBM Websphere environments, and access them from EJBs in BEA Weblogic servers that are hosted elsewhere.
Effortless Enterprise Information Systems Integration
J2EE has rapidly brought in watertight industry standardssuch as JDBC, JMS, and JCAthat simplify the seamless integration of enterprise information systems such as legacy systems, ERP implementations, and relational databases.
Almost all major relational database vendors support JDBC. Thus, J2EE applications enjoy the capability to communicate with all popular databases, with the help of necessary JDBC drivers. Similarly, a number of EI adapters are appearing in the industrybased on Java connector architecture standardsthat provide seamless integration with various legacy systems and ERP/CRM implementations.
Adopting Services-Oriented Architectures in J2EE
With the advent of Web services and open standards such as SOAP, interoperability across several disparate systems in an enterprise becomes a possibility. J2EE, being an extensible platform, naturally lends itself to exposing its core components and resources to Web services. Sun has released a comprehensive set of APIs, called the JAX package, which support all kinds of Web service requirements such as XML parsing, XML binding, SOAP message consumption and delivery, Registry lookup, XML RPCs, and XML messaging.
Although the J2EE platform was advocated long before the advent of Web services technologies, it provides room for fitting in the latest developments. It can be assumed with reasonable confidence that J2EE will be capable of accommodating more technological advancements in the future without disturbing its core framework and application-programming model.