Excelsior JET 12 To Introduce Profile-Guided Optimization

To the best of my knowledge, the HotSpot VM was the first managed runtime to popularize the idea of selective JIT compilation based on a live application execution profile. Basically, it only compiles to native code the repeatedly or frequently executed parts of the application — hot spots. The idea was so central to the design of the VM that it was reflected in its name. The HotSpot VM also continually collects lots of other information about the running program, enabling many object-oriented and traditional optimizations in the JIT compiler, such as inline substitution of method calls.

At the same time, all the widely used implementations of C and C++, the most ubiquitous among the statically (i.e. Ahead-Of-Time) compiled languages, also implement profile-guided optimization, or PGO for short. The only principal difference is that profiling occurs on the developer’s system, as a separate step of the build process, and the respective overhead is not passed over to all the end-user installations of the optimized application.

So it was just a matter of time before we would add PGO to our Ahead-Of-Time Java compiler. Please meet and greet PGO-enabled Excelsior JET 12, now available for early access:

Download beta 2 | Notable Changes | Profile-Guided Optimization

Our tests show that PGO can deliver substantial application performance improvements, especially when combined with the Global Optimizer, which has finally found its way to the 64-bit x86 and ARM versions of the compiler. But we have also seen examples of PGO making no difference. Therefore we encourage you to try the beta against your applications, and would be most grateful for your feedback!

Categories: Excelsior JET, News

Tags: , ,

Now Excelsior JET Has Got a Gradle Plugin Too

If you use Gradle to build your Java applications, read on to learn how to compile them down to optimized native executables by pasting a few lines into your Gradle script.

Read the rest of this entry »

Categories: Excelsior JET, Open Source

Tags: , , ,

Excelsior JET 11 Beta 2 Adds A Long-Awaited Feature

We have published Excelsior JET 11 beta 2 for all five platforms.

Version 11 Highlights

  • Java SE 8 and JavaFX 8 support
  • 99.9999% of JCK8 tests passed

New in this beta

  • Startup time improvement technologies are now available in the 64‑bit versions as well.
  • Command-line interface to JetPackII. After a long last, you can package your apps without invoking the JetPackII GUI:

    xpack -add-file c:\work\MyApp\native\MyApp.exe /bin ^
          -backend excelsior-installer ^
          -company MyCompany ^
          -product MyProduct ^ 
          -eula c:\work\MyApp\MyApp.license ^
          -target c:\work\MyApp\installer\MyApp-setup.exe

    Version 11 will not support some features of the JetPackII GUI, but we plan to add them all later.

Known Issues

  • Startup Accelerator is missing in the OS X version and will be added at some point after release.
  • JET-8055: On Linux, application may crash if run from a directory with spaces in the pathname and the Startup Accelerator is enabled.
  • JET-8040: Eclipse RCP applications may not work on 64-bit Ubuntu if created with Eclipse 4.3

Download Excelsior JET 11 beta 2 Now

Categories: Excelsior JET, News

Tags: , , , ,

Excelsior JET 11 beta 1 Available

We have released the first public beta of Excelsior JET 11 for three platforms: Windows/x86, Linux/x64 and OS X. Future betas and the final release will support 64‑bit Windows and 32‑bit Linux as well.


  • Java SE 8 and JavaFX 8 support
  • 99.999% of JCK8 tests passed

Not in this beta

Features planned for version 11 that are not yet ready for beta testing:

  • Startup time improvement technologies in the 64‑bit version
  • JetPackII command-line interface

Known Issues

  • In the Windows version, the JET Setup welcome screen displayed after the installation bears a wrong Java SE version, 7 Update 76, instead of Java SE 8 Update 40. It is safe to proceed.
  • The methods Thread.suspend() and Thread.resume() are not implemented yet. (They have been deprecated since forever, so you should not be using them anyway.)

Download Excelsior JET 11 beta 1 Now

Categories: Excelsior JET, News

Tags: , ,

The Number of Garbage Collectors in Excelsior JET Is About to Double

