Guideline: Architectural Analysis for J2EE Applications
This guideline discusses some of the technologies provided by J2EE that the Software Architect needs to consider.
Relationships
Related Elements
Main Description

Introduction

Architectural Analysis is where the Software Architect determines how to best leverage the technologies provided by the Java 2 Platform Enterprise Edition (J2EE) Overview to meet both the functional and nonfunctional requirements of the system. This guideline discusses some of those technologies.

J2EE Deployment Configurations

J2EE supports a number of J2EE Deployment Configurations. Selecting a particular deployment configuration is an important step in Architectural Analysis as it becomes the foundation on which the initial architecture is based.

Selecting a J2EE deployment configuration drives the definition of the initial Deployment Model. The selected J2EE deployment configuration defines the configuration of physical nodes (that is, machines) and logical nodes (J2EE containers). This is where you decide whether or not you have a separate Web server and an EJB server, and whether your clients are browsers using HTTP or are fat application clients.

Each of these deployment configurations exhibits different characteristics, so one should be selected based upon a number of factors. Some factors that should be considered when selecting a deployment configuration include: maintainability (how do you isolate changes in one tier so they don't affect other tiers, how easy is it to deploy upgrades?), performance and scalability (how easy is it to add additional computing resources?), and reliability (what happens if one of the resources goes down?).

The selection of a deployment configuration constrains a number of other architectural decisions regarding the architectural mechanisms that must be defined, the application's concurrency (see Task: Describe the Run-time Architecture), and the application's distribution (see Task: Describe Distribution). 

J2EE Mechanisms

The Java 2 Platform Enterprise Edition (J2EE) Overview provides a number of mechanisms that support the development of multi-tier enterprise systems (persistency, inter-process communication, transaction management, security, etc.). During Architectural Analysis, the Software Architect defines what needs to be built, as opposed to what will be provided by the J2EE platform.

Effective management of application state is an important aspect of designing distributed applications. For an overview of some of the common design considerations and mechanisms for state management in a J2EE application, see Guideline: Designing State for J2EE Applications.