Java AOT Compilation:
Now for ARM-based Devices

Excelsior JET Embedded 11.3 Adds Support for Linux/ARMv7.

Give It A Try
180-Day Trial Download, Requires Registration

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.

New in 11.3: Excelsior JET Embedded can now optimize and protect embedded Web apps deployed to Apache Tomcat.

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.16 or above
  • glibc 2.4 or above

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

Developer System

CPU:Intel Pentium III or compatible at 800 MHz or higher
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 11.3 for Linux/ARM has passed the JCK on the following system configurations:

  • CubieTruck board / Linaro 14.04
  • X-Gene Mustang reference board (ARMv8) / Ubuntu 14.04 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

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.16 or above
  • glibc 2.4 or above
  • Installation of 32‑bit libraries on 64‑bit systems required

Developer System

CPU:Intel Pentium III or compatible at 800 MHz or higher
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.16 or above
  • glibc 2.4 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.16 or above
  • glibc 2.4 or above

Developer System

CPU:Intel Pentium III or compatible at 800 MHz or higher
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.16 or above
  • glibc 2.4 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 Pentium III or compatible at 800 MHz or higher
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:Intel Pentium III or compatible at 800 MHz or higher
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 Java SE technology is free for use on general purpose desktop and server computers, but not in embedded systems. Therefore the licensing scheme and cost structure for Excelsior JET Embedded are different from its desktop/server sibling.

In short, you have to pay royalties to Oracle for the embedded use of Java SE, and pay support fees to Excelsior. The fees depend on the field of use, the market value (e.g. retail price) of your devices, and the number of units you ship each quarter.

Legal terms tag cloud

No Cellphones Sign

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

Request Evaluation Now

x

PRIVACY NOTICE

According to our Java SE for Embedded license agreement, we must collect and communicate to Oracle the following information about your evaluation request: company name, address, contact person, and intended use.

If you have any concerns in connection with the above, you may first evaluate the desktop/server version of Excelsior JET, which is very similar in functionality and is free from the above requirement. (It is not available for Linux/ARM, though.)

Note: Fields marked with "*" are required.

Contact Information

(Mr./Ms./Dr./Prof., etc)
*
First
*
Last
*
* Notice We will send the download instructions to this address!

About your company

*
*
*
* (USA only)
*
*

About your project

* (e.g. "Digital TV appliances")
* (specific model used in your devices) Supported CPUs:
  · Intel x86/AMD64 and compatibles
  · ARMv7-A with VFPv3-D16 or better (armhf)
  · ARMv8-A in 32-bit mode
 MB
 MB
What problems do you hope to solve using Excelsior JET Embedded?

Comments or Questions?

Please enter below any comments or questions you have in connection with your evaluation:
Are you human? (Sorry, we have to ask)
*

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