105
Chapter 3
Best Practices in Java EE Web
Development
All the evolution we know of proceeds from the vague to the definite.
—Charles Sanders Peirce
Every so often good solutions are invented. At times they are discovered. Invention and discovery
are not synonyms,^1 and they signify different objectives; however, both are realized through
experience and expertise. Experience helps you achieve good solutions, and when you apply those
good solutions to the same set of problems, patterns begin to emerge. Patterns are the catalog of
good solutions that stem from the experience and expertise of developers.
An architect named Christopher Alexander observed that architects tend to solve the same
problems in more or less the same way. This realization led him to write a book of design patterns for
architects.^2 He reflected in this book, “A design pattern describes a problem which occurs over and
over again, and then describes the core of the solution to that problem, in such a way that you can
use this solution a million times over, without ever doing it the same way twice.”
(^1) Invention means to create a new object from preexisting objects. Discovery is figuring out something that
preexists but not creating new objects from it.
(^2) A Pattern Language: Towns, Buildings, Construction by Christopher Alexander, Sara Ishikawa, and
Murray Silverstein (Oxford University Press, 1977). See also The Timeless Way of Building by Christopher
Alexander (Oxford University Press, 1979).