InfoQ

News

Excelsior JET 6.4: Smaller, Faster, More Secure Java

Posted by Craig Wickesser on Jun 24, 2008 08:03 PM

Community
Java
Topics
Performance & Scalability ,
Compilers ,
Security
Tags
Excelsior Jet ,
JVM
Excelsior was founded in 1999 and has recently released version 6.4 of Excelsior JET. This latest version includes several worthwhile features such as Encryption of Data and Resources, Startup Optimizer and Smart Compilation.

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.

2 comments

Reply

Updated Performance Results by craig w Posted Jul 6, 2008 7:06 PM
Re: Updated Performance Results by Mercedes zephone Posted Nov 20, 2008 4:51 AM
  1. Back to top

    Updated Performance Results

    Jul 6, 2008 7:06 PM by craig w

    I just got word from Dmitry that he has updated information regarding Excelsior JET compared to other VM's:

    www.stefankrause.net/wp/?p=9

  2. Back to top

    Re: Updated Performance Results

    Nov 20, 2008 4:51 AM by Mercedes zephone

Exclusive Content

Clojure

Rich Hickey discusses Clojure features and syntax, example code, functional programming, concurrency semantics, transactions, software transactional memory, agents, implementation and pain points.

Composite Oriented Programming with Qi4j

We introduce the concept of Composite Oriented Programming, and show how it avoids the issues with OOP and reignites the hope of being able to compose domain models with reusable pieces.

Dan Farino About MySpace’s Architecture

Dan Farino talks about the system architecture and the challenges faced when building a very large online community. Dan explains how a .NET product scales on hundreds of servers.

Principles and Practices of Lean-Agile Software Development

Alan Shalloway, CEO and founder of Net Objectives, presents the Lean software development principles and practices and how they can benefit to Agile practitioners.

The Maxine VM

Bernd Mathiske discusses Maxine VM, Java compatibility, swapping major VM components, research areas, Object handling, code examples, optimizing compiler, snippets, bytecode generation, JNI and JIT.

Joe Armstrong About Erlang

Joe Armstrong speaks on various aspects of the Erlang language, presenting its roots, how it compares with other languages and why it has become popular these days.

The Limits of Code Optimization: a new Singleton Pattern Implementation

The java double-check singleton pattern is not thread safe and can’t be fixed. In this article, Dr. Alexey Yakubovich provides an implementation of the Singleton pattern that he claims is thread-safe.

Pressure and Performance – The CTO's Dilemma

Diana and Jim talk about patterns observed in CTOs' activity. CTOs emerge as real people caring for other people in their organization, and are put under a lot of pressure and constraints.