Excelsior JET Release History
15-Jul-2008: Excelsior JET 6.4
Excelsior JET 6.4 is the first release that introduces features designed specifically for IP protection enhancement.
The previous versions delivered program code protection "for free", as a side effect of optimizing compilation of Java classes into a native executable. But the program data, such as string literals, appeared verbatim in a hex editor. Now you have an option to scramble that data, as well as any resource files packed into the resulting executable, by checking a single box.
Then, you have to do literally nothing to take advantage of the new Startup Optimizer, seamlessly integrated into the JET Control Panel. It replaces the Executable Image Optimizer, which had to be used from the command line and was only available for Windows.
Version 6.4 removes one of the major annoyances from the Installation Toolkit, that is, the lack of support for JET Runtime updates. We have also taken the first step towards the alleviation of another annoyance, long build times. Now classes are not recompiled if you change project settings not affecting the generated code, e.g. add an icon to the executable or adjust the default GC settings.
Note: Not all new features are available in the Standard Edition. See the Feature Matrix for details.
There are also numerous speed and stability improvements, both in Excelsior JET itself and in the optimized applications, and of course
Support for the latest Java SE microversions
Excelsior JET 6.4 supports Java SE 6 Update 7 and J2SE 1.5 Update 15
New Features
- String encryption
-
Enabled on the Target page of the JET Control Panel, string encryption scrambles all Unicode, UTF-8, and ASCII strings stored in the executable so that they are not immediately visible in a hex editor. These includes:
- Reflection information
- String literals
- Various runtime data, such as the main class name
Strings are decrypted on demand at application run time. In our tests, the impact on performance was minimal, but your mileage may vary.
For details, see Excelsior JET 6.4 User's Guide, Chapter "Intellectual Property Protection", section "Data Protection".
- Encryption of resource files
-
When compiling JAR files, you may enable encryption of enclosed resource files such as images, texts, application data. As a result, the optimized executables no longer include the resources in the original form. This option is available on the Target page of the JET Control Panel.
Resource files are decrypted on demand at application run time. This is a unique feature that cannot be found in Java bytecode obfuscators because Excelsior JET supports application data protection at the JVM level.
In our tests, the impact on performance was minimal.
For details, see Excelsior JET 6.4 User's Guide, Chapter "Intellectual Property Protection", section "Data Protection".
- Faster application start up
-
With the newly implemented Startup Optimizer, the cold start up time of your application can be reduced by a factor of two.
You have to do nothing special to enable this optimization. Just run your app once on the page Test Run of the JET Control Panel and then build the executable as usual.
Here is what happens behind the scenes when you do that:
- During Test Run, a start-up profile is collected and saved into a file
- That file is automatically added to the project
- The compiler reads the profile information and does the necessary optimizations
You do not need to collect the profile each time you modify your app, because in most cases the start-up profile is quite stable. You may wish to recollect it before making the final build for pre-release QA.
The underlying optimization technique relies on the reordering of code and data within the compiled executable. As compared to using the Executable Image Optimizer available in the previous versions of Excelsior JET, the new Startup Optimizer has the following advantages:
- Extremely easy to use
- Can be aplied to executables of any size
- Supported on both Windows and Linux
For maximum effect, use the Startup Optimizer together with the Global Optimizer.
For details, see Excelsior JET 6.4 User's Guide, Chapter "Startup Time Optimization".
- Smart compilation (level 0)
-
The JET Optimizer now tracks changes in the project to avoid recompilation of the entire application if only auxiliary application files and/or project settings were modified. It dramatically reduces compilation time if, for example, you modify version info, runtime settings, resource files, icon/splash screen, etc.
If necessary, you may trigger full recompilation via the Build menu of the JET Control Panel.
In future versions, we will enhance this basic implementation with support for partial recompilation of the project even if some application classes are changed.
- Updates for JET Runtime
-
Now you may create an update package for existing installations if your application was recompiled to work with a newer version of the JET Runtime, which occurs if you:
- applied a hot fix or Maintenance Pack that include significant modifications
- started using a new version of Excelsior JET
- changed the Java SE microversion, e.g. moved from Java SE 6 Update 3 to Update 7
- changed the major Java version, e.g. started using Java SE 6 instead of J2SE 1.5
In the previous releases, you had to create a new installation package in such cases.
For details, see Excelsior JET 6.4 User's Guide, Chapter "Deployment Automation", section "JET Runtime Updates".
Improvements
- Improved application performance
-
Thanks to:
- faster memory allocation and garbage collection
- enhanced loop optimizations
- better register allocation
the compiled applications now work faster.
Here is some third-party proof.
- Faster JIT compilation
- We have managed to reduce the average JIT compilation time for various scenarios by 15-20%. We will continue working on it.
- Faster AOT compilation
- Build time is reduced by about 15% without compromising the quality of optimizations. We will continue working on it.
07-Dec-2007: Excelsior JET 6.0
This release introduces Java SE 6 support and is fully tested and certified on Windows Vista and Red Hat Enterprise Linux 5, in addition to the previously supported platforms.
The Installation Toolkit now supports adding typical post-install actions to the Excelsior Installer GUI wizard.
Among other improvements are usability enhancements of the Excelsior JET toolchain and higher performance of the optimized Java applications.
Latest Java Version Support
Excelsior JET 6.0 has passed the official Java Compatibility Kit (JCK) test suite for Java SE 6 on a number of platforms and now supports the latest Java SE platform features. The microversion supported out-of-the-box is Java SE 6 Update 3.
J2SE 5.0 is still supported; the included microversion is J2SE 5.0 Update 13.
Operating System Support
Windows Vista and Red Hat Enterprise Linux 5 are now supported. See System Requirements for details.
New features
We have implemented a handful of new features on customer requests:
- Post-install actions (Windows only)
- You may now add typical post-install actions to the last page of the Excelsior Installer wizard. Examples are launching the application just installed, viewing the readme file, restarting the computer, etc. etc.
- Version information for Windows executables
-
You may now specify the standard version information on page Target of the JET Control Panel. The version information resource is then automatically created and bound to the optimized executable.
Moreover, the version information, such as company name and product version, is propagated to JetPackII and used as the default settings for Excelsior Installer setups.
- Difference tracker for updates
-
When preparing update packages for the created installations, JetPackII now enables you to easily inspect and commit changes between the original installation and the respective files and directories on the disk. As a result, you can add the new and modified files and directories to the update package in a few mouse clicks.
The difference tracker is invoked automatically when you start preparing an update, or can be invoked manually through the main menu of JetPackII.
Other improvements
IDEA Plug-in Update
The IntelliJ IDEA plug-in is updated to work with IntelliJ IDEA 7.0.
(You may find the IDEA Integration plug-in in the ideplugins/IDEA subdirectory of your Excelsior JET installation.)
Higher performance
Delivered by more efficient memory management and better register allocation.
Customer issues addressed
Thanks to all Excelsior JET community members who gave us feedback on the previous versions of our product and participated in Excelsior JET 6.0 beta test campaign.
22-May-2007: Excelsior JET 5.0
This release introduces a brand-new deployment technique called Java Runtime Slim-Down that enables you to significantly reduce both download size and disk footprint of your Java SE applications.
Major improvements are higher performance of the optimized Java applications and usability enhancements of the Excelsior JET toolchain.
Download size reduction
With the newly introduced Java Runtime Slim-Down, the size of a complete installation package powered by Excelsior Installer can be reduced to:
- 8MB for a medium-size Swing/AWT application
- 5MB for applications using alternative GUI toolkits such as SWT or LWJGL
Note that these figures may vary depending on the size of application's resources such as images and media files.
The size reduction can be achieved by excluding unused components of the Java SE API from the installation and placing them on a web server for on-demand download. This also helps you significantly reduce disk footprint of the installed applications.
The necessary support for Java Runtime Slim-Down is added to the JetPackII graphical tool and the JET Runtime. For more details, refer to Chapter "Java Runtime Slim-Down" of the User's Guide.
Note: Java Runtime Slim-Down is not available in the Standard Edition of Excelsior JET.
Higher performance
This release delivers a major performance increase over previous versions thanks to the enhancements in the JET Optimizer and Runtime:
- new loop optimizations
- faster floating-point operations
- faster memory allocation
- more effective implementation of other runtime routines
As measured with two standard benchmark suites (SciMark2 and SPEC JVM98), the composite scores have improved by a factor of 1.7.
Usability enhancements
- Project Data Base
-
The multiple files that the JET Optimizer creates and uses on the developer machine during compilation are now automatically placed into a few zip archives which form a Project Data Base (PDB).
When optimizing large Java applications, PDB reduces the workload on the local file system and decreases compilation time. For details, see "Project Data Base" section of the User's Guide.
In addition, the availability of PDB for each compiled project simplifies the creation of multi-component applications as described in section "Multi-component applications" of the User's Guide.
- Plug-in for IntelliJ IDEA
-
The plug-in streamlines the process of optimizing Java applications and packaging them for deployment with Excelsior JET.
You can find the IDEA Integration plug-in in the ideplugins/IDEA subdirectory of your Excelsior JET installation. For more information, visit this page.
- Full support for drag-and-drop in JetPackII
-
When adding files to the installation package, you can now drag files from other applications, such as Windows Explorer, and drop them onto the Package Files panel of JetPackII. In previous versions, drag-and-drop was supported only for the file chooser built in JetPackII.
- Project history in GUI tools
-
Both JET Control Panel and JetPackII now allow you to quickly open one of the recently saved projects (see "Opening a project" sections in the User's Guide for details.)
Other improvements
- Faster start-up and lower memory usage
-
Start-up time of applications compiled with the Global Optimizer is improved by approx. 30%. The optimized applications now take 2 to 4 MB less memory.
- Smaller size of update packages
-
The size of update packages for installations including executables built with the Global Optimizer is reduced by approx. 5MB
- Deleting all files from installation folders
-
Excelsior unInstaller can be configured to remove all files from the installation folder including those created by the application after installation.
When preparing the installation package, you can set this option using the JetPackII tool (see "Specifying Installation Settings"/"Extra facilities" in the User's Guide).
- Faster JIT compilation
- Support for latest Java SE 5 update
-
Java SE 5.0 Update 11 is included by default
- Customer issues addressed
-
Thanks to all Excelsior JET community members who gave us feedback on the previous versions of our product.
29-Nov-2006: Excelsior JET 4.8
This release enables you to considerably reduce the disk footprint of your installed Java applications.
Other major improvements are further decrease of the download size of installers created with JetPackII and higher application performance on hardware that supports parallel execution.
Finally, this release adds more installation languages to Excelsior Installer and returns support for J2SE 1.4.2, requested by many customers.
Java SE version support
Good news for customers who resisted migrating to Java 5 for any reason: support for J2SE 1.4.2 is back!
Excelsior JET 4.8 supports J2SE 5.0 Update 9 (1.5.0_09) and J2SE 1.4.2_12 out of the box.
New features
- Disk footprint reduction
-
Now the size of the client installation can be substantially reduced: a medium-size GUI application using SWT over Java SE 5.0 now takes only 20MB of disk space and can be run off a USB flash drive without installation.
Note that the required disk space may vary depending on the size of application's resources such as images and media files.
The disk footprint reduction has been achieved by combining:
- compilation of used application and platform classes into a single executable
- effective compression of rarely used components of the JET Runtime
- on-demand decompression during execution
Other Improvements
- Download size reduction
-
The size of a complete installation bundle for a medium-size Swing application using Java SE 5.0 can now be less than 10 MB. That is, this version saves extra 2 MB on average as compared with Excelsior JET 4.5.
This has been achieved through implementing a more effective compression technique in Excelsior Installer.
Moreover, you can now exclude all optional components of the JET Runtime from redistributions. This functionality is available on the page "Runtime" of the JetPackII tool.
- Higher performance
-
The Desktop Runtime flavor delivers higher performance on HyperThread-enabled processors, dual-CPU systems and multi-core chips, whereas the Server Runtime delivers higher throughput on multi-CPU systems.
- More installation languages
-
Spanish and Polish localization added to Excelsior Installer.
- Customer issues addressed
-
Thanks to all Excelsior JET community members who gave us feedback on the previous versions of our product.
07-Jul-2006: Excelsior JET 4.5
This release enables you to substantially reduce the download size of your Java applications. This newly implemented capability was requested by a number of customers.
New features of Excelsior JET Installation Toolkit include Excelsior Installer for Linux and ability to rebrand the Windows version of Excelsior Installer.
Ease-of-use enhancements, reduced application memory usage, and JIT compiler speedup are among the major improvements.
Finally, the Enterprise Edition has been introduced.
Java SE version support
Excelsior JET 4.5 supports Java SE 5.0 Update 6 (1.5.0_06).
Note: Excelsior JET 4.1 is the last version with support for Java SE 1.4.2. We shall continue to ship it in parallel with 4.5 and future versions.
New Edition
Excelsior JET, Enterprise Edition has all features of the Professional Edition plus an unlimited redistribution license for the Server Runtime.
New features
- Application download size reduction
(Professional and Enterprise Editions only) -
Now the size of a complete installation package for a medium-size Swing app using Java SE 5.0 is about 12 MB, which is less than the download size of the Sun JRE 5.0 alone (16 MB).
Installation packages of Swing-less GUI applications, e.g. using the SWT API or Java games using the Java2D API can now be less than 10MB in size (see this report for details.)
Note: These figures may vary depending on the size of application's resources, such as images and media files.
The size reduction has been achieved by combining:
- scalable whole-program analysis implemented in the Optimizer
- selective compilation of application and platform classes into one executable
- effective compression using multiple methods such as LZMA and pack200
- Excelsior Installer rebranding
(Professional and Enterprise Editions only) -
Now you can replace images, texts and titles on the dialogs of the installation wizard to create a uniform appearance for your software product setups.
- Excelsior Installer for Linux
-
The JetPackII wizard is now able to directly generate self-extracting installation executables for Linux. They are powered by Excelsior Installer which provides very effective compression to reduce the size of the installation package.
Note: Excelsior Installer for Linux only has command line interface. The graphical installation wizard found in the Windows version is not yet ported.
Improvements over previous versions
- Better performance and lower memory usage
-
The new global optimizer integrated with the core AOT compiler performs whole program optimizations and creates an executable that includes your application's classes and the required Java platform classes.
This technique provides higher application performance and lower memory footprint.
Note: reduction in memory footprint under Linux is significant (up to 60%), whereas under Windows it is less prominent (up to 10%)
- Ease-of-use improvements
-
Now you can use Excelsior JET Launcher for quick setup of Excelsior JET projects. The Launcher has the same interface as the standard java launcher but instead of immediately running the program, it collects the app settings, such as the classpath, main class, working directory and so on, and invokes the JET Control Panel.
This simplifies project creation to a great extent because most of required settings are extracted from the java launcher's command line automatically.
The new Excelsior JET Launcher is the easiest way to set up a project if your Java application is run through a complex script file.
To start the Excelsior JET Launcher, use its full path name, e.g.
JET-Home/profile1.5.0_6/jre/bin/java
and specify the same arguments as for the standard java launcher.
- JIT compilation speeded up
-
JIT compilation is now 3-5x faster thanks to a newly implemented technique of linking the JIT-ed code.
It is crucial if your Java app must load classes dynamically, e.g. if it uses third-party plug-ins or proxies generated at run time.
- Customer issues addressed
-
Thanks to all Excelsior JET community members who gave us feedback on the previous versions of our product.
Compliance testing
SUSE Linux Enterprise Server 9 is added to the list of platforms on which Excelsior JET has passed the Java Compatibility Kit test suite (JCK) for Java SE 5.0.
Changes in pricing and licensing
Starting from version 4.5, all Excelsior JET purchases include one year of support and upgrades. The price list has been adjusted accordingly.
15-Dec-2005: Excelsior JET 4.1
This release improves ease-of-use of the entire Excelsior JET toolchain and makes a number of customer-requested enhancements to the Excelsior Installation Toolkit. The core engine has been left intact, except for bug fixes.
Java SE version support
Excelsior JET 4.1 supports Java SE 5.0 Update 5 (1.5.0_05) and 1.4.2_10*.
Ease of use improvements
- Working with separate resources simplified
-
In the previous versions of Excelsior JET, the procedure of compiling and deploying applications with separate resources, such as directories containing images or media files, was error-prone. Specifically, such applications required a run script to launch on the developer system, and adding separate resources to the installation package was complicated.
Now JET Control Panel always produces clickable executables, and JetPackII enables you to add separate resources to the installation in two mouse clicks.
- Automatic conversion of previously created JetPackII projects
-
JetPackII can now read projects (.jpn files) created for another version of J2SE. Formerly, one had to remove the compiled executables from the project and add them again to retain project settings.
- Automatic opening of an appropriate JetPackII project
-
When starting JetPackII from within the JET Control Panel, the project last used for packaging the application is now automatically opened.
Improvements of Excelsior Installation Toolkit
- Updating client installations simplified
-
"Third-party installer, single root" and "Self-contained directory" are merged into a single control of JetPackII. Deployment of updates for this type of installations can be now reduced to simply copying to the target system the files prepared by JetPackII. In previous versions of the Installation Toolkit, it also required performing certain post-install actions by the third-party installation tool in use.
- New shortcuts in update packages
-
When updating client installations, Excelsior Installer can now add shortcuts to new files included in the updates prepared with JetPackII.
- Installation of Windows services simplified
-
Using the JetPackII wizard, you can now specify default arguments for Windows services included in the installation. In addition, the "Windows services" dialog of Excelsior Installer is simplified to enhance the enduser's experience.
- Unattended unistallation
-
Uninstallation procedure can be now run in the batch mode for the packages installed by Excelsior Installer.
- Chapter "Deployment Automation" reworked
- The Chapter "Deployment Automation" in the Excelsior JET User's Guide has been thoroughly reviewed and edited to ensure readability, completeness and accuracy.
New features (Professional Edition only)
- Generating trials
-
Now you can create a trial version of your Java application that will expire in a specified number of days after build. As soon as the trial period is over, the application shows the expiration message of your choice upon startup and then exits. The functionality is available through the JET Control Panel or the command line compiler.
- Shortcuts to any file with any icon
-
When preparing an Excelsior Installer setup, you can now add shortcuts to any file from the installation and assign it any icon. For example, you can now customize the icon for the uninstall shortcut in Program Folder. The functionality is available through the JetPackII wizard.
- File associations
-
When preparing an Excelsior Installer setup, you can specify a program from the installation to be associated with a particular file type depending on the file name extension. The functionality is available through the JetPackII wizard. If a file association was specified, Excelsior Installer will display a dialog that shows the file name extensions, description of the associated programs and checkboxes to enable/disable a particular association.
Other improvements
- Linux system requirements unified
-
The inconvenience that the versions of the Linux system libraries on the developer system must be not higher than the versions of those libraries present on enduser systems, is now removed.
- Customer issues addressed
-
Thanks to all Excelsior JET community members who gave us feedback on the previous versions of our product.
29-Sep-2005: Excelsior JET 4.0
Excelsior JET 4.0 has passed the Java Compatibility Kit test suites for J2SE versions 5.0 and 1.4.2 and is certified Java Compatible by Sun Microsystems.
This has enabled us to become a Java Authorized Licensee and include the Sun Java API implementation in Excelsior JET.
New Features and Improvements
- Simplified deployment for all Java applications
-
Optimized applications no longer need the Sun JRE bundled into the installation package or preinstalled on the target system.
As a result, the download size has reduced for applications that used to require the Sun JRE if optimized by a previous version of Excelsior JET. See below for details.
- Substantial compatibility improvement
-
The compliance of Excelsior JET to the J2SE specifications has been verified through passing the Java Compatibility Kit (JCK) test suite.
- More flexible garbage collection policy *
-
The amount of available physical memory is considered when scheduling garbage collection. That effectively makes the default memory settings suitable for most target systems.
- InstantSplash *
-
A native splash screen image of your choice displayed at the very startup of the main executable (Professional Edition only.)
- French language support in Excelsior Installer *
-
You may now create installers supporting English, German, French, Russian and Japanese interface languages.
- Download size reduction
-
New compression algorithm in JetPackII/Excelsior Installer (Professional Edition only.) See below for details.
- Precompiled profile
-
You may now begin using Excelsior JET right after installation, without running JET Setup to create a profile.
- Reliability and robustness improvements
-
Customer issues have been addressed.
Items marked with (*) were implemented after customer requests. If you want to share with us any ideas for product improvement, make sure to fill out our Feature Request form.
Restrictions and Removed Features
- No support for legacy J2SE versions
-
Our Java Technology License only covers J2SE 5.0 and 1.4.2, so Excelsior JET 4.0 no longer supports J2SE 1.3.x, 1.4.0, and 1.4.1.
Moreover, future versions of Excelsior JET released after December 31, 2005 shall not support J2SE 1.4.2 either. We can however continue selling version 4.0. Our recent survey has revealed that a number of customers have not moved to J2SE 5.0 yet. We therefore plan to continue shipping and supporting Excelsior JET 4.0 in 2006, in parallel with the newer versions.
Finally, if there will be enough customer demand, we can pay Sun an additional fee and provide support for J2SE 1.4.2 in the future versions of Excelsior JET through a separately priced add-on.
- No Java API subsetting
-
The Java Technology License prohibits subsetting the Java API. This means you will no longer be able to omit any of Excelsior JET runtime components when packaging your application for deployment.
- No JetPerfect Global Optimizer
-
For the same reason, the JetPerfect Global Optimizer add-on will not be commercially available starting from Excelsior JET 4.0. This implies that you will not be able to create a single, all-inclusive binary executable for your application or component, even if you do not care about its size.
However, you will be able to create an all-inclusive directory that contains your executable and necessary runtime support files and can be deployed to other systems by a simple copy operation.
- Embedded use restrictions
-
The Commercial Use License prohibits embedding the J2SE Technology into devices of certain types, such as cell phones, PDAs, TV, set-top boxes, etc. Other embedded uses are subject to royalty payments based on the number of units or concurrent users.
Note: We must stop selling Excelsior JET 3.7 as soon as we release Excelsior JET 4.0. We will continue supporting the existing customers of version 3.7 and previous versions.
| Download Size Change Figures | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Using "Hello, World" as a baseline and JEdit (www.jedit.org) as a Swing fat client sample, we have created complete Excelsior Installer packages that may be deployed on a "clean" target machine (that is, without Sun JRE installed).
|
||||||||||||||||||||||||||||||
21-Mar-2005: Excelsior JET 3.7 Released
- Support for the latest Java 2 versions
-
Excelsior JET 3.7 supports all J2SE 5.0 (Tiger) features on both Windows and Linux. 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.
- New runtime optimized for parallel execution
-
Excelsior JET 3.7, Professional Edition introduces a new runtime library optimized for parallel execution. The new runtime is available in three flavors tuned for different application types and hardware configurations:
- The Desktop Runtime is optimized for use in applications typically running on conventional desktop and notebook computers, such as rich clients.
- The Workstation Runtime is best suited for technical client applications such as visualization and engineering design, which often run on high-end graphic workstations.
- The Server Runtime enables your highly concurrent server applications to take full advantage of the computing power available in today's multiprocessor servers.
The runtime library found in the previous versions of Excelsior JET is also available under the name of Classic Runtime.
The Desktop and Classic Runtimes may be freely redistributed as part of your compiled application, whereas the production use and redistribution of the Workstation and Server Runtimes requires payment of runtime license fees.
Excelsior JET 3.7, Standard Edition only includes the Classic Runtime.
- Application performance improvements
-
64-bit integer type support has been rewritten to make better use of CPU registers. 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:
- priority-based code placement
- register allocation
- loop optimizations
Faster synchronization primitives have been implemented.
Below are the results of benchmarking Excelsior JET 3.7 against the previous version.
See also the results of benchmarking Excelsior JET 3.7 against the latest Sun HotSpot and BEA JRockit JVMs.
| SYSTEM CONFIGURATION |
| CPU: | Intel Pentium IV with HyperThreading running at 2.40 GHz | |
| RAM: | 512 MB | |
| OS: | Windows 2000 Professional | |
| Video: | RADEON 9200 SE 64MB at 1024x768x16777216c |
| RESULTS |
Longer bar means better performance.
| JET 3.7 | JET 3.6 | ||
|---|---|---|---|
| JFCMark | 100% | 100% | |
| JNI | 97% | 100% | |
| SciMark | 131% | 100% | |
| SPEC JVM98 | 111% | 100% | |
| XML | 106% | 100% |
| SYSTEM CONFIGURATION |
| CPU: | AMD Athlon XP running at 1.0 GHz | |
| RAM: | 512 MB | |
| OS: | Windows 2000 Advanced Server | |
| Video: | S3 Virge DX/GX at 1024x768x16777216c |
| RESULTS |
Longer bar means better performance.
| JET 3.7 | JET 3.6 | ||
|---|---|---|---|
| JFCMark | 102% | 100% | |
| JNI | 97% | 100% | |
| SciMark | 120% | 100% | |
| SPEC JVM98 | 109% | 100% | |
| XML | 104% | 100% |
- 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.
At the same time, the following auxiliary features have been removed from the Standard Edition:- NT Services toolkit
- Memory manager fine tuning options
- Support for multiroot projects in JetPackII
These features are present in the Professional Edition and will remain so.
Finally, the JetPerfect Global Optimizer has become a free optional add-on to the Professional Edition.
See also Excelsior JET 3.7 Feature Matrix
- Faster AOT and JIT compilation
- Refactoring the internal representation has resulted in reduced memory consumption and improved compilation speed
- Executable size reduction
- This is a nice side effect of improvements in code optimization.
- Movable JetPackII projects
- JetPackII now can assist you in moving your project to an environment where locations of package files are different, such as a build server.
12-Jul-2004: Excelsior JET 3.6 Released for Windows and Linux
New platform:-
Linux on the Intel x86 (IA-32) architecture is now supported as the host
and target platform.
New features:
- All-new fast JIT compiler introduced
- Preliminary support for J2SE 1.5 (Tiger) Beta implemented
Update: Full support for Tiger will only be available in Excelsior JET 3.7 - Support for the latest J2SE 1.3.x and 1.4.y microversions implemented
Improvements over previous versions:
- Breakthrough stability improvements: obfuscated bytecode is no longer an obstacle for using JET
- Faster compilation of large methods
- Optimizations crucial for code/data size carefully re-designed, which resulted in 10-20% reduction in size of generated executables.
- Floating point expressions are now evaluated in accordance with the Java spec. Option GENEXTENDEDFP controls whether FP values may be stored with higher precision.
- Improved performance for certain application types
- New sample (Rhino scripting engine) using the fast JIT compiler added
- Important compatibility improvements and bug-fixes
Excelsior JET 3.6 Release Candidate 2 Available
First public preview of v3.6 for Windows. Version for Linux fixes many bugs reported by RC 1 users (many thanks for your feedback!) and found by our engineers, plus it was tested on the recently released Fedora Core 2. It appeared. however, that Fedora Core 2 has bugs that make Excelsior JET 3.6 working unstable on many systems.
Excelsior JET 3.5 MP3 Available
Excelsior JET 3.5 Maintenance Pack 3 is an optional update that adds support for J2SE 1.3.1_11, 1.4.2_04, enables installation of the Server Runtime beta and fixes multiple customer issues.
Excelsior JET 3.5 for Windows Released
Version 3.5 is a major release aimed at improving application performance and the product's ease-of-use.
New features:
- Support for the latest J2SE 1.3.x and 1.4.y microversions implemented
-
Endorsed Standards Override Mechanism is supported
You can now replace XML and CORBA APIs with newer versions
- xjava launcher (similar to the JRE "java" tool) with JIT cache optimization interface introduced (Professional Edition only)
- Ease-of-use of the JetPerfect Global Optimizer
(available in the Professional Edition only) has improved:
- "feedback mode" for troubleshooting optimized executables
- human-editable forced usage list
- support for locale groups
- Management of product updates/hotfixes installed over the original version is now possible through JET Setup
- Exception stack trace may now optionally include source file names and line numbers (at the expense of executable size growth)
- JetPackII and Excelsior Installation Toolkit improvements:
- support for Unicode License Agreement in JetPackII and Excelsior Installer
- support for deployment of JIT Cache in JetPackII (Professional Edition only)
- JRE Lookup API provided for use with third-party installers
Improvements over previous versions:
- Improved performance (as compared with previous versions, speedup ranges from 1 to 20% on a variety of benchmarks and real world applications)
- Important stability improvements and bug-fixes
Excelsior JET 3.15 MP3 Available
Excelsior JET 3.15 Maintenance Pack 3 is an optional update that adds support for JRE 1.4.2_02, 1.4.2_03, 1.4.1_06 and 1.3.1_10 and fixes multiple customer issues.
Excelsior JET 3.6 Release Candidate 1 for Linux Available
Beside bug fixes and stability improvements, 3.6 RC 1 adds JetPackII deployment wizard and support for latest J2SE microversions.
Excelsior JET 3.6 beta 2 for Linux Available
3.6 Beta 2 introduces new fast JIT compiler, adds command-line JET Setup and support for latest J2SE microversions. List of test platforms now includes Mandrake 10.0.
Excelsior JET 3.6 beta 1 for Linux Available
3.6 Beta 1 adds support for NPTL and JET Control Panel. Test platforms now include RedHat 9 and Fedora Core 1.
Excelsior JET 3.5 beta 3 for Linux Available
Beta 3 fixes numerous bugs found in the previous betas. Also available is the Linux version of the build environment for Enhydra 5.0 application server, which is a part of the Excesior JET test suite.
Excelsior JET 3.5 beta 2 for Linux Available
The Linux beta of Excelsior JET is updated with fixes addressing bugs, performance degradation and binary (in)compatibility between Linux versions and distributions.
Excelsior JET 3.5 beta 1 for Linux Available
First public beta of Excelsior JET for Linux is available for download.
Excelsior JET 3.15 MP2 Available
Excelsior JET 3.15 Maintenance Pack 2 is an optional update that includes the functionality of Maintenance Pack 1 and addresses the latest customer issues.
Excelsior JET 3.15 MP1 Available
Excelsior JET 3.15 Maintenance Pack 1 is an optional update that adds support for JRE 1.4.2_01, 1.4.1_05 and 1.3.1_09 and fixes multiple customer issues.
Excelsior JET 3.15 English Available
Excelsior JET 3.15 is a maintenance update adding support for J2SE 1.4.2 and addressing customer issues. Upgrades are free for registered users of version 3.11.
New in this version:
- Support for J2SE 1.4.2 and the latest 1.3.1 and 1.4.1 microversions
- Command-line interface to JetPackII enables unattended creation of installation packages, e.g. from build scripts
- JetPackII and Excelsior Installer now support the creation of shortcuts in the Startup folder
- Important stability improvements and bug fixes
Excelsior JET 3.11 Japanese version available
Excelsior JET 3.11 Japanese version is available exclusively from XLsoft KK - our localization partner and reseller in Japan.
JRE Microversions update for Excelsior JET 3.11
An Excelsior JET 3.11 update adding support for J2SE 1.3.1_08 and 1.4.1_03 is available for download.
Excelsior JET 3.11
Excelsior JET 3.11 is an important update focused on application deployment facilities and compatibility.
New features:
- Support for the latest J2SE 1.3.x and 1.4.y microversions
- JIT cache optimization - applications that extensively use custom classloaders may now be pre-compiled entirely with the JET ahead-of-time compiler
New customizable Excelsior Installer utility for JET-compiled applications
and NT services- New full-featured JetPackII deployment wizard supporting Excelsior Installer and facilitating the use of third-party installation tools
Improvements over previous versions:
- Improved performance
- Smaller executables
- Important stability improvements and bug-fixes
Excelsior JET 3.0 JNI Version Fix
A fix is available that makes Excelsior JET 3.0 compatible with JNI 1.1. It is required for applications that use the latest version of IBM SWT to work.
Excelsior JET 3.0
New features:
- Full support for the latest J2SE 1.3.x and 1.4.x microversions
- JIT compilation may be enabled even for explicitly imported classes via reflective shield (Professional Edition only)
- Executable image optimization for faster application startup and reduced memory consumption (Professional Edition only)
- Support for large heaps (up to 1.5GB)
- Scalable parallel garbage collector for n-way systems (Professional Edition only)
- Toolkit for creating Windows NT Services
- Support for CD-based applications and NT Services in JetPack
- Ability to use JET with multiple JDK/JRE versions on a single system and easily switch between them
- Java-VB6, Java-VBA integration (see samples\invocation\COM)
- Dynamic class loading across precompiled executable components is fully supported via class to DLL mapping (see samples\DLL\dynamic)
- Proper support for custom classloaders
Improvements over previous versions:
- Improved performance, especially for Swing applications
- Smaller executables
- Application memory consumption significantly reduced thanks to more sophisticated garbage collection policy
- Faster garbage collection
- Compiler's memory requirements lowered
- Key customer issues addressed
New Support Option Introduced
With the release of JET 3.0, we are introducing a new support option - 30-days Getting Started Support. It includes unlimited answers to your technical questions over email, sent within 30 days since first contact. After the end of this 30 days period, only defect reports will be accepted, but you will be able to purchase support incidents on demand and access self-help tools.
This new support option is much less expensive than Standard Support. For instance, Excelsior JET 3.0, Professional Edition with Getting Started Support costs $750 if purchased as a download (upgrade from v2.x is $375).
Check out all Excelsior JET 3.0 prices here.
New in Excelsior JET 2.51
July 5, 2002 - Excelsior JET 2.51, available now, is a minor update featuring:
- Support for J2SE 1.4.0_01
- Cumulative JetPack Update
Note that v2.51 does not incorporate compiler fixes found in the Maintenance Pack 1.
IBM SWT is now supported
May 27, 2002 - Excelsior JET, Professional Edition now allows you to create JRE-independent GUI applications in Java using the IBM SWT library!
Maintenance Pack 1 Is Available
May 27, 2002 - Excelsior JET 2.5 Maintenance Pack 1 (MP1) is available for download. MP1 fixes compiler problems reported and discovered after the original Excelsior JET 2.5 release.
Prices Drop On Additional Licenses
April 22, 2002 - Based on recommendations and feedback we have received from corporate resellers, industry analysts, and members of the media, prices for additional Excelsior JET licenses have been greatly reduced. Now, four individual licenses would cost you just two times the price of a single license (was 3.5+ times) and an eight developers team may be JET-powered at the cost of three separate licenses (was 6.5+).
Note, however, that purchase of one additional license does not entitle you for designation of an additional Support Contact. More precisely:
| If you own... | then you may designate... | |
| from 1 to 3 licenses, | 1 Support Contact | |
| from 4 to 7 licenses, | up to 2 Support Contacts | |
| 8 or more licenses, | up to 3 Support Contacts | |
| a Site License, | up to 5 Support Contacts |
You may designate additional Support Contacts at extra cost if necessary.
For more information, please contact our Sales Dept.
Check out new prices: Professional Edition Standard Edition
New in Excelsior JET 2.5
Excelsior JET 2.5 is a major upgrade featuring full support for the latest Java platform APIs introduced in JDK 1.4.0 and contributing significantly to the product's ease-of-use through provision of a graphical front-end.New features:
- Full support for the latest JDK 1.4.0 and all 1.3.x_yy flavors
- Graphical front-end
- Resource binding
- Clickable executables
Improvements over previous versions:
- Faster memory allocation and garbage collection
- Code performance improvements
- Smaller executables
- Reduced memory usage
- JetPacked applications may now create desktop icons and add Start Menu items during install
- Stack backtracing implemented (see the Technical FAQ)
- Delphi-Java integration sample added (samples\Invocation\DelphiMain)
- Key customer issues addressed
New in Excelsior JET 2.1
Version 2.1 is an upgrade that further improves performance, scalability and reliability of your Java applications natively compiled with Excelsior JET. Also introduced at this version level is the Personal Edition.
Improvements not specific to a particular Edition:
- Overall application performance improved
- Application memory consumption reduced
- Faster memory allocation and garbage collection
- Smaller application executables
- Adaptive heap limit introduced
- Compilation speeded up and needs less memory
- Option IGNORECLASSDUPLICATION introduced for better compatibility with JVM
- Import libraries are no longer needed when using dynamic linking
- Latest JDK 1.3.1_01 is supported
Professional edition only:
- Truly standalone executables for non-GUI apps (vs. JRE-independent in JET 2.0)
- JetPerfect Global Optimizer now works faster and produces smaller executables
New in Excelsior JET 2.0, Professional Edition
New version of Excelsior JET delivers powerful features that enable developers to dramatically improve performance, scalability and code protection of any Java 2 application on the Microsoft Windows platform.
Excelsior JET 2.0, Professional Edition is a breakthrough release that includes:
- Mixed Compilation Model, unique on the Windows platform, for full support of Java dynamic class loading and related APIs
- JRE-Independent Executables for non-GUI applications
- Support for JDK 1.3.1
Mixed Compilation Model provides complete support for dynamic class loading, effectively making 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 loading of classes.
New in JET 1.03
This is a maintenance release, tested with the latest Sun JDK refresh (version 1.3.0_02). It also fixes a few bugs.
Note: JET no longer supports JDK 1.3.0_01.
New in JET 1.02
- All known localization problems fixed (Japanese, Chinese, Korean, European, etc.)
- JetPack-created SFX executables now contain a GUI installer
- Memory consumption reduced
- Bug fixes
New in JET 1.01
- New benchmark, JET-compiled javac, added (JET/Samples/Bench/PerfectJAVAC). See below the results of benchmarking against the most current Sun and IBM JVMs and IBM Jikes compiler (written in C++)
- Oracle JDBC drivers tested (JET/Samples/JDBC)
- Samples for XML parsers and XSLTransform added (JET/Samples/XML)
- Samples for compiling Java Standard Extensions added:
COMM API, JavaMail, JavaHelp, Java3D
For details, see JET/Samples/JavaExtensions - Updated version of JetPack
- Bug fixes
We measured the time required to compile the sources of Sun's javac Java to bytecode compiler with javac itself, on latest Sun and IBM JVMs, with javac compiled by JET, and with IBM Jikes compiler (written in C++). All tests were run on the same system equipped with an Intel Celeron processor running at 375MHz and 320 MB RAM, under control of Windows 2000 Professional.
| Compiler | Execution Environment | Heap size | Time, sec |
|---|---|---|---|
| Sun javac from JDK 1.3 | Native EXE (JET-compiled) | 20 MB | 5.2 |
| Sun HotSpot JRE 1.3 | 20 MB | 11.2 | |
| IBM JRE 1.3 with JIT enabled | 20 MB | 20.1 | |
| IBM Jikes 1.12 | Native EXE | - | 7.2 |
As you may see, JET-compiled javac outperformed by far not only itself executed on the state-of-the-art JVMs, but also, to our big surprise, the Jikes compiler, which is written in C++.
New in JET 1.0 Final Release
- Project for IBM Xeena compilation added to samples
- Serialization speeded up
- Compilation of fuzzy jars now supported (see FAQ)
- Project system usage samples added (see samples\PrjSys)
- Bug fixes
New in JET 1.0 Release Candidate
Major improvements
- Memory consumption considerably reduced (applications work with lower values of HEAPLIMIT without throwing OutOfMemoryError)
- Improved performance
- Recursive method optimizations implemented
- Plenty of bug-fixes
Minor improvements
- JetPack GUI (jetpacker.exe)
- Ability to bind an icon to EXE (see FAQ)
- The option COMPILERTHRES removed as superfluous
New in JET version 0.9
Major improvements
- Full Java 2 platform support (CORBA was added thus all JDK 1.3 standard classes are now supported; see Samples\CORBA)
- Start-up time significantly reduced
- Improved performance
- java.lang.ref support implemented in GC (weak references)
- JetPerfect memory consumption and compilation time considerably reduced
- Plenty of bug-fixes
- User's Guide updated
New in JET version 0.7
Major improvements
- JDK 1.3 support
- Invocation API implemented: you may now call JET-built DLLs from C programs (see JET\Samples\Invocation)
- Ultra-fast synchronization (overheads reduced by a factor of 2)
- java.rmi packages support (see JET\Samples\RMI)
- Performance of JetPerfected apps improved dramatically
- Memory manager redesigned: the option GCTHRESHOLD is no longer needed
- Considerable performance improvements
- Plenty of bug-fixes
Minor improvements
- Smart recompilation (the "all" submode is not always required now)
- Properties for GC control added: jet.gc.heaplimit (sets HEAPLIMIT at startup), jet.gc.defragment (decreases memory consumption in exchange for GC slowdown)
New in JET version 0.68
Major improvements
- HotSym(tm) compilation technology greatly reduces time/memory consumption.
Resources required to compile Sun's javac with JET:



Version RAM Time 
0.62 100M 9.36 min 0.68 30M 2.02 min - Fast thread synchronization causes overhead per synchronized
method reduced by a factor of 5.
As a result, single-thread run-time DLL (XJDK153S.DLL) is no longer needed.
- Run-time DLLs shrinked again:



DLL v0.62 v0.68 
XJDK153.DLL 5.19M 4.25M (-18%) XAWT153.DLL 3.97M 3.30M (-17%) XSWING153.DLL 5.38M 3.88M (-28%) - Application startup time improved
- Fully tested on Windows 2000
- A lot of bug fixes
New features
- JetPerfect facility supporting global optimizations and smart
single component linking (alpha version, recommended for console
apps)
With JetPerfect enabled, JET compiles "Hello world!" to a 567KB EXE file (against 7KB EXE plus 5.1M DLL in version 0.62)
- JetPack utility for easy deployment
Minor improvements
- Properties setting in environment variable:
SET JETVMPROP=-Dp1name -Dp2name=p2value - GC anchor tracing (the jet.gc.anchor.trace property enabled) allows you to determine "heap weight" of static fields
New in JET version 0.62
Performance improvements (intrinsic functions implemented)
Several bugfixes
New in JET version 0.61
JET is now capable of compiling class files produced by either
- javac from Sun JDK 1.2.x
- javac from Sun JDK 1.3 or
- IBM's Jikes
A lot of minor compiler bugs had been fixed
Some JDK symbol files accidentally omitted in v0.6 are now included
New in JET version 0.6
More JDK packages are supported:
javax.swing
Plenty of bugs has been fixed
Minor performance improvements
New in JET version 0.51
Major fixes
- AWT applications did not work under Windows 95/98
- AWT applications compiled with +GUI failed (+GUI forces running without a console window)
- The properties user.home and user.name were not set
- Objects serialized to a file by JVM could not be deserialized by a JET-compiled application.
Improvements
- Dynamic registration of native methods is implemented
- Size of run-time DLLs is reduced:



DLL v0.5 v0.51 
XJDK.DLL 5.22M 4.78M (-8%) XAWT.DLL 9.30M 4.71M (-49%) - Null pointer checking with zero overhead is implemented
New in JET version 0.5
Java specific object-oriented optimizations are implemented
Dynamic memory allocation and garbage collection speeded up
More JDK packages supported:
java.util.zip
java.lang.reflect
java.net
java.awt
Object serialization is implemented
Beta-version of java source code front-end is included
