Introducing Enterprise Java
F or a long time, Java Enterprise Edition ( Java EE) has been the platform of choice across
industries (banking, insurance, retail, hospitality, travel, and telecom, to name a few)
for developing and deploying enterprise business applications. This is because Java EE
provides a standard-based platform to build robust and highly scalable distributed appli-
cations that support everything from core banking operations to airline booking engines.
However, developing successful Java EE applications can be a difficult task. The rich set
of choices provided by the Java EE platform is daunting at first. The plethora of frame-
works, utility libraries, integrated development environments (IDEs), and tool options
make it all the more challenging. Hence, selecting appropriate technology is critical when
developing Java EE-based software. These choices, backed by sound architectural and
design principles, go a long way in building applications that are easy to maintain, reuse,
This chapter takes a tour of the fundamental aspects of Java EE application architec-
ture and design. They form the foundation on which the entire application is developed.
The journey starts with a review of the evolution of distributed computing and
n-tier application architecture. I will then show how the Java EE platform architecture
addresses the difficulties in developing distributed applications. You will also learn about
the Model-View-Controller (MVC) architectural principle. I'll then combine MVC princi-
ples with the Java EE platform to derive multitier Java EE application architecture.
With application architecture in place, I will focus on Java EE application design
based on object-oriented principles. I will also explain the use of design patterns to sim-
plify application design and the adoption of best practices. I'll also touch on the Java EE
design pattern catalog as documented by Sun's Java BluePrints and subsequently elabo-
rated on in the topic Core J2EE Design Pattern by Deepak Alur et al (Prentice Hall, 2003).
I'll end the chapter with an introduction to Unified Modeling Language (UML) and its
role in visually documenting Java EE design and architecture.