Encryption of Data and Resources
In previous versions the code was made "secure" as a side effect of the way compiled Java classes were optimized, but this did not protect string literals, reflection information, media files or properties files. In the lastest release all of those things can be encrypted by simple selection an option in the "JET Control Panel". Unlike name obfuscation which can sometimes cause code to become non-functional, Dmitry Leskov, Excelsior Marketing Director, mentions that,
On-demand decryption ensures that reflection and JNI remain fully functional, as opposed to name obfuscation, commonly used for protection of Java applications.With regards to performance loss due to the on-demand decryption, Dmitry stated,
In our measurements, the loss was negligible. But this may change with more sophisticated encryption schemes that we may add in future versions if there will be customer demand.Startup Optimizer
The standard Sun JVM optimizes Java code during run time to increase performance slightly, however, included in Excelsior JET 6.4 is the new Startup Optimizer which can reduce the start up time of an application by a factor of two. Additional information about this functionality can be found in the "Startup Time Optimization" chapter of the Excelsior JET User's Guide.
Smart Compilation
One of the other notable changes made was level 0 "Smart" compilation. To quote the Excelsior website,
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.InfoQ also asked Dmitry about benchmark results to support their claims, as well as, comparing Excelsior JET to other VM's available such as GCJ and Apache Harmony.
We run a number of benchmarks internally, so yes, there are some benchmark results for 6.4, but we have had no time to publish them yet. We'll likely publish SPECjvm2008 results soon. The most recent third-party results that I am aware of are available at http://www.stefankrause.net/wp/?p=6 and include Sun JDK, IBM JDK, BEA JRockit, GCJ, Apache Harmony, and Excelsior JET, run against GCC and Intel C++.Applications written in Java 5 and 6 are supported by Excelsior JET 6.4, while Java 1.4.2 applications can still use Excelsior JET 4.8. As for the future of Excelsior JET, Dmitry has this to say,
We have been working on a major feature that we hope will enable our product to enter a new market segment. We have not had enough time to finish it before this release, hence the version number (6.4 instead of 6.5). We plan to announce that feature and make a beta version available in mid to late July, so stay tuned. :)It's also worth mentioning that Excelsior provides their JET product for embedded applications.