• Additional JREs Support. The capability of the deployment circuit of handling the auto-
matic installation and subsequent use of different JREs.
•JNLP 1.0 Deployment Services. As a milestone in our standard services list, we use the
services provided by JNLP 1.0. We will discuss them as follows.
Ad-Hoc Deployment Services. In-house developed services—these could be the most
different or sophisticated, and are not provided by standard deployment solutions.
Regarding JNLP, we will discuss it thoroughly in Part III, “JNLP.” Here, we will consider it to
be a black-box; we are interested only in the protocol's features (as of version 1.0) as a refer-
ence for defining our services. For more information, see Chapter 9, “The JNLP Protocol” or
Appendix B, “The JNLP Specification”.
We assume the following main features for JNLP 1.0:
• Security. A secure deployment solution, which means that end-users can trust a reliable
JNLP Client because it will not allow any harmful behavior by deployed applications.
•Versioning and incremental updates. Each resource can be tagged with a version id, and
managed accordingly. Incremental updates are obtained using the JARDiff format.
• Multiple JRE management, and automatic installation of additional JREs and optional
• Desktop integration. Deployed applications are integrated on the native OS, providing
shortcuts, launching scripts, or other platform-dependent mechanisms.
•O fline operation. Deployed applications can work even without a connection with the
deployment server. Even if it is a somewhat minimal feature, it is widely used in prac-
• Automatic installation of native code/libraries. Some Java programs may need some plat-
form-specific support for running.
• AH Management console. Although not part of the specifications, we assume the JNLP
AH provides to end-users a form of graphical configuration console.
Next, we will discuss another important aspect of the deployment design. We saw how the use
of formalized services descriptions (although pretty simple for convenience) help us to define
what we want from our deployment circuit. We still need to clarify how we will implement the
There are substantially two methods for implementing the intended deployment circuit. Those
“basic” ones use only the JRE (eventually providing self-developed code to implement the
needed deployment services) and “specialized” ones that are full deployment solutions to be
customized to developers' needs (for example, third-party solutions such as DeployDirector).