Excelsior JET on The Desktop
In today's highly competitive software market, the performance of deployed applications is one of the key issues. It can make or break the success of your product. Particularly for desktop applications, any shortfalls in execution speed or response time become far more apparent, due to the interactive nature of client-side applications.
Unfortunately, conventional JVMs do not target desktop application performance directly. Instead, they try to reuse the same machinery that works well on the server side where applications run on expensive hardware and they run for days. This is not the case for the desktop, quite the opposite. In contrast, Excelsior JET optimizes client-side applications in the good tradition of C/C++ compilers, thus effectively resolving a challenge for Java performance.
Excelsior JET vs. Dynamic JVMs
Why don't conventional JVMs shine on the desktop? The major problem is that most JVMs simultaneously execute the Java application and optimize it to gradually improve performance. This is typically done by interpreting Java methods within the JVM and compiling some of them to native code on the fly. Both techniques penalize the overall performance of desktop applications, especially when they run on inexpensive hardware. Moreover, the critical code cannot be detected and compiled instantly -- right after start-up, Java applications work quite slowly. For example, imagine that your end user starts your Java GUI application and drags something with the mouse. It is unlikely that he/she wants to see frame drops and pauses in execution -- "coffee breaks" taken by conventional JVMs.
Instead of the slower semi-interpreting virtual machine, Excelsior JET uses a static native code compiler that generates executable files. This results in applications running fast and smoothly from the very start-up.
In addition, JET protects you from unfair competition. Instead of Java class files that can be easily reverse-engineered, you ship to your end users highly optimized executables. Natively compiled Java code is as hard to reverse engineer as compiled C/C++ code.
Native-style deployment
Another area in which Excelsior JET excels is in the deployment of Java client-side applications. The GUI tools that come with JET enable you to prepare a complete self-extracting installation package for your Java application. To power the installation, you can use either the GUI-based installer that comes with Excelsior JET or a third-party setup tool of your choice. In addition, Excelsior JET enables you to substantially reduce download size of your Java applications.
Getting Started
You may begin using Excelsior JET in two easy steps:
- Download and install a fully functional evaluation copy of Excelsior JET.
- Follow the Getting Started tutorials.
Additional information
Memory footprint
In many cases, Excelsior JET reduces the memory footprint of compiled Java applications. In addition, you can adjust Excelsior JET JVM to regulate memory consumption far beyond simply setting a maximum Java heap size. For technical details, refer to:
HOWTO: Fine tune application memory consumption
(Excelsior JET Knowledge Base article 000025)
Excelsior JET User's Guide, Chapter "Executable Image Optimization"
Executable image optimization can help you further reduce the startup time and memory footprint of your JET-compiled applications.
NT Services
Excelsior JET for Windows lets you easily convert your Java applications to NT service executables and deploy them. The graphical tools, including Excelsior Installer, support the seamless creation and deployment of NT services. For more details, see
-
HOWTO: Compile Java applications to NT services
(Excelsior JET Knowledge Base article 00019)