Super Prev Next

Overview

Excelsior JET is a comprehensive solution for Java(tm)application performance and intellectual property protection, available for Microsoft Windows and Linux on the Intel IA-32 (x86) platform. It employs Excelsior’s Java to native code optimizing compilation technology that improves performance and reduces resource requirements of large Java applications. Applications compiled with JET are conventional executables, which neither include nor require a Java interpreter, and which are as hard to revese engineer as C++ executables.

JET is based on the Excelsior’s proprietary compiler construction framework designed for creation of highly optimizing compilers for various target architectures (x86, PowerPC, SPARC, etc.). The framework has proved its high quality in industrial tools, such as XDS Modula-2/Oberon-2 multiplatform compilers, and custom proprietary language compilers. It has been enhanced with Java-specific optimizations, including object-oriented.

JET is intended for compilation of Java bytecode into optimized native code. Although direct compilation of Java sources would potentially allow it to achieve better levels of optimization, compilation of bytecode is actually more important, since third-party libraries are usually distributed in this form. Therefore you have to compile all your Java sources into .class files prior to using the JET compiler. We recommend to use the javac compiler that is part of Sun Java 2 SDK, although JET is capable of compiling bytecodes produced by other compilers, such as IBM Jikes.

Future versions of JET may support direct Java source code compilation.


Super Prev Next

What is new in Excelsior JET 3.7


Super Prev Next

Support for the latest versions of the Java Platform

Excelsior JET 3.7 supports all J2SE 5.0 (Tiger) features. JRE-independent deployment for J2SE 5.0 is not possible, though.

Support for the latest J2SE 1.3.x and 1.4.y microversions is also implemented.


Super Prev Next

New runtime library

Excelsior JET 3.7, Professional Edition introduces a new runtime library optimized for parallel execution on Hyper-Threading enabled CPUs and multiprocessor systems. See Runtime Selection for details.


Super Prev Next

Feature shift

In Excelsior JET 3.7, one core feature from the Professional Edition has been added to the Standard Edition: the fast (non-optimizing) JIT compiler without the caching engine. As a result, the Standard Edition now fully supports all features of the Java Platform, including dynamic class loading. See Chapter Mixed compilation model for details.

At the same time, the following auxiliary features have been removed from the Standard Edition:

These features will remain present in the Professional Edition.

Finally, the JetPerfect Global Optimizer has become an optional free add-on to the Professional Edition.


Super Prev Next

Application performance improvements

64-bit integer type support has been rewritten and no longer hinders the register allocator. As a result, the execution speed of programs that heavily use long variables has improved dramatically.

More objects are now allocated on the stack rather than on the heap, and the newly-introduced object explosion (conversion of stack-allocated objects’ fields to local variables) amplifies the effect.

Various improvements have been made in:

Faster synchronization primitives have been implemented.


Super Prev Next

Other improvements over previous versions


Super Prev Next

Established features


Super Prev Next

Classical optimizations

The JET compiler supports various optimization techniques commonly used in "classical" compilers, such as C or FORTRAN. Among them are: global inline substitution of methods, common subexpressions elimination, constant propagation, loop unrolling, loop versioning, redundant run time checks removal, advanced register allocation algorithms, instruction scheduling, etc. Using SSA (Static Single Assignment) internal program representation, exploited today by the most advanced compilers, greatly improves quality of these classical optimizations, as well as performance of the optimizer itself.


Super Prev Next

Object-oriented and Java-specific optimizations

During JET development, we have designed and implemented a number of object-oriented optimizations. For instance, type inference allows the optimizer to determine the actual type of a particular receiver expression and replace virtual call with direct one. Another optimization algorithm replaces dynamically allocated objects with stack objects, thus, reducing dynamic memory consumption and decreasing overhead of garbage collection.


Super Prev Next

Garbage collector

A proprietary incremental mark-compact algorithm is used in the JET run-time to support garbage collection. The JET GC effectively performs reclamation of unused memory and compacts the heap, if it becomes excessively fragmented. Because the used algorithm is age-based incremental, GC does not mark old objects each collection cycle. As a result, GC pauses are significantly reduced.


Super Prev Next

Mixed Compilation Model

Excelsior JET provides complete support for dynamic class loading through Mixed Compilation Model. You distribute along with your statically compiled application a Just-In-Time compiler, which handles dynamically loaded classes unknown at compile-time. Moreover, Excelsior JET, Professional Edition supports caching of the dynamically compiled code for faster application startup.

Mixed Compilation Model effectively makes JET fully conforming to the Java specification. It enables you to statically compile applications that employ RMI Distributed Object Model, Dynamic Proxy API, third-party plugins, or any other mechanisms essentially relying on dynamic class loading.

See Chapter Mixed compilation model for details.


Super Prev Next

Global optimizations

Excelsior JET, Professional Edition features JetPerfect Global Optimizer, which analyses the entire program and delivers performance improvement and executable size reduction.

See Chapter JetPerfect Global Optimizer for details.