Architects of buildings and architects of software have more in common than most people think. Both professions require attention to detail, and both practitioners will see their work collapse around them if they make too many mistakes. It's impossible to imagine a world in which buildings get built without blueprints, but it's still common for software applications to be designed and built without blueprints, or in this case, design patterns. A software design pattern can be identified as "a recurring solution to a recurring problem." Using design patterns for software development makes sense in the same way that architectural design patterns make sense--if it works well in one place, why not use it in another? But developers have had enough of books that simply catalog design patterns without extending into new areas, and books that are so theoretical that you can't actually do anything better after reading them than you could before you started. Crawford and Kaplan's J2EE Design Patterns approaches the subject in a unique, highly practical and pragmatic way.
Rather than simply present another catalog of design patterns, the authors broaden the scope by discussing ways to choose design patterns when building an enterprise application from scratch, looking closely at the real world tradeoffs that Java developers must weigh when architecting their applications. Then they go on to show how to apply the patterns when writing realworld software. They also extend design patterns into areas not covered in other books, presenting original patterns for data modeling, transaction / process modeling, and interoperability. J2EE Design Patterns offers extensive coverage of the five problem areas enterprise developers face: * Maintenance (Extensibility) * Performance (System Scalability) * Data Modeling (Business Object Modeling) * Transactions (process Modeling) * Messaging (Interoperability) And with its careful balance between theory and practice, J2EE Design Patterns will give developers new to the Java enterprise development arena a solid understanding of how to approach a wide variety of architectural and procedural problems, and will give experienced J2EE pros an opportunity to extend and improve on their existing experience.
William Crawford has been developing web-based enterprise applications since 1995, including one of the first web-based electronic medical record systems (at Children's Hospital in Boston) and some of the first enterprise-level uses of Java. He has consulted for a variety of institutional clients, including Boston Children's Hospital, Harvard Medical Center, numerous startups and several Fortune 500 companies. Prior to an acquisition he was CTO of Invantage, Incorporated in Cambridge, MA. He received a degree in history and economics from Yale University. He is the co-author of Java Servlet Programming, 2nd Edition, Java Enterprise in a Nutshell, 2nd Edition, and two forthcoming O'Reilly titles. Will is currently Principal Software Architect at Perceptive Informatics, Inc.Massachusetts, provider of software and services to the pharmaceutical industry. He can be reached at http: //www.williamcrawford.info Jonathan Kaplan has been a software developer at Sun Microsystems since 1997. Before joining Sun, he worked on a web-based electronic records system at the Children's Hospital in Boston. At Sun, he has focused on system management, including early Java and browser based applications. Jonathan received his Bachelor's and Master's degrees in Computer and Information Science from the University of Pennsylvania. He currently lives with his wife Tracy in Cambridge, Massachusetts.
1. Java Enterprise Design Design Patterns J2EE Application Tiers Core Development Concepts Looking Ahead 2. The Unified Modeling Language Origins of UML The Magnificent Seven UML and Software Development Lifecycles Use Case Diagrams Class Diagrams Interaction Diagrams Activity Diagrams Deployment Diagrams 3. Presentation Tier Architecture Server-Side Presentation Tier Application Structure Building a Central Controller 4. Advanced Presentation Tier Design Reuse in Web Applications Extending the Controller Advanced Views 5. Presentation Tier Scalability Scalability and Bottlenecks Content Caching Resource Pool 6. The Business Tier The Business Tier Domain Objects 7. Tier Communications Data Transfer Patterns 8. Database and Data Patterns Data Access Patterns Primary Key Patterns Object-Relational Map pings 9. Business Tier Interfaces Abstracting Business Logic Accessing Remote Services Finding Resources 10. Enterprise Concurrency Transaction Management General Concurrency Patterns Implementing C oncurrency 11. Messaging Messaging and Integration Message Distribution Patterns Message Types Correlating Messages Message Client Patterns Messaging and Integration For Further Reading 12. J2EE Antipatterns Causes of Antipatterns Architectural Antipatterns Presentation Tier Ant ipatterns EJB Antipatterns A. Presentation Tier Patterns B. Business Tier Patterns C. Messaging Patterns D. J2EE Antipatterns.