After having seen the deployment options for non-J2SE platforms (in Chapter 5, “Deployment
Options for Non-J2SE Clients”) and the issue of redesigning the deployment mechanism for
already-deployed code (in Chapter 6, “Deploying Existing Software”), we focus again on the
desktop front (J2SE and JDK 1.x) for discussing the available choices in those cases in which
standard deployment solutions cannot be applied.
In this chapter, we will continue the discussion begun in Chapter 4, “Designing for
Deployment,” concentrating on deployment circuits built to fit particular purposes. We will
switch from the design-oriented, general approach of Chapter 4 to a more practical, case-based
one. The topic being discussed (building ad-hoc deployment solutions) makes it quite limiting
to rely only on general considerations. The proposed examples range from very common situa-
tions (deploying applications via CD-ROMs or in a intranet scenario) to customizable architec-
tures that will work in several different cases (the deploylet package).
Designing Ad-Hoc Deployment Solutions
Given the broad range of possible situations developers face in real-world cases, an exhaustive
discussion of all the design choices is almost impossible.
Standard deployment technologies (such as JNLP, third-party deployment tools, and so on)
may not apply for many reasons. In Chapter 4, we saw the limits of these technologies; we will
discuss here how to set up effectively and economically a deployment circuit that will work in
these limited scenarios as well.
There are three main reasons why developers resort to ad-hoc deployment solutions, depending
on standard deployment technologies limits:
•Standard deployment technologies are incompatible with the given scenario.
•For some other non-technical reason, ad-hoc solutions are preferred over standard ones
(for example, high licensing fees or corporate policy).
•Standard deployment technologies don't provide a particular service, so the only way to
go is to customize some existing deployment technology or build it completely from
Choosing the Starting Point
After realizing that an ad-hoc deployment solution is needed, the next problem is from where
to start building it. We already discussed deployment means in Chapter 4; in this chapter, we
focus on situations in which not all the standard deployment technologies are available. In
Figure 7.1, a deployment design box illustrates the possible choices given the following (ficti-
tious) design constraints: