10.7 Summary
Over the last two chapters, we have taken an initial
customer's requirements for a generic, flexible web
site search engine and refined them to meet our core principles. We
then designed a simple, straightforward application that met those
requirementsand then someand made use of existing tools
(however unorthodoxly) to accomplish a complex set of tasks. The
result was a solution to the initial requirements that came in well
below the $18,000 that Google charges for its search appliance, even
if we had billed the customer not only for design and development,
but also for all the time spent researching the included open source
tools and writing these two chapters! And, frankly, we
aren't cheap. Simplicity really does have its
rewards.We learned how easy it is to integrate two applications designed with
our core principles in mind. Since the jPetStore
sample is built on a lightweight framework (Spring) and makes good
use of the world's most common design pattern (MVC),
it was child's play to introduce a replacement
service for the limited one provided. Since the Spider is well
factored and provides flexibility through its configuration service,
it is easy to adapt it for use in a new context, in a container-based
environment, and with an entirely new user interface, using only
three changed lines of code to the original application (and those
lines only added a new scoping keyword). And since Hibernate is also
built on these same principles, it was incredibly easy to swap it
into the project in place of the existing persistence mechanism.These examples demonstrate that Java doesn't have to
be hard. In fact, if you focus on the principles outlined in this
book, Java can be downright fun.