IBM's SanFrancisco is a Java-based set of pre-constructed components that help developers quickly assemble server-side business applications. In developing SanFrancisco, IBM's Java developers discovered a wide range of patterns that are invaluable to all Java developers. This book documents them, in-depth. It follows the format used in the groundbreaking book Design Patterns. Beginning with a case study describing a typical set of business requirements for a hypothetical enterprise, successive chapters address each design pattern in turn, using an aspect of the case study to provide a concrete example that motivates the pattern. The patterns fall into five categories: foundational, behavioral, structural, process, and dynamic behavioral patterns. While some of them extend patterns originally identified elsewhere, many are entirely new -- and all of them offer powerful opportunities for more effective development.