installation package, especially for non-English locales (worsened by eventual optional pack-
ages and third-party libraries). If this problem cannot be solved completely, it may be eased by
careful deployment planning. Technologies such as JNLP and almost all other third-party
deployment tools provide mechanisms to preinstall a JRE on the client platform. Some ad-hoc
mechanisms can be devised, too, for answering to more problematic situations (Chapter 7
shows several ad-hoc solutions that provide the JRE installation, too).
Furthermore, another important (and often neglected) aspect is that the strategy to solve the
first installation problem has to consider the end-user as well. One of the key factors (so often
overlooked by developers) for choosing the best option for solving this issue is to know which
kind of user is going to interact with the application. This problem gets less decisive in those
environments in which users are somehow required to use certain applications (as in corporate
intranet environments) and in which you can assume end-users will undertake a complex (from
an inexperienced user viewpoint) installation procedure.
We will touch this issue often in the remaining of this chapter and in other chapters as well.
Chapter 13 provides a concrete discussion of these topics for the JNLP technology.
In the following section, we will take another approach—discussing together the most recur-
In this section, we will briefly describe the possible options, depending on the type of commu-
nication channel between the deployment server and the client platform.
In this section, we will discuss application deployment via the Internet. This scenario is poten-
tially the most difficult to face for Java developers because of several reasons:
• The first-time installation problem is quite critical, especially when connection band-
width or reliability is an issue.
•A high degree of control on end-users is required. That is, given the high cost of the first-
time installation (from an end-user perspective), Java-deployed applications tend to be
disadvantaged compared with other native deployment solutions.
•A greater complexity is needed to accommodate a potentially large set of different client
configurations, such as supported platforms (Linux, Mac, Windows, Solaris, AIX, and so
on), different locales, or geographical nearness issues.