Excelsior JET, a certified Java SE 7 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:
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
"...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:
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 and Linux running on x86 (IA-32), x64 (AMD64/Intel 64), or compatible hardware. Both 64‑bit and 32‑bit native code generation is supported. For more details, refer to System Requirements.
- What are the supported Java (micro)versions?
- Excelsior JET 9 supports Java SE 7 Update 40. Support for later updates is provided via add-ons.
- What are the supported versions of the OSGi runtime?
Excelsior JET 9.0 supports the Equinox OSGi runtime, versions 3.3 through 3.9, out-of-the-box.
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.
Eclipse RCP Testsuite for Excelsior JET
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.
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:
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 the successfully tested RCP applications includes in particular:
|Application||# of Classes||Description|
|Relations 1.0||13,200||Knowledge management tool combining a personal Wiki and an electronic slip box|
|EAStudio Community Edition 1.5.1||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 6.2.2||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 1.1.0||17,031||LDAP Browser, works with most LDAP servers available|
|MyTourbook 1.5.0||11,629||Visualizes and analyzes tours recorded by a GPS device, ergometer, bike computer, or exercise computer|
|XMIND 2.3||19,683||Mind mapping, brainstorming, and collaboration|
|Nomad PIM 0.80||8,184||Extensible personal information manager that provides a platform for integrating personal data, and allows customization to personal needs|
|SafiWorkshop 1.0.4||40,532||Call flow and IVR design tool that enables designing, testing, debugging, and deploying call routing applications|