 |
The Problem
The Java programming language has often been thought of as a tool for writing
platform independent programs. Java's "Write once, run anywhere" approach is
based on the idea that a compiler for a Java program generates generic byte
code that can then be interpreted and run by a Java Virtual Machine (JVM) on
any platform. The problem is that today's Java programmers must constantly be
concerned with which version of the JVM their application requires, and whether
or not this version will be present on the end-user's machine. The following
is a list of the common solutions for this problem and how they are costly:
-
The application requires that the end user fetches and installs the JVM -
Today's users have come to expect a simpler installation procedure. Many do
not know what a JVM is and cannot be relied upon to successfully install one.
-
The JVM is packaged with the application - JVM's are very large (~ 20 MB) and
can cause installers to be unnecessarily large. Naively installing a JVM can
also lead to the same JVM being installed on a system more than once.
Furthermore, successive updates to the software can involve re-installing a
new JVM. This can perpetuate the problem indefinitely.
-
Custom Solutions - Coming up with a custom JVM update and management facility
can cost development time, and custom solutions are often inflexible and hard
to maintain.
The Solution
JEM (Java Environment Manager) is a lightweight native application that frees
both the user and developer from the concerns of JVM management. From the
developer's perspective, you simply place the JEM application (~280 KB) in with
the Java application along with a configuration file specifying the
application's launch environment. In the configuration file, the developer
specifies the runtime environment and launch parameters along with the versions
of the JVM required for the application to run properly. From the users
perspective, they launch the application by executing the JEM executable
(which, of course, is disguised as the target application). JEM then takes
care of JRE detection and the launching of the application. If a proper JVM
is detected on the system, it is used to launch the application. Otherwise
the JVM is automatically downloaded and installed for the user before the
application is launched. This solves the problem of JVM management for both
parties:
-
The user never has any knowledge of JVM management. From their perspective,
the Java Application runs just like any other.
-
The developer no longer has any worries about JVM management or runtime
configuration. This frees them to concentrate on the features and performance
of the application.
-
The developer has complete control over the runtime environment of the
application. They can be assured that their application is being run with the
correct version of the JVM at any time.
-
If a future version of the application requires a new version of the JVM, the
developer only needs to specify this in JEM configuration file. JEM will then
handle the download and installation of this new JVM when the application is
run.
|