Often, deployment is seen as a mere appendix to software development. This could be true in
some cases. Generally speaking, the more the deployment services we want to employ, the ear-
lier deployment considerations should be used to influence software design. The best situation
is where deployment considerations are taken into account since the design phase of the soft-
ware lifecycle. This is not wishful thinking, but concrete reality. Let's take an everyday exam-
ple. Some deployment solutions offer, among others, localization services to cut down the size
of the resources to install. If localization data is not planned out and organized accordingly, the
localization feature (provided with no additional effort for developers) will be wasted or, even
worse, could tamper the whole deployment effectiveness.
The key point here is to realize that deployment is no longer a simple, one-shot service.
Thanks to the Internet and to more sophisticated technologies such as Java itself, deployment
services are growing into advanced business software support services. Like all new technolo-
gies, despite being already technically feasible, non-trivial deployment services are still consid-
ered an unnecessary complication and are not widely used. Old habits are hard to change, even
among Java developers.
Separating and specializing on a per-function basis, the software services needed by an appli-
cation is a key for enhancing the overall software quality and cutting down development time
all at once. We already discussed such topics in Chapter 1, “Deploying Java.” Here, we focus
on the evolution of deployment services and their transformation into a powerful software
infrastructure provided to business applications that developers are still too hesitant to
embrace. In order to gain acceptance, deployment services have to be given a more important
role in the software development and in the overall software lifecycle, as discussed in Part I,
The topics discussed in this chapter are focused mainly on the Java desktop environments
(JDK 1.x and J2SE). Desktop applications are more difficult to deploy because of the great
availability of deployment options. Deciding the deployment strategy for J2ME or J2EE exe-
cutables is much easier because there are fewer options available to developers. With J2ME,
there are essentially two main reasons that prevent a complete exposition of the various J2ME
• Configurations and profiles are quite different from device to device, and it is of little use
to attempt to discuss all the J2ME deployment options together as a whole.
• More importantly, each profile provides its own deployment mechanism and, given
the limited nature of the client devices, there is no room for alternative deployment