Building Business Applications with J2EE xvii
ferent businesses and organizations have, and the many design considerations, it will
take a significant amount of time for the standard to mature to the point where it ad-
dresses all of these needs. In fact, even as the underlying platforms and standards
evolve, technology and problem domains also grow, thus making it likely that closing
the gap will resemble a calculus equation represented by a curve which slowly ap-
proaches zero, but never actually gets there.
The automation capabilities within technical frameworks provide a high level of
reusability across applications. Reusability is of course the “Holy Grail” of object-
oriented software development. However, it has been very hard to achieve in many
practical settings. Given a strategic application architecture and the set of guiding
principles, you can position yourself to benefit from software reuse. The Enterprise
JavaBean specification goes a long way toward having standard, reusable business
components across applications. However, it is the role of the application architecture
on top of J2EE to enable those components to be reused. It is important to have an ap-
plication architecture that easily allows components to be plugged in to the rest of the
system without adding significant overhead.
One way to plug in different components is through a messaging layer that buffers
the different interfaces and systems. In complex architectures, this is the right solution,
but for many applications, the overhead is too much of a price to pay. Two primary
strategies to promote and enable the reuse of domain components are realized through
the first two principles, design patterns and automated foundation components. One
such example is that of the Service-Based Architecture layer that provides a standard
interface for process-based components. By creating a standard interface that is used
by the user presentation layer, a service such as Retrieve Account Data can be reused
from different screens that require customer data. Services such as Account Deposit
and Account Withdrawal can be reused as building blocks in an overall service, Trans-
fer Funds. The fact that there is a service layer at all in the architecture allows the ser-
vices themselves to be reused from different client devices. Finally, the standard
interface of the service components allows you to automate their invocation through a
configurable foundation layer within the reference architecture.
Use Metadata-Driven Components
Metadata is usually defined as data that describes other data. This book also uses the
term “metadata” to refer to the many data elements that define the attributes and
behaviors of various software components. Some examples of this could be the list of
properties and their respective data types for a given business object, or it could be the
form name and associated configuration information for a Web page. Much of the
metadata that defines these components comes from design models described in UML.
The principle of using metadata to drive components again builds upon a previous
principle, that of automating the tasks of software development. Metadata is used as
an input to the “framework” services that automate and drive the behavior of J2EE
components. This is applicable at all levels of the architecture. In the case of business
objects, metadata can be used to define the business entities and their attributes. At the
workflow or transaction level, metadata can be used to drive the process flow of
complicated tasks. At the user interface level, it can define a particular Web page form