Sun JavaTM Enterprise System (Java ES) is a set of software components that provides services needed to support enterprise-strength applications distributed across a network or Internet environment. These applications are referred to as distributed enterprise applications. This book focuses on the software components of Java ES and the services they provide.
This chapter introduces Java ES and the tasks involved in using the system. The chapter contains the following sections:
Today’s business requirements demand software solutions that are distributed across a network or Internet environment and have high levels of performance, availability, security, scalability, and serviceability.
Java ES provides infrastructure services needed to support such distributed enterprise applications, which generally have the following characteristics:
Distributed. The application consists of interacting software components deployed across a networked environment that might include geographically remote sites. These distributed components, running on the various computers in the environment, work together to deliver specific business functions to end users and to other business applications.
Enterprise-strength. The application’s scope and scale meet the needs of a production environment or Internet service provider. The application typically spans an entire enterprise, integrating many departments, operations, and processes into a single software system. The application must meet high quality of service requirements regarding performance, availability, security, scalability, and serviceability.
Distributed enterprise applications require underlying infrastructure services that allow their distributed components to communicate with each other, coordinate their work, implement secure access, and so forth. These infrastructure services are supported by a hardware environment of computers and network links. This hardware environment includes SPARC® and x86 (Intel and AMD) hardware architectures.
The overall layering scheme is shown in the following figure. For the most part, Java ES provides the distributed infrastructure services layer shown in the figure.
Among the featured services provided by Java ES are the following:
Portal services. These services enable employees, telecommuters, knowledge workers, business partners, suppliers, and customers to access corporate resources from inside or outside the corporate network. These services provide access capabilities to user communities anytime and anywhere, delivering personalized integration, aggregation, security, mobile access, and search.
Communication and collaboration services. These services enable the secure interchange of information among diverse user communities. Specific capabilities include messaging, real-time collaboration such as instant messaging and conferencing, and calendar scheduling in the context of the user's business environment.
This book refers to components from the Sun Java Communications Suite, which depend upon Java ES components and are used within Java ES deployment architectures. Communication and collaboration components are not included in Java ES.
Network identity and security services. These services improve security and protection of key corporate information assets by ensuring that appropriate access control policies are enforced across all communities, applications, and services on a global basis. These services work with a repository for storing and managing identity profiles, access privileges, and application and network resource information.
Web container and application services. These services enable distributed components to communicate with one another at runtime and support the development, deployment, and management of applications for a broad range of servers, clients, and devices. These services are based on J2EE technology.
Java ES also provides services that enhance availability, scalability, serviceability, and other application or system qualities. Among the quality of service features provided by Java ES are the following:
Availability services. These services provide near-continuous availability for application components and for the infrastructure components that support them.
Access services. These services provide Internet or browser-based access to Java ES services.
Monitoring services. These services provide real-time information about Java ES components.
You can deploy one or more Java ES services, each of which might include a number of Java ES components.
Java ES is an integration of discrete software products and components into a single software system. This integration is facilitated by a number of system-level features, as listed below:
All components are synchronized on a common set of shared libraries.
All Java ES components are installed using a single installer.
All Java ES components can share an integrated user identity and security management system.
All Java ES components have a common monitoring framework.
These features are described in subsequent chapters of this book. The focus of this section is to introduce the components that are integrated into Java ES. These system components can be grouped into three main categories, as shown in the following figure.
The components provide services as follows:
System service components. These components provide the main Java ES infrastructure services that support distributed enterprise applications.
Service quality components. These components enhance the availability, security, scalability, serviceability and other components of system service components and distributed application components.
Shared components. These components provide the environment in which many system service components and service quality components run.
For a list of Java ES components, see Appendix A, Java ES Components.
A number of Java ES components provide the main services that support distributed software solutions. These system services include portal services, identity and security services, web container services, J2EE application services, and persistence services.
The system service components that provide these distributed services and the services they provide are listed alphabetically and briefly described in the following table. Each system service component is a multithreaded server process capable of supporting a large number of clients. For more details on each component, see System Service Components.
Table 1–1 Java ES System Service Components
In addition to the system service components shown in Table 1–1, Java ES includes a number of components used to enhance the quality of services provided by system service components. Service quality components can also enhance custom-developed application services. The service quality components fall into the following categories:
Availability components
Access components
Monitoring components
Availability components provide near-continuous uptime for system service components and custom application services. The availability components included in Java ES and the services they provide are shown in the following table. For more details on each component, see Availability Components.
Table 1–2 Java ES Availability Components
Access components provide front-end access to system services, often secure access from Internet locations outside an enterprise firewall. In addition to providing such access, many provide a routing and caching function as well. The access components included in Java ES and the services they provide are shown in the following table. For more details on each component, see Access Components.
Table 1–3 Java ES Access Components
Java ES includes a new monitoring feature that provides real-time system status and customizable monitoring jobs. Monitoring is implemented by the Sun Java System Monitoring Console product component, which is supported by the Sun Java System Monitoring Framework shared component. For more information, see Monitoring Components.
Java ES includes a number of locally installed shared libraries upon which many system service components and service quality components depend. Java ES shared components provide local services to Java ES product components running on the same host computer.
Shared components are often used to provide portability across different operating systems. Examples of Java ES shared components include: Java 2 Platform, Standard Edition (J2SE), Netscape Portable Runtime (NSPR), Network Security Services (NSS), Java Security Services for Java (JSS), and so forth. For a complete list, see Shared Components.
Shared components are installed automatically by the Java ES installer depending on the system service and service quality components that are being installed.
Java ES is available both as a single, end-to-end infrastructure software distribution and as individual suite distributions that target critical business needs. Java ES includes all Java ES components, while Sun Java System Suites include subsets of those components selected to meet particular business needs. The Java ES installer and uninstaller are included in all suite distributions, but are pared down to handle just the components in the suite. All shared components are also included in all suite distributions.
The contents of the individual suites and the business requirements each suite is intended to meet are listed in the following table.
Table 1–4 Components in Sun Java Suites
Creating business solutions based on Java ES software involves a number of standard tasks. These tasks vary in scope and difficulty depending on your starting point for the adoption of Java ES and on the nature of the solution that you are trying to create and deploy.
This section discusses two aspects of working with Java ES: the Java ES solution life cycle and the adoption scenarios that are typically involved.
The tasks involved in creating business solutions based on Java ES software can be divided into several phases, as shown in the following figure. The illustration also shows the category of Java ES user that generally performs the tasks.
The life cycle phases shown in the preceding figure can be divided into the following general groupings:
Predeployment. In these phases, a business need is translated into a deployment scenario, which is a logical architecture and a set of quality of service requirements. The deployment scenario serves as a specification for designing a deployment architecture.
Deployment. In these phases, a deployment scenario is translated into a deployment architecture. This architecture can be used as a basis for project approval and budgeting. The deployment architecture is also the basis for an implementation specification that provides the details needed to deploy (build, test, and roll out) a software solution in a production environment.
Postdeployment. In the operations phase, a deployed solution is run under production conditions and monitored and optimized for performance. The deployed solution is also upgraded to include new functionality as necessary.
The tasks in each life cycle phase shown in Figure 1–3 are discussed more fully in Chapter 4, Java ES Solution Life Cycle.
Figure 1–3 shows the Java ES users who typically perform the tasks shown for the life cycle phases. The following table describes the skills and background for each category of user.
Table 1–5 Java ES User Categories for Life Cycle Tasks
The business needs that lead to the adoption of Java ES vary widely. However, the high-level goal for nearly every Java ES deployment fits into one of the following adoption scenarios:
New system. Starting with no existing software system, you deploy Java ES software to support a new business solution.
Enhancement. Starting with an existing information technology (IT) infrastructure, you replace one, many, or all parts of that system with Java ES software. You typically replace systems or subsystems because they are too complicated, too limited, or too expensive to maintain. For example, you might require better security, higher availability, increased scalability, more flexibility, less complexity, additional capabilities (such as single sign-on), or better use of IT resources.
Extension. Starting with an existing IT infrastructure, you deploy Java ES software that is not currently part of your system. You typically extend your software system because you need to meet new business needs. You might need new functional capabilities such as personalized aggregation of existing services through a Java ES portal or Java authentication and authorization for existing services.
Upgrade. Starting with an IT infrastructure consisting of an earlier version of Java ES or of Sun products that predate Java ES, you upgrade to the most current version of Java ES components.
Each adoption scenario has its own considerations and challenges. Depending on your adoption scenario, the issues you need to address and the resources you need to invest in the life cycle phases shown in Figure 1–3 might vary.
The following considerations apply in varying degrees to the adoption scenarios:
Migration. Enhancing or upgrading the existing infrastructure with new software often requires the migration of data from the existing system to the new system. The data could be configuration information, user information, or application information. You might also need to migrate business or presentation logic due to new programming interfaces.
Integration. Adding new software to an existing system or replacing software subsystems often requires that you integrate new software components with the remaining subsystems. Integration might involve developing new interface layers, using J2EE connectors or resource adaptors, reconfiguring existing components, and implementing data transformation schemes.
Training. Almost any change in infrastructure implies changes in IT procedures and skill sets. Your IT department must have adequate time to acquire new skills or transfer old skills to support Java ES technologies.
Hardware. When you replace or enhance an existing system or subsystem, business constraints might require you to reuse existing hardware. Depending on your adoption scenario, hardware resources can become an important factor.
The following table summarizes the nature of the concerns that apply to each of the Java ES adoption scenarios.
Table 1–6 Java ES Adoption Scenario Concerns
This section explains key technical terms used in this chapter, with an emphasis on clarifying how these terms are used in the Java ES context.
An overall reason for deploying Java ES software that describes the software system you start with and the goal you are trying to achieve. Four basic Java ES adoption scenarios exist: new system, replacement, extension, and upgrade.
A unit of software logic from which distributed applications are built. A component can be one of the system components included in Java ES or an application component that is custom developed. An application component usually conforms to a distributed component model (such as CORBA or the J2EETM platform) and performs a specific computing function. These components, singly or combined, provide business services and can be encapsulated as web services.
An application with logic that spans a network or Internet environment (the distributed aspect) and with a scope and scale that meet the needs of a production environment or service provider (the enterprise aspect).
A person who uses a distributed application often through a graphical user interface such as an Internet browser or mobile device GUI. The number of concurrent end users supported by an application is an important determinant of the deployment architecture of the application.
A software function performed for one or more clients. This function might be at a very low level such as a memory management service or at a high level such as a credit check business service. A high-level service can consist of a family of individual services. Services can be local (available to local clients) or distributed (available to remote clients).
Java ES system service components, which provide the main Java ES infrastructure services, and Java ES service quality components, which enhance those system services. Product components are selectable within the Java ES installer.
A type of system component included in Java ES. These components enhance the availability, security, scalability, serviceability, and other qualities of system service components and distributed application components.
A type of system component included in Java ES. Shared components, usually libraries, provide local services to other system components.
Any software package or set of packages included in Java ES and installed by the Java ES installer. Several kinds of system components exist: product components that provide Java ES infrastructure services, and shared components that provide local services to other system components.
One or more distributed services that define the unique functionality provided by Java ES. System services normally require the support of a number of service quality components, a number of shared components, or some of both.
A type of system component included in Java ES. System services components provide the main Java ES infrastructure services: portal services, identity and security services, web and application services, and availability services.