Over the years, Sun and Oracle engineers have developed so many different garbage collection techniques for the HotSpot VMs — from Uniprocessor Train GC algorithm to Parallel Scavenge to (incremental) Concurrent Mark Sweep to Garbage First — that Oracle had to deprecate certain combinations in Java 8 and will remove them in Java 9. And all these techniques have dozens of tuning options.

Meanwhile, our Excelsior JET JVM have always had a single hybrid garbage collector, roughly defined as incremental concurrent-mark parallel-sweep compact. We've also deliberately kept the number of tuning options to a minimum. Customers can attest that our approach is good enough for many real-world scenarios, and appreciate the simplicity of configuring our GC.

The above does not mean we have not been working on anything better. The number of available garbage collectors will double in Excelsior JET 10.5, to be released in early February.

Meet the CoreBalance™ Garbage Collector

We have designed the all-new CoreBalance™ GC from the ground up to utilize multi-core CPUs. The result is shorter “stop-the-world” pauses and overall reduction of garbage collection overhead:

We have posted a public beta of Excelsior JET 10.5 to our web site today, so you can try out the new GC.

Categories: Excelsior JET

Tags: , , , ,

Weekend Fun: Help Robotality Beta Test a Native Build of Their Desktop Java Game

Halfway is a futuristic turn-based strategy RPG from Robotality. It is written in Java using libGDX and is available for Windows, OS X, and Linux.

If you are into this kind of gaming, Robotality just published native builds of Halfway in the beta section, so you can give Halfway a shot for free before heading over to Steam to buy it. (Update: It turns out betas are only available to those who bought the game. Sorry.) We would greatly appreciate your feedback, because, as you may have guessed, those native builds were done with Excelsior JET:

Using JET to compile a native version has been enjoyably straightforward. Once set up, creating a build is a matter of pointing it to the game code & assets, and have it spit out an archive or installer with a native executable a few minutes later.

— Daniel Ludwig, Robotality

Happy gaming!

Categories: Customer Showcase

Tags: , , ,

64-Bit Excelsior JET: Beta 3 Available, JCK @100%

I am very pleased to report that the 64-bit version of Excelsior JET has passed the JCK! That means that nothing precludes us from shipping it commercially, from the legal standpoint. However, our own test/benchmark suite still points to a few issues that we need to fix before the final release.

As far as application performance is concerned, the 64-bit optimizing compiler has handled 97% of all methods in our internal beta 3 tests. There is still vast room for improvement, as we have not yet implemented a number of optimizations. But we believe it is good enough for many of you, so please do your own tests and tell us whether that is true!

Known Problem

In some rare circumstances, the beta 3 compiler may run out of memory. We have already identified the root cause, but the fix has arrived a bit too late for the beta 3 train. To work around that problem, add the following line to the top of the project build script created by the JET Control Panel:

set jetvmprop=-Djet.gc.heaplimit=1024m

and run that script to build your project.


The best way to report a bug is to select the Open Support Ticket item in the Help menu. That would automatically fill in the fields concerning your operating system version and hardware configuration.

Please direct all other feedback to java@excelsior-usa.com, or post it in the comments below.


Excelsior JET 8.0 Beta 3 for 64-bit Windows
(102 MB)

Categories: 64-bit

Tags: ,

64-bit Excelsior JET: Beta 2 Available

Update: The latest early access build is now Beta 3.

The optimizing compiler now handles about 80% of all methods, and produces better code.

Want more numbers? The JCK is at the 99.9% mark. Almost there!

Categories: 64-bit

Tags: ,

64-bit Excelsior JET: Beta 1 Available

Update: The latest early access build is now Beta 3.

What’s new:

  • The Excelsior JET Control Panel is back, and so are JetPackII and Excelsior Installer.
  • Tomcat Web applications and Eclipse RCP based applications are supported, e.g. Eclipse 4.2 Classic (Juno) works.
  • Application performance has improved to some extent, but the optimizing compiler remains our top priority…

Categories: 64-bit

Tags: ,