- 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 spec-compliant implementation of the Java SE 8 technology for personal computers and servers based on x86 and x64 (AMD64/Intel 64) CPUs. Its distinguishing features are an Ahead-Of-Time (AOT) optimizing native code compiler and 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 implements the Java SE for Embedded technology. It 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.0?
Excelsior JET 15.0 introduces incremental compilation for AMD64 targets. Basically, the AOT compiler now maintains an intermediate data cache that enables it to avoid re-compilation of unchanged dependencies. This version also delivers numerous application performance improvements on all target platforms.
For the complete list of improvements, see the changelog.
- On which system configurations Excelsior JET 15.0 is supported?
Excelsior JET 15.0 for Windows has passed the Java Compatibility Kit (JCK) testsuite for Java SE 8 on 32‑ and 64‑bit Microsoft Windows 10 and Windows 7 SP1.
Excelsior JET 15.0 for OS X has passed the Java SE 8 JCK on OS X 10.9.1 and 10.11.6.
Excelsior JET 15.0 for Linux has passed the Java SE 8 JCK on 64‑bit Fedora 26 and 32‑bit CentOS 7.4.
Excelsior JET Embedded 15.0 for Linux/ARM has passed the Java SE 8 JCK on 64‑bit Ubuntu 14.04.5.
Support for other operating system flavors, distributions, and versions can be provided either under terms or your Support Contract or on a consultancy basis, at Excelsior's sole discretion.
Please refer to the System Requirements page for up-to-date information on compliance testing and platform 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.0 has passed the Oracle's Java Compatibility Kit test suites for Java Standard Edition, version 8. The microversion supported out-of-the-box is Java SE 8 Update 144 (1.8.0_144). Updates supporting newer microversions are added regularly.
- My application only runs on Java SE 7, can I compile it with Excelsior JET?
Excelsior JET 10.5 was the last version that supported Java SE 7. You may downgrade to it if you purchase Excelsior JET 15.0 with Standard or Premium Support.
Important Excelsior JET 10.5 reached End of Life in February 2017, so you would still have to migrate to Java SE 8 and the latest version of Excelsior JET in order to receive technical support.
- 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.
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.0 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:
Use of the Java SE technology that is part of Excelsior JET Runtime in embedded systems is subject to Oracle royalties. Therefore Excelsior JET Embedded pricing and licensing are very different.
- What are the costs associated with Excelsior JET?
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 is subject to royalty payment based on the number of units or concurrent users.
- 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.
- Can I download an evaluation version?
Yes, you may download a fully functional evaluation copy of Excelsior JET, Enterprise Edition.
- What are the limitations of the evaluation version?
The only limitation of Excelsior JET 15.0 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.
Service and Technical Support
- How do I get help?
Please visit the Excelsior JET Technical Support section.
- What are the system requirements for Excelsior JET 15.0?
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 Java SE API implementation licensed from Oracle and a complete Java Virtual Machine.
* As of version 15.0, 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?
The Oracle JRE is not 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.