J2EE provides many architectural choices. J2EE also offers many component types (such as servlets,
EJBs, JSP pages, and servlet filters), and J2EE application servers provide many additional services.
While this array of options enables us to design the best solution for each problem, it also poses
dangers. J2EE developers can be overwhelmed by the choices on offer, or can be tempted to use
infrastructure inappropriate to the problem in hand, simply because it's available.
In this book I aim to help professional J2EE developers and architects make the appropriate choices to
deliver high-quality solutions on time and within budget. I'll focus on those features of J2EE that have
proven most useful for solving the commonest problems in enterprise software development.
In this chapter, we discuss the high-level choices in developing a J2EE architecture, and how to decide
which parts of J2EE to use to solve real problems. We'll look at:
❑ Distributed and non-distributed applications, and how to choose which model is appropriate
❑ The implications for J2EE design of changes in the EJB 2.0 specification and the emergence of
web services
❑ When to use EJB
❑ Data access strategies for J2EE applications
❑ Four J2EE architectures, and how to choose between them
❑ Web tier design
❑ Portability issues