Full AOT Compilation
for Java SE Embedded

Excelsior JET Embedded compiles your embedded Java apps down to native x86, AMD64, or ARMv7 binaries.

Evaluate Now
180-Day Trial Downloads
Pick Oracle JDK or OpenJDK API

What Is It?

Java Compatible Logo

Excelsior JET Embedded is a compliant Java SE Embedded technology implementation enhanced with an Ahead-Of-Time compiler.

How It Works

The AOT compiler optimizes your Java class files down to native code and produces a conventional binary executable. The runtime also includes a JIT compiler to handle any classes that were not precompiled.

Supported Targets

Windows Intel x86 and AMD64
Intel x86 and AMD64
New ARMv7 and 32-bit ARMv8
Java Compatible Logo

You may be wondering what it takes to get this little Java Compatible logo and, more importantly, what benefits it delivers to you as a user of our product. These are the key points:

Shapes and holes

1

Excelsior JET has passed the Java SE 8 Technology Compatibility Kit (JCK) test suite.

The JCK comprises over 200,000 individual test cases verifying compliance with all aspects of the Java specification. Technically, this means that any program coded in accordance with the Java specification must produce the same result on the reference implementation and when natively compiled with Excelsior JET.

2

The standard Java SE class library included in Excelsior JET is built from the same source code as the one included in the Oracle JRE.

The reuse of the reference implementation source code not only has helped our product pass the JCK tests. It also makes Excelsior JET replicate any loosely specified or implementation-defined behavior of the standard Java library classes as implemented in the Oracle JRE automatically.

3

The use of Excelsior JET is safer from a legal standpoint compared to non-compliant commercial embedded Java offerings.

Vendors of unlicensed commercial solutions effectively abuse the Java trademark and risk being pushed out of business or forced to bring their offering in compliance with the commercial Java technology license.

Notice The JCK is not a stress test. It does not benchmark the implementation's performance or throughput.

Faster Startup, Better Performance

Natively precompiled Java code runs directly on hardware right from the start. The absence of the warm-up cycle and JIT compilation overhead results in faster application startup and optimal code performance.

All charts on this page are taken from an actual customer case study. The results for your application will vary.

Performance Gain Response Time Startup Time

Smaller Footprint

Footprint Chart

Excelsior JET keeps the size of the Java SE runtime as small as possible. This reduces the ROM (flash memory) and RAM footprint of embedded Java applications, which is important for space-constrained environments.

The run time memory footprint is smaller because the Excelsior JET JVM is leaner compared to the implementations more heavily reliant on JIT compilation.

As for disk space usage, Excelsior JET fully supports Java SE 8 compact profiles, enabling you to omit parts of the Java SE Platform API that are not used by your application.

Robustness and Predictability Code tested === Code deployed

The Excelsior JET compilers, both AOT and JIT, make no optimistic assumptions. The code they yield may be less optimal in particular scenarios, but never needs to be changed at application run time. You can be sure that the code executing on the device is the code that has passed the test load in your lab.

A typical JVM loads classes one-by-one, initially interpreting and profiling all methods. As the JVM detects frequently called methods and loops with a large number of iterations, it begins dynamically compiling such methods and fragments into native code.

An advanced JIT compiler also makes certain assumptions based on the set of classes loaded so far. If such an assumption is later broken, the respective methods have to be deoptimized and possibly recompiled.

All this machinery can become very sophisticated. As a result, it becomes very difficult to test all possible variants and combinations of the dynamically generated pieces of code.

Egyptian Hieroglyphs Inscription

Protection Against Java Decompilers Peace of mind

Window Window
 

Java class files are easy to reverse-engineer. The very properties that enable Java applications to run anywhere make reverse translation straightforward. There are a number of Java decompilers on the market that produce amazingly readable source code. In contrast, reverse translation of optimized native code is a hard engineering task, which cannot be automated like Java bytecode decompilation.

An obfuscator can make the decompiled code less comprehensible. However, name obfuscation may cause reflection and JNI failures, whereas extensive control flow obfuscation negatively impacts performance and may provoke a VerifyError. To make things worse, these problems only manifest themselves when the respective class is actually loaded at application run time, and thus may slip through the QA process. And reverse engineering of an equivalent C++ program passed through an optimizing compiler would still be more difficult.

Excelsior JET Embedded gives you the best of both worlds. With it, you flash solid binary executables into your devices, while avoiding the obfuscation trade-offs — reduced performance and an increased risk of run-time errors. And you may still pass classes not accessed via JNI or reflection through a name obfuscator if you know what you are doing.

Target System

CPU: ARMv7-A with VFPv3-D16 or better
ARMv8-A in 32-bit mode
RAM:32MB or more
ROM/Flash: Compact1: 44MB minimum
Compact2: 60.7MB
Compact3: 70.7MB
Full: 124.4MB
O/S:

Linux:

  • kernel 2.6.32 or above
  • glibc 2.12 or above

Notice On ARMv8 systems running under a 64‑bit O/S, installation of 32‑bit libraries is required.

Developer System

CPU:Intel x86 or compatible with SSE2 support
RAM:1.5GB minimum, 2GB or more recommended
Disk Space:1.5GB plus up to 1GB extra for temporary use
O/S:

Microsoft Windows 10, 8, 7, Server 2008

Tested System Configurations

Excelsior JET Embedded 15.0 for Linux/ARM has passed the JCK on the following system configurations:

  • X-Gene Mustang reference board (ARMv8) / Ubuntu 14.04.5 64-bit

Many other tests and a number of real-world applications are also known to work on the above configurations, as well as on the following:

  • Raspberry Pi 2 / Raspbian 8.0
  • Raspberry Pi 2 / FedBerry 23
  • Raspberry Pi 3 / Ubuntu MATE 16.04 32-bit
  • NEW NXP/Freescale i.MX6 UltraLite / Yocto 1.8 (kernel version 3.14)

Target System

CPU:Intel Pentium II or compatible at 200 MHz or higher
RAM:32MB or more
ROM/Flash: Compact1: 14.8MB minimum
Compact2: 15.9MB
Compact3: 16.7MB
Full: 25MB
O/S:

Linux:

  • kernel 2.6.32 or above
  • glibc 2.12 or above
  • Installation of 32‑bit libraries on 64‑bit systems required

Developer System

CPU:Intel x86 or compatible with SSE2 support
RAM:1.5GB minimum, 2GB or more recommended
Disk Space:1.5GB plus up to 1GB extra for temporary use
O/S:

Linux:

  • kernel 2.6.32 or above
  • glibc 2.12 or above
  • 32‑bit libraries must be present on 64‑bit systems
  • Graphical tools require X11 and xterm
  • xterm must be reachable via the command search path

Target System

CPU:AMD64/Intel 64 or compatible
RAM:32MB or more
ROM/Flash: Compact1: 38.5MB minimum
Compact2: 53.4MB
Compact3: 62.7MB
Full: 115.1MB
O/S:

Linux:

  • kernel 2.6.32 or above
  • glibc 2.12 or above

Developer System

CPU:AMD64/Intel 64 or compatible
RAM:1.5GB minimum, 2GB or more recommended
Disk Space:1.5GB plus up to 1GB extra for temporary use
O/S:

Linux:

  • kernel 2.6.32 or above
  • glibc 2.12 or above
  • 32‑bit libraries must be present on 64‑bit systems
  • Graphical tools require X11 and xterm
  • xterm must be reachable via the command search path

Target System

CPU: Intel Pentium II or compatible at 200 MHz or higher
AMD64/Intel 64
RAM:32MB or more
ROM/Flash: Compact1: 15.5MB minimum
Compact2: 16.6MB
Compact3: 17.3MB
Full: 24MB
O/S: Microsoft Windows 10, 8, 7, Server 2008

Developer System

CPU:Intel x86 or compatible with SSE2 support
RAM:1.5GB minimum, 2GB or more recommended
Disk Space:1.5GB plus up to 1GB extra for temporary use
O/S: Microsoft Windows 10, 8, 7, Server 2008

Target System

CPU:AMD64/Intel 64 or compatible
RAM:32MB or more
ROM/Flash: Compact1: 38MB minimum
Compact2: 52.3MB
Compact3: 61.3MB
Full: 106MB
O/S: Microsoft Windows 10, 8, 7, Server 2008

Developer System

CPU:AMD64/Intel 64 or compatible
RAM:1.5GB minimum, 2GB or more recommended
Disk Space:1.5GB plus up to 1GB extra for temporary use
O/S: Microsoft Windows 10, 8, 7, Server 2008

The Oracle JDK is free for use on general purpose desktop and server computers, but not in embedded systems. This also applies to all third-party implementations of the Java technology that include portions of the Oracle JDK code under a commercial use license. Therefore the licensing scheme and cost structure for Excelsior JET Embedded is different from its desktop/server sibling. In short, you would have to pay per-unit royalties for the embedded use of Java SE, which we would then remit to Oracle, and pay support fees to Excelsior.

Legal terms tag cloud

No Cellphones Sign

Notice The Oracle Java SE technology license currently prohibits the use of of that technology in cell phones.

Please select the implementation of the standard Java SE API that you want included with your evaluation copy of Excelsior JET Embedded:

Bundled with
Oracle JDK API
Closed-Source, Requires Registration
    Bundled with
OpenJDK API
GPLv2+CE, No Registration Required

Why are there two options and what's the difference?

Oracle JDK API vs OpenJDK API

Any Java SE Platform implementation includes two principal components:

  • A Java Virtual Machine (JVM) that provides the low-level services to the application such as threading, synchronization, memory allocation, garbage collection, class loading, etc., and
  • An implementation of the standard Java SE API that in particular abstracts away the differences in functions and capabilities of the underlying operating systems and middleware.

Excelsior JET Embedded includes our proprietary JVM and AOT compiler. The AOT compiler produces native binaries interoperable with our JVM. They are bundled with the implementation of the standard Java SE API commercially licensed from Oracle.

However, as of Java SE 8, the standard API implementations in the Oracle JDK and OpenJDK are almost identical from the technical standpoint. Only some portions of the graphics API use different libraries underneath. So technically Excelsior JET Embedded could have included the OpenJDK implementation instead.

The key differences between the two bundling options are summarized below:

Bundling Option with Oracle JDK API with OpenJDK API
Evaluation process Requires registration,
data shared with Oracle
Direct download,
no registration required
Font rasterizer T2K Freetype
Color management Kodak CMM LCMS
Graphics renderer Ductus Pisces
Crypto facilities Complete set Reduced set
Runtime license Closed source Closed source
Portions under GPLv2+CE
Register to Download Download Now

Our work on the Linux/ARM port of Excelsior JET Embedded was supported by a grant from the Foundation for Assistance to Small Innovative Enterprises (FASIE).

By Email

java@excelsior-usa.com
Any technical questions or issues

sales@excelsior-usa.com
Pricing, licensing, support renewals, etc.

info@excelsior-usa.com
All other issues.

By Phone

+7 (383) 330 55 08
We are in GMT+7 - mind the time difference

By Fax

+1 (509) 271 52 05 (intl e-fax)

By Mail

P.O.Box 100
Novosibirsk 630090 Russia

Or Come Over For a Visit

6 Lavrenteva Ave.
Novosibirsk 630090 Russia

Media/Analysts

Dmitry Leskov
Director of Marketing
+1 (408) 786 5641 skypein
(4am-4pm GMT)
dleskov@excelsior-usa.com