Both means are legitimate and equally useful. Often, specialized development solutions don't
cover all the possible real situations, and developers are forced to implement an ad-hoc deploy-
ment circuit using the JRE or other native resources only. On the other hand, choosing not to
rely on the services provided by a specialized tool will force developers to build such a soft-
ware facility from scratch.
We intend to provide here a practical range of deployment means, those most commonly used
in real-world situations. In order to do so, we have to sacrifice some conceptual criteria. In par-
ticular, we will blend together third-party deployment solutions with basic Java technology
(that is, simple JREs). This is for simplicity and also because a JRE often comes shipped with
a deployment technology itself (we are referring to Sun's JRE distribution that comes shipped
with the Plug-In technology).
Explicitly mentioning the various JRE versions as deployment means also has the benefit of
shedding some light on the often-overlooked issue of re-engineering the deployment of
already-deployed Java code. In Chapter 6, “Deploying Existing Software,” we will see an
example of such potentially intricate situations.
Another deployment “means” we often neglect (but which is still widely used) consists of the
use of specialized workforce. Employees that take care of installation and configuration of
software systems are a valuable though rather expensive way of effectively deploying software,
Java applications included. Despite the fact that it may look quite strange to mix concepts as
diverse as a JRE with deployment workforce, for completeness, we will consider those con-
cepts as legitimate deployment “means.”
There are, of course, many other deployment technologies that we don't mention here, such as
general application management systems (we mention them briefly in Appendix C, “Other
Deployment Technologies”). The following proposed list is intended to be flexible, to be
expanded on a per-case basis, and to include all the needed situation-specific tools (just like
the deployment services list discussed in the previous section).
The deployment “means” we will consider are as follows:
•J2SE JRE in its various versions
•JNLP Client + JRE
• Third-party deployment solutions
• Specialized personnel—this is assumed to be the most powerful of all the deployment
The means listed previously imply a Java platform for the deployed software as well. Of
course, each of these means can be customized and expanded to handle the given situation in