Preface 1 The Inevitable Bloat Bloat Drivers Options Five Principles for Fighting Bloat Summary 2 Keep It Simple The Value of Simplicity Process and Simplicity Your Safety Net Summary 3 Do One Thing, and Do It Well Understanding the Problem Distilling the Problem Layering Your Architecture Refactoring to Reduce Coupling Summary 4 Strive for Transparency Benefits of Transparency Who's in Control? Alternatives to Transparency Reflection Injecting Code Generating Code Adanced Topics Summary 5 Your Are What You Eat Golden Hammers Understanding the Big Picture Considering Technical Requirements Summary 6 Allow for Extension The Basics of Extension Tools for Extension Plug-In Models Who Is the Customers? Summary 7 Hibernate The Lie What Is Hibernate? Using Your Persistent Model Elaluating Hibernate Summary 8 Spring Whaat Is Spring? Pet Store:A Counter-Example The Domain Model Adding Persisternce Presentation Summary 9 Simple Spider What Is the Spider? Examining the Requirements Planning for Development The Design The Configuration Service The Crawler/Indexer Service The Search Service …… 10 Extending JPetStore 11 Where Do We Go from Here? Bibliography Index