Protect Eclipse RCP Applications
|Excelsior JET, a certified Java SE 6 JVM with an AOT compiler and installation toolkit, provides special support for the Eclipse RCP with the 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.
News and announcements
"...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 have been compiled to native code using Excelsior JET:
Eclipse Classic 4.2 Juno (yes, the IDE)
RSSOwl 2.1.2 (newsfeed reader)
You may also check our Eclipse RCP testsuite that confirms the maturity of the Excelsior technology.
- How it works?
Excelsior JET implements the Equinox Runtime core at the JVM level, which effectively enables the AOT compilation technology for Eclipse RCP applications. In previous versions of Excelsior JET, RCP applications could 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 did not provide any security as the application classes had to be distributed in the original bytecode form.
- What are the supported platforms?
Windows and Linux running on x86 (IA-32) or compatible hardware. Update: As of version 8, native 64‑bit Windows executables can also be produced. For more details, refer to System Requirements.
- What are the supported Java (micro)versions?
Excelsior JET 8.0 supports Java SE 6 Update 43.
- What are the supported versions of the OSGi runtime?
Excelsior JET 8.0 supports the Equinox OSGi runtime, versions 3.1 through 3.8, out-of-the-box. Update: Maintenance Pack 1 adds support for Equinox OSGi 3.9.
Versions prior to 3.1 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. Using the graphical tools, you 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.