on August 26, 2003
This book is largely divided into two parts. First part of the book focuses on the process of requirements gathering, analysis, and design considerations:
[Chapter 1] The author begins by taking a high-level (business) perspective on the subject. This includes modeling the problem domain and system context by using UML use cases. The focus here is capturing a complete set of functional requirements, without digging too deeply into technical details. A sample large-scale software solution (GreaterCause application) is introduced, then defined and modeled by using static/dynamic use cases, activity diagrams, and sequence diagrams.
[Chapter 2] This chapter is an excellent overview of how information architecture for a project is derived by using industry standard practices. It explains how site content can be organized using site flow/storyboard diagrams and wire frames.
The author fully develops the GreaterCause architecture using detailed use cases - showing actors, pre/post conditions, user interface, flow of events, and activity diagrams for the main use cases.
[Chapter 3] Here the author has chosen to lightly cover all the important aspects of J2EE application architecture, based on prominent technologies and specifications. MVC paradigm is discussed since it lends well for a tiered approach taken by J2EE architecture. Struts framework is also introduced. There is an extensive section on planning application security including various digital signatures, single sign-on, JAAS, etc. Also, there is a section on caching - in order to provide a scalable and high performance solution.
The second part of the book deals with building enterprise-class business applications on J2EE platforms:
[Chapter 4 & 5] For web and front-end developers, these chapters kick off the nuts and bolts phase of the book by examining the Struts framework. The author chose this out-of-the-box solution for implementing the presentation tier, thus simplifying the application design. It provides a complete roadmap of application architecture from the presentation standpoint. A concrete design pattern is formulated where MVC architecture is fully utilized. Although a bit hard to understand for beginning J2EE developers, studying the recommended readings/tutorials and following the downloadable source code will get you up to speed quickly. Even as a seasoned developer, you will find the sections on internalization/localization and error & exception handling very useful. I especially enjoyed the section on realization of use cases. The key use cases for the sample application were elaborated by describing the design pattern(s) used for that particular use case.
[Chapters 6 & 7] For the backend server/database developers out there, these chapters are your cup of tea. The author deals with creating the data model using ER diagrams and implementing domain model using EJB2.0 specifications (container managed persistence only). However, I think it's important for the readers to keep a high-level perspective while studying these chapters and the sample application. This book is by no means an exhaustive reference manual of specifications, but rather a real-world solutions book, where industry proven processes are explained. It gives you valuable and specific tips on avoiding pitfalls while architecting and implementing an enterprise solution, where other specification/reference manuals fail to emphasize or even explain. EJB transaction & configuration semantics are mentioned for the sake of completeness, but I found sections on business tier design patterns using session façade and data transfer objects invaluable.
[Chapters 8] This chapter explains how one can use web services to simplify the task of business systems integration. By using WSDL, SOAP, and UDDI, the author shows how one can expose some of the key business services provided by GreaterCause application.
[Chapter 9] This chapter describes how you can get the GreaterCause application up and running by showing how to install/configure BEA WebLogic application server and Oracle database. I found the information provided to be minimal, but I think it does a good job of providing an overall reference map to deployment.
In summary, I highly recommend this book to any J2EE developer, architect, or web designer who needs a comprehensive understanding of the J2EE solutions architecture. Although the reader needs to have certain background knowledge (i.e. UML and XML), and has to reference few other specifications to have complete understanding, this book does an excellent job of presenting a complete architectural solution that you can build on.