Excelsior JET enables you to accelerate your Java applications,
to secure them against reverse engineering, to create a complete
application setup, and to distribute
your Java software products without deployment dependencies such
as the Java Runtime Environment (JRE). Yet, you can substantially
reduce download size and disk footprint of your Java applications.
How does Excelsior JET do all these things for you?
What you use now
Your Java application is delivered in a portable bytecode form and
runs on top of the Java Virtual Machine (JVM). The JVM is a part of
the JRE that should be installed on every system on which your
The JVM executes the application and gradually improves its performance
by optimizing the Java code at run time.
Fig 1. JVM warm-up cycle vs. steady performance of a native app
Put simply, when a user launches your application or a consumer turns
on your Java-powered device, Java code performance is relatively low.
The performance is improved to some extent only after the application
has run for a while. Unfortunately, when it is re-started, the entire
warm-up cycle gets repeated.
- Is there a direct route to Java performance? Yes.
Suppose you had an automatic tool that optimizes Java code for
your target platform before execution. Free of resource constraints
inherent to run time optimizers, it processes all the code and optimizes
You feed the application's classes to the tool, which optimizes them
for performance and saves the results to disk. Now, you can deploy your
Java application in optimized form so that it runs fast from the start
on target systems.
What is that automatic tool we are talking about? Read on.
Excelsior JET Optimizer
A Java application typically consists of class files and resource files,
like images, which are packed into one or more jar files.
Using the Excelsior JET Optimizer, you convert the classes into highly
optimized native x86 or x64 code and create a conventional executable for Windows or Linux.
This technique is called Ahead-Of-Time (AOT) compilation.
Fig 2. AOT compilation
Now, the original Java classes are no longer required for the application
The best way to secure your Java classes against reverse engineering
is to not distribute them at all. Ahead-Of-Time compilation makes it
And you can launch the executable as you would a native application.
Excelsior JET Runtime
Upon startup, the application executable links to the Excelsior JET Runtime,
which provides the Java SE API classes (also native compiled) and
low-level runtime support routines necessary for Java applications,
such as garbage collection.
Fig 3. The Runtime serves the compiled executable
Now, your Java application runs directly on the underlying hardware.
When the Java code is agressively optimized for the target hardware
before execution, applications run at full speed right from the start.
Finally, you can leverage Excelsior JET to create a professional installation
for the optimized application.
Excelsior JET Installation Toolkit
With the help of the Excelsior JET Installation Toolkit, you can create
a complete installation package that includes your optimized Java application,
the Excelsior JET Runtime, and any additional files, like user's documentation,
extra utilities, and so on.
Fig 4. Packaging the optimized application
The basic deployment procedure is very simple.
The created installation package is a self-contained directory that can be
installed on target systems by a simple copy operation.
Another option is store it on removable media, such as a flash memory card or
USB drive, enabling your end users to run the application
If necessary, you can wrap
the package into Excelsior Installer bundled with Excelsior JET or use another
setup generator of your choice.
The JRE need not be installed on target systems for your application to run.
Do not forget to remove the JRE from your application's system requirements
Now you can ship your server-side and desktop Java applications or
Java-powered devices to end users.
Fig 5. Java deployment simplified
Wait, but what about dynamic class loading?
Your Java application may need to load classes that are available only
on a target system, downloaded from a remote host, or generated at run time.
Examples are dynamic proxies, third-party plug-ins for your application,
and JDBC drivers.
How does Excelsior JET cope with that? Easily.
The Excelsior JET Runtime includes a JIT compiler that transparently loads
Java classes to the running application.
Fig 6. Dynamic class loading
Optimizer gets smarter, installer gets smaller
One might ask: why do I need this big iron (JET Runtime) including
all standard Java classes pre-compiled while my app uses
only a few of them?
The JET Optimizer can compile your application's classes
classes of the Java SE API together into a single executable.
Then, you may leverage the Java Runtime Slim-Down
deployment model to leave the unused parts of Java SE out
of the application installer.
As a result, a complete application setup powered by Excelsior Installer
can be substantially smaller
than the Oracle JRE alone.
This technique also helps you significantly reduce the disk footprint of your
application compared to the Oracle JRE footprint.
It can save a fair bit of valuable space if your Java applications
come pre-installed on removable media such as flash memory cards or USB drives.
We invite you to
download a fully functional evaluation copy
of Excelsior JET.
While it is downloading, take a look at the
Product Data Sheet
that contains the full list of features and benefits offered by our product.
Find more information about how Excelsior JET can help you: