Protect Eclipse RCP Applications

Excelsior JET, a certified Java SE 8 JVM with an AOT compiler and installation toolkit, provides dedicated support for the Eclipse Rich Client Platform with focus on code and data protection.

It enables you to export Eclipse RCP applications in native code form and avoid the distribution of the easy-to-hack jar files altogether:

Your Eclipse RCP app before and after native compilation

Excelsior JET improves the security of Eclipse RCP applications and prevents IP theft, providing more protection capabilities than bytecode obfuscators.

Read the whitepaper to learn more

Watch a demo to appreciate the ease-of-use

Want to give it a try? Download a free trial

OSGi Version Support Alert

The current version of Excelsior JET supports Equinox OSGi runtime versions 3.3 through 3.11, the latter being the version on which Eclipse 4.5 (Mars) is based. You can leave your email address below to receive a notification when we add support for Eclipse 4.6 (Neon) and the upcoming 4.7 (Oxygen) release.

When you add support for the latest versions of Eclipse, drop me a line at .

Privacy Notice: This is a double opt-in mailing list managed by Campaign Monitor. We won't share your email address with anyone else. We shall only post to this list once and remove it afterwards.

"...When it comes to Eclipse RCP applications, our research indicated that Excelsior JET was really the only solution for code protection. Its ahead-of-time (AOT) compilation of Java bytecode makes the process extremely simple and effective."  | read full story

--Eric Byres, Michael Thomas, Byres Security Inc.

"...We can finally distribute our RCP-based system without the fear of somebody is going to decompile it. Moreover, we can send time limited demos of our system to anybody who demand it, enabling an increase of our potential customers base."  | read full story

--Mikel Hernando, Onendis Systems

"...Excelsior JET represents the best (and possibly only available) solution, capable to protect not only Eclipse RCP and OSGi based applications, but also those that rely on the modeling technologies available in the Eclipse platform."  | read full story

--Víctor Roldán Betancort, Open Canarias S.L.

"...Excelsior JET has revealed to be perfectly working with such a complex RCP application as EasyMonitoring... We highly recommend to use the product for deploying RCP application in a secure and easy way..."  | read full story

--Baptiste Gendron, Global Vision Systems

The below RCP applications are compiled to native code using Excelsior JET:

Eclispe Icon

Eclipse Classic 4.2 Juno (yes, the IDE)
Windows, 252MB

RSSOwl Icon

RSSOwl 2.1.2 (newsfeed reader)
Windows, 15MB

You may also check our Eclipse RCP testsuite that confirms the maturity of the Excelsior technology.

How it works?
Excelsior JET, Enterprise Editions implements the Equinox Runtime core at the JVM level, which effectively enables the AOT compilation technology for Eclipse RCP applications. In other editions of Excelsior JET, RCP applications can be only handled via the JIT compiler that comes with the JET Runtime, just like it is done by the standard JRE. Unfortunately, that approach does not provide any security as the application classes have to be distributed in the original bytecode form.
What are the supported platforms?
Windows, OS X and Linux running on x86 (IA-32), x64 (AMD64/Intel 64), or compatible hardware. Windows and Linux versions support both 64‑bit and 32‑bit native code generation, the OS X version is 64‑bit only. For more details, refer to the System Requirements page.
What are the supported Java (micro)versions?
Excelsior JET 15.3 supports Java SE 8 Update 181 (1.8.0_181) out-of-the-box. Support for later versions of Java is provided via maintenace updates.
What are the supported versions of the OSGi runtime?

Excelsior JET 15.3 supports the Equinox OSGi runtime, versions 3.3 through 3.11, the latter being the version on which Eclipse 4.5 (Mars) is based.

Versions prior to 3.3 are not supported.

Does it support dynamic loading of plug-ins that were not pre-compiled?
Yes. The JET Runtime includes a JIT compiler to dynamically load Java class files that were not pre-compiled.
Can I integrate compilation and packaging into my automated build process?

Yes, of course. First, you need to use the Excelsior JET graphical tools to create two project files, one to build the native executable and the other to package the application, that is, to prepare it for deployment.

Once the projects have been created, you may use the respective command line tools to enable native compilation and packaging in an automated build process. For more details, see the "Automated builds" section of the User's Guide.

Can I compile only certain OSGi bundles to native code and leave the rest intact?
Yes, it is possible. Non-compiled bundles will be handled by the JIT compiler that comes with the Excelsior JET Runtime. You may configure the compiler using the JET Control Panel, see the "Settings for OSGi bundles" section of the User's Guide.
How does the solution compare to Java obfuscators?
In general, bytecode obfuscators have quite a few weak points as compared to native AOT compilers. Specifically for RCP applications, one point is that you may not obfuscate the names of the packages exported from a plug-in. The Eclipse Runtime exploits Java Reflection to wire OSGi bundles so name obfuscation would break things up. There are some workarounds for the problem that require manually configuring Java obfuscators for RCP applications, and that may be a complicated task.

Excelsior QA team uses a representative testsuite to test the Eclipse RCP-specific functionality of Excelsior JET Optimizer, Runtime and Installation Toolkit. It includes the Eclipse IDE, Eclipse unit tests and a number of real third-party Eclipse RCP applications.

Eclipse IDE

Different versions of the Eclipse IDE compiled with Excelsior JET are used for testing on a regular basis. You may check the compiled IDE yourself:

Eclispe Icon

Eclipse Classic 4.2 Juno
Windows, 252MB

Eclipse Unit Tests

Over 99.9% of Eclipse Unit Tests have passed on the Eclipse IDE compiled with Excelsior JET.

Those few tests that fail, do that mostly due to issues in the tests themselves. We plan to fix the incorrect test cases and contribute the modifications back to Eclipse.

Tested RCP applications

The list of successfully tested RCP applications includes in particular:

Application Classes Description
Relations 13,200 Knowledge management tool combining a personal Wiki and an electronic slip box
EAStudio Community Edition 33,506 Business Modeling Tool that creates a graphical representation of a business from the core concepts that describe the business, to the processes that detail how the business operates
AnyLogic 32,429 Dynamic simulation tool that brings together System Dynamics, Process-centric (AKA Discrete Event), and Agent Based approaches within one modeling language and one model development environment
Apache Directory Studio 17,031 LDAP Browser, works with most LDAP servers available
MyTourbook 11,629 Visualizes and analyzes tours recorded by a GPS device, ergometer, bike computer, or exercise computer
XMIND 19,683 Mind mapping, brainstorming, and collaboration
Nomad PIM 8,184 Extensible personal information manager that provides a platform for integrating personal data, and allows customization to personal needs
SafiWorkshop 40,532 Call flow and IVR design tool that enables designing, testing, debugging, and deploying call routing applications