1. Planning the ad-hoc deployment solution
2. Designing the (possibly client-server) architecture
3. Studying how to define and implement client configurations, deployment policies and
4. Implementing, testing, and releasing all the planned items
Implementing a complete deployment solution is not a simple task, and involves so many vari-
ables that a general discussion would be inevitably either too long or too shallow. We will
devote the entire Chapter 7 to this issue by providing practical code.
While traditional client-server systems have been thoroughly studied and many technologies
are available to developers, the implementation of a deployment circuit may need to address
some peculiar problems that developers are seldom experienced with solving. For instance,
malfunctions in application helpers are quite difficult to fix once the product is deployed
because AHs are located remotely on a potentially great number of client platforms, and cus-
tomers rely on them to run their products. Providing a “self-deploying” AH, although a possi-
ble solution, makes the engineering task even harder. We will see an example of such a design
shortcoming in a concrete example of Chapter 6.
Nevertheless, developers can use the abstract model of Chapter 2 as a concrete design aid,
especially in the analysis phase, in which requirements and domain-related concepts have to be
quickly and effectively nailed down. This, together with some general advice from client-
server and network-oriented technical topics, will provide a satisfactorily sound foundation for
a professional deployment solution development.
Finally, a last note about the role of the AH. Often, it is not necessary to provide such a facil-
ity; depending on the wanted deployment circuits and the particular situation, one can avoid
the implementation of such a complex piece of software. In Chapter 7, we will see a complete
deployment solution that, by taking advantage of a particular scenario, is able to provide an
extremely wide range of deployment services without the implementation of an ad-hoc AH.
First Installation Problem
This issue, particularly important for Java applications, deserves a brief additional discussion.
As we saw in Chapter 1 and mentioned in Chapter 2 as well, the most peculiar aspect of
deploying a Java application is the problem of how to install the desired (and up-to-date) JRE
on the client platform. While this is not a problem for J2ME and JavaCard-compliant devices
(because they come already with a preinstalled, reliable JRE), it turns out to be a sensitive
issue for desktop computers. As we said in Chapter 1, maybe the real hurdle for a wide expan-
sion of Java on this class of computing platforms is not the performance issue (that is con-
stantly increasing, thanks to new JVM technologies) but rather the bulky size of the JRE