xiv Introduction taught)was written.The end result is that we hope to help you learn the top design strategies used in the industry today so that you will be able to quickly design efficient,scalable,and maintainable systems. The mechanism by which we hope to impart design knowledge to you is the pattern What Is a Pattern? I like to think of a pattern as a best practice solution to a common recurring prob- lem. That is,a pattern documents and explains an important or challenging problem that can occur when designing or implementing an application,and then discusses a best practice solution to that problem.Over time,patterns begin to embody the collective knowledge and experiences of the industry that spawned it.For example,the patterns in this book represent the collective knowledge of thousands of EJB developers from TheServerSide and in and around the industry,all of whom contributed via ideas or reviews the material in this book. Benefits of Patterns Of course there are ma uses of patterns,but the following are some of the most important benefits that can help drive the maturity of a new software platform such as J2EE: Helps provide a high-level language for discussing design issues.EJB developers can use the pattem names in this book to discuss implemen- tation details together efficiently.Imagine how much quicker it is to say that an application was built using the stateless Session Facade pattern than trying to explain all the semantics of how the session beans wrapped entity beans. Provides much of the design work upfront.A well-written pattern dis- cusses in detail the problem and issues that need to be solved and shows how the problem solves it,with a good discussion of the pros,cons,and other issues to be aware of.By reading a pattern,many challenging and potentially hidden issues can be discussed and considered upfront Combinations of patterns lend themselves to reusable architectures. Patterns tend to reference and built upon each other.This connection between pattems serves to create what is called le:a series of interconnected patterns that,as a whole,often suggest an over all architecture for an application.Thus,when reading this book,certain sets of patterns in combination will form a reusable architecture that can be applied across projects again and again.taught) was written. The end result is that we hope to help you learn the top design strategies used in the industry today so that you will be able to quickly design efficient, scalable, and maintainable systems. The mechanism by which we hope to impart design knowledge to you is the pattern. What Is a Pattern? I like to think of a pattern as a best practice solution to a common recurring problem. That is, a pattern documents and explains an important or challenging problem that can occur when designing or implementing an application, and then discusses a best practice solution to that problem. Over time, patterns begin to embody the collective knowledge and experiences of the industry that spawned it. For example, the patterns in this book represent the collective knowledge of thousands of EJB developers from TheServerSide and in and around the industry, all of whom contributed via ideas or reviews the material in this book. Benefits of Patterns Of course there are many uses of patterns, but the following are some of the most important benefits that can help drive the maturity of a new software platform such as J2EE: Helps provide a high-level language for discussing design issues. EJB developers can use the pattern names in this book to discuss implementation details together efficiently. Imagine how much quicker it is to say that an application was built using the stateless Session Façade pattern than trying to explain all the semantics of how the session beans wrapped entity beans. Provides much of the design work upfront. A well-written pattern discusses in detail the problem and issues that need to be solved and shows how the problem solves it, with a good discussion of the pros, cons, and other issues to be aware of. By reading a pattern, many challenging and potentially hidden issues can be discussed and considered upfront. Combinations of patterns lend themselves to reusable architectures. Patterns tend to reference and built upon each other. This connection between patterns serves to create what is called a pattern language: a series of interconnected patterns that, as a whole, often suggest an overall architecture for an application. Thus, when reading this book, certain sets of patterns in combination will form a reusable architecture that can be applied across projects again and again. xiv Introduction