An Overview of J2EE with IBM WebSphere
Over the years, the Java technology platform has grown out of its original applet client/server origins into a robust server-side development platform. Initial platform packages introduced built-in threading support and provided abstractions to I/O and networking protocols; newer versions of the Java Software Development Kit (SDK) continued to enhance these abstractions and introduce newer framework offerings.
The momentum of producing technology frameworks supporting enterprise server-based development has continued, and has been formalized into the J2EE platform offering. The motivation of this offering is to provide developers with a set of technologies that support the delivery of robust enterprise-scale software systems. IT professionals are presented with an ever- changing business and technology landscape. Technology professionals must balance the demands for new automation requirements against the existence of existing line of business applications; simply using the technology du jour perpetuates the problem of integrating existing legacy systems. The goal of the J2EE platform is to offer a consistent and reliable way in which these demands can be met with applications that possess the following characteristics:
-
High Availability Support and exist in a 24/7 global business environment.
-
Secure Ensure user privacy and confidence in business function and transactions.
-
Reliable and Scalable Support high volumes of business transactions accurately and in a timely manner.
This chapter offers an overview of the J2EE architecture, a brief discussion of the specification's component design and the solutions they provide, and describes which J2EE technologies this book will focus on.
First, some background.
All J2EE technologies are built upon the Java 2 Standard Edition (J2SE). It includes basic platform classes, such as the Collections framework, along with more specific packages such as JDBC and other technologies that support client/server-oriented applications that users interact with through a GUI interface (e.g., drag-and-drop and assistive technologies). Note that platform technologies are not limited to framework implementations. They also include development and runtime support tools such as the Java Platform Debugger Architecture (JPDA).
Technologies specific to developing robust, scalable, multitiered server-based enterprise applications are provided within the J2EE platform offering. While still supporting client/server- based architectures, J2EE platform technologies provide support for distributed computing, message-oriented middleware, and dynamic Web page development. This chapter and most of this book will deal specifically with some of these technologies. In particular, WebSphere 5.0 (the focus of this book) implements the J2EE 1.3 platform specification. A list of the technologies from J2EE 1.3 (along with the supported levels) is shown in Table 3.1.
Table 3.1. J2EE technologies.
Supported Technology |
Level required by J2EE 1.3 |
---|---|
Java IDL (Interface Definition Language) API |
(Provided by J2SE 1.3) |
JDBC Core API |
2.0 (Provided by J2SE 1.3) |
RMI-IIOP API |
(Provided by J2SE 1.3) |
JNDI API |
(Provided by J2SE 1.3) |
JDBC Extensions |
2.0 |
EJB (Enterprise Java Beans) |
2.0 |
Servlet API |
2.3 |
JSP (JavaServer Pages) |
1.3 |
JMS (Java Message Service) |
1.0 |
JTA (Java Transaction API) |
1.0 |
JavaMail |
1.3 |
Java Activation Framework (JAF) |
1.0 |
JAXP (Java API for XML Parsing) |
1.1 |
Java 2 Connector Architecture (J2C) |
1.0 |
JAAS (Java Authentication and Authorization Service) |
1.0 |
Table 3.2. J2EE 1.4 technologies implemented by WebSphere 5.0.
J2EE 1.4 Technology |
---|
JAX-RPC (Java API for XML-based RPC) |
SAAJ (SOAP with Attachments API for Java) |
JMX (Java Management Extensions) |
In addition to the required technologies for J2EE 1.3, WebSphere Application Server 5.0 implements a number of J2EE-compatible technologies in advance of support of J2EE 1.4. In particular, WebSphere also supports technologies which will be required in J2EE 1.4 (Table 3.2).
3.0.1 J2EE Component Design
One of the most appealing features of object technology is its ability to combine function and data into a single element, also referred to as an object. Arguably, a single object implementation could be classified as a component, but components offer more functionality than providing access to data and performing functions against this data. Flexibility is achieved with designs that can consist of multiple classes related through composition and inheritance. The word component implies that they are a part of something whole, indicating that components require some kind of reference problem space where they can be applied. The J2EE specification provides this frame of reference for components that can be used, extended and combined by developers to deliver robust enterprise applications.
J2EE components defined for the platforms exploit the OO nature of Java by applying design patterns that provide both white and black box extensibility and configuration options. The platform components use inheritance and composition throughout their design, providing a way for custom configuration by developers. Also, defining components in an abstract way can allow systems built using those components to work regardless of how each vendor implements each concrete component implementation.
Studying these design techniques employed in the platform implementations can help make your own designs more elegant. These object design techniques are nothing new and have been applied throughout the years in other OO languages. Two design themes that take different approaches in supporting component configuration are discussed in the following sections.