Frequently Asked Questions

What is Excelsior JET?

Excelsior JET is a tool that enables you to compile the classes and jar files comprising your Java application down to a native executable for any of the most popular desktop and server platforms: Windows, OS X, and/or Linux, and package it for deployment.

More formally, Excelsior JET is a commercial implementation of the Java Virtual Machine technology for personal computers and servers based on x86 and x64 (AMD64/Intel 64) CPUs. Its distinguishing feature is a complete, end-to-end Ahead-Of-Time (AOT) optimizing native code compiler. Also included is a deployment toolkit.

Excelsior JET Embedded is a very similar product from the technical standpoint, but its licensing is different, plus it supports 32-bit Linux/ARM targets.

What Excelsior JET is not?

Excelsior JET is not just a packager of Java applications into Windows EXE files or OS X/Linux binaries. It really compiles your Java class files into native x86, AMD64, or ARM instructions. The resulting executables need the Excelsior JET Runtime to run, but not the Oracle JRE.

If all you need is simple deployment of your Java application, check out the article Convert Java to EXE: Why, When, When Not and How.

Who should use Excelsior JET?

Developers and development teams creating client- and server-side software using Java and/or other languages targeting the Java Virtual Machine, deploying their products to x86/x64‑based systems running Windows, OS X, and/or Linux, or to ARM-based embedded systems running Linux, and interested in one or more of the following:

  • Protection of application code against reverse engineering
  • Improvement of application performance
  • Application startup time reduction
  • Improvement of application scalability (e.g. handling more simultaneous connections on the same hardware)
  • Application memory footprint reduction
  • Easy native-style application deployment
  • Reduction of application download size and disk footprint
  • Distribution of Java applications in the form of Windows EXE and DLL files (typical requirement in Microsoft-only shops)
How does it work from the technical point of view?

Excelsior JET consists principally of the following components:

Excelsior JET Optimizer is an ahead-of-time (AOT) compiler that translates your application's classes and jars into optimized native x86, AMD64, or ARM code producing a conventional executable for Windows, OS X, or Linux. The resulting executable starts and works faster and is as hard to decompile as if your application was written in C++.

Excelsior JET Runtime is a complete Java Virtual Machine that implements version 8 of the Java SE platform. In particular, the Runtime includes the Java SE API licensed from Oracle and a dynamic (Just‑In‑Time) compiler that processes Java classes loaded at run time that were not precompiled. The key difference from other JVMs is that the Excelsior JET Runtime can work with both Java classes and native executables produced by Excelsior JET Optimizer. So, for example, your optimized program will be able to load third-party plug-ins supplied in the form of jar files.

Excelsior JET Installation Toolkit enables you to prepare an installation package that includes your optimized Java application and the Excelsior JET Runtime engine. You can use the bundled Excelsior Installer or another installation tool of your choice. No extra software, such as the JRE, is required on end-user machines.

See the Technology Overview for details.

What editions of Excelsior JET are available?

Excelsior JET for desktop/server platforms comes in three Editions:

Excelsior JET, Standard Edition, available for Windows and Linux, provides the minimum set of features required for compiling Java applications to native 32‑bit x86 code and packaging them for deployment.

Excelsior JET, Professional Edition is targeted at the professional developer, maximum application performance, large heaps, reduced download size, and/or other advanced features. It also supports OS X as a target platform.

Excelsior JET, Enterprise Edition adds support for hi-end multiprocessor servers, CoreBalance™ garbage collector, and protected environments for running Eclipse RCP applications and Tomcat Web applications.

Finally, Excelsior JET Embedded has most features of the Professional Edition and enables you to target embedded Windows and Linux platforms.

What are the differences between Editions?

If your Java applications are designed to run on general purpose desktop computers and/or servers, check out the Feature Matrix for side by side comparison of the respective Editions.

You have to use Excelsior JET Embedded if you need to deploy your optimized applications to devices and embedded systems.

What is new in Excelsior JET 15.3?

Excelsior JET 15.3 includes the OpenJDK implementation of the standard Java API instead of the Sun/Oracle implementation found in the previous versions. This is a direct consequence of Oracle changing its Java business model in 2018. Click here for more information.

For the complete list of improvements, see the changelog.

On which system configurations Excelsior JET 15.3 is supported?

Please refer to the System Requirements page for up-to-date information on hardware and operating system support.

What environments Excelsior JET will support in the future?

This depends on certain external factors that we cannot disclose yet. Watch the roadmap for more complete and up-to-date information.

We may also port/retarget Excelsior JET to other CPUs and operating systems on a consultancy basis. Email us if you are interested

What impact Excelsior JET has on my development cycle?

You continue using your favorite tools for the most important stages: design, coding, debugging, and testing, without any changes. Once your application works stable in the Java environment you use for development, such as the Oracle JRE, you optimize and package your program with Excelsior JET, conduct quality assurance testing and deploy it to enduser systems.

Can I use it to compile my application for embedded systems?

Yes, you can. Excelsior JET Embedded enables you to use the Java SE technology in embedded systems.

What Java versions does Excelsior JET support?

Excelsior JET 15.3 supports Java Standard Edition, version 8. The microversion supported out-of-the-box is Java SE 8 Update 181 (1.8.0_181). Updates supporting newer microversions are added regularly.

My application only runs on Java SE 7/6/5/1.4.2, can I compile it with Excelsior JET?
The versions of Excelsior JET that supported Java SE 7 and below have reached their End of Life and are no longer available for purchase or downgrade.
Once a Java technology update has been released, how much time would it take you to update Excelsior JET?

Our past experience shows that adding support for a Java update to Excelsior JET should not take us more than a few weeks. However, we only commit to supporting the CPU (Critical Patch Update) releases, which Oracle issues four times a year, and only after they find their way to OpenJDK.

Support for the latest Java updates is added to the current Excelsior JET version through maintenance updates.

See also Excelsior JET Maintenance Policy

What are the licensing schemes for Excelsior JET?

Excelsior JET (desktop/server):

Development License: Excelsior JET 15.3 is licensed on a per developer seat basis. One license is good for two computers if they are not used simultaneously. There are no site or corporate licenses. Discounts are available to independent professionals, early-stage startups, and other small businesses.

Runtime License: Excelsior JET Runtime may be redistributed as part of your application installed onto general purpose desktop computers and servers at no extra charge. At the same time, its use in embedded systems is prohibited.

Excelsior JET Embedded:

Refer to Licensing section on the Excelsior JET Embedded home page.

What are the costs associated with Excelsior JET?

Standard Edition:

Since the end of August 2016, personal licenses for this entry-level variant of Excelsior JET are available at no cost to everyone who opts in when requesting an Evaluation Package download.

Professional and Enterprise Editions:

The Excelsior JET Editions targeting desktop and server systems are priced per developer seat. Use the Product Selector or contact our Sales Dept. to obtain detailed pricing information for these Editions.

Production and redistribution use of Excelsior JET Runtime in applications designed to run on general purpose desktop computers and servers are royalty‑free.

Special pricing is available to microISVs, small early stage startups, and similar businesses.

Exclesior JET Embedded:

Use of the Excelsior JET Runtime in devices other than general purpose desktop computers and servers may be subject to royalty payments based on the number of units or concurrent users.

Please consult this page and/or contact our Sales Dept. for more information.

How many Excelsior JET licenses do I need?

First of all, one development license is good for two computers if they are not used simultaneously. For instance, you can make a secondary installation of Excelsior JET on your home computer or laptop, provided your main development workstation is not shared with other people and not used as a night build server.

Then, unlike other tools such as an IDE, Excelsior JET is not intended to be used continuously by all developers, so you do not need to install it on every developer's system. We recommend you to purchase a few licenses for each group of developers, and install them on the most powerful systems, or even on separate build servers, so that test builds could be performed overnight.

Commercial site-wide and organization-wide licensing is not available.

Where can I buy Excelsior JET?

You can purchase Excelsior JET online at the list price through our Web Store. You can place your order online or via fax, postal mail, or purchase order.

You may also buy from your favorite reseller, but discounted pricing is only available direct from Excelsior.

The purchase procedure for Excelsior JET Embedded is more complicated. Please consult this page and/or contact our Sales Dept. for more information.

Can I download an evaluation version?

Yes, you may download fully functional evaluation copies of Excelsior JET, Enterprise Edition and Excelsior JET Emmbedded for Linux/ARM.

What are the limitations of the evaluation version?

The only limitation of Excelsior JET 15.3 Evaluation Package is the expiration of the evaluation package itself and any compiled applications at the end of the evaluation period.

Can I purchase a maintenance agreement?

Yes. An annual Support Contract, included with each purchase of Excelsior JET, entitles you to receive free upgrades. Upon its termination, you can renew the contract.

How do I get help?

Please visit the Excelsior JET Technical Support section.

What are the system requirements for Excelsior JET 15.3?

Below is an excerpt from the System Requirements page:

CPU: Intel x86 or compatible with SSE2 support
or any x64 (AMD64/Intel 64 or compatible)
RAM: Minumum 1.5 GB available physical RAM, 3 GB or more recommended
Disk Space: 1.5GB minimum, plus up to 1GB for temporary use

See the System Requirements page for details on operating system support.

What third-party software is required for Excelsior JET to work?

No third-party software is required*. Excelsior JET contains the OpenJDK Java SE API implementation and a complete Java Virtual Machine.

* As of version 15.3, some functionality in Excelsior JET for OS X requires xterm, so you may need to install an X Window implementation such as XQuartz.

What is required for a JET-compiled application to work?

Neither the Oracle JRE nor OpenJDK is required to run an application optimized by Excelsior JET. What is required is the Excelsior JET Runtime, which includes dynamic libraries containing the precompiled Java platform API and auxiliary Java API files, such as native method libraries, fonts, properties, security policy files, etc.

You may also build your application with the Global Optimizer so that the required Java API classes are compiled together with your application's classes and linked into one executable along with the runtime support routines. However, such an executable still needs the dynamic libraries implementing the Java API native methods, and the auxiliary files.

The Excelsior JET Installation Toolkit, included with the product, can help you automatically create an installation package containing your compiled application and the required Excelsior JET Runtime files, or export your application as a self-contained directory that can be deployed to other system by a simple copy operation. You may also use a third-party setup authoring tool.

Is there consulting available for Excelsior JET?

Yes. Send us an email stating what you need help with and we'll get back to you ASAP.

On a larger scale, Excelsior offers Java Consulting Services, which may, in particular, include setup for compilation of your program with Excelsior JET.