• • •
F IGURE 1.2
The Java Internet-enabled deployment scenario.
Figure 1.2 depicts many of the platforms Java can run on, together with the typical connection
bandwidths (a dotted arrow indicates there is not a permanent connection to a network).
Inexpensive computational power in the form of consumer devices pervading our daily lives,
together with the Internet revolution, promise an unprecedented development both within the
computer industry and in our society. We do not know how the world will look on the other
side of this change, but we can say that Java will play an important role. Likewise, techniques
aimed at distributing and maintaining Java code will also play an important role.
When it comes to deploying Java code, we must consider not only the executables and their
related resources, but also a unique-to-Java piece, the Virtual Machine, in its different flavors
and its runtime support (core libraries, support utilities like the RMI registry, and so forth).
Because the Virtual Machine is required to run the Java code, this is like saying that if you
want to listen to the music contained in some disks, you must buy and bring home the special
disk player as well. Therefore, deploying Java software, at least presently, is more complicated
than deploying native executables. This is because the client platforms so far do not come with
pre-installed, up-to-date Java Runtime Environments (JREs). The JRE to be installed depends
on the specific platform, as do the size and the communication mechanism, and many other