Excelsior Logo Excelsior Logo
Company Products Services Resources Contact
Store Buy    Download Download    Support Support    Forum  Forum    Blog  Blog   
Search
 Search   
Sitemap
 Sitemap   
Request a Call  Request a Call   

Excelsior JET To Protect Eclipse RCP Applications

Excelsior JET is a compliant Java SE 6 implementation (JVM) powered by the Ahead-Of-Time compilation technology.

Excelsior JET 6.5 will enable you to compile your Eclipse RCP application to a native code executable and distribute it without the original class/jar files.

Compilation to native code substantially improves the security and IP protection of Eclipse RCP applications, as the sensitive code and data get protected from reverse engineering, and tampering with the OSGi bundles becomes impossible. It makes all those Java decompilers useless to the malicious programmers and attackers simply because Java classes are not included in the end user installations.

Excelsior JET 6.5 beta 3 is already available. We invite you to download and test it against your Eclipse RCP applications.

Sample Applications

The below RCP applications have been compiled to native code using Excelsior JET 6.5 beta 3:

Eclipse Classic 3.4 (yes, the IDE)
Windows, 212.0 MB
RSSOwl 2.0 M8a (newsfeed reader)
Windows, 14.7 MB

What's New in beta 3

Eclipse RCP Support

  • JET Control Panel now provides GUI for compiling RCP applications
  • Numerous bug fixes and overall stability improvements
  • Over 98% of Eclipse Unit Tests have passed on the compiled Eclipse IDE

Scalability improvements

    Compiling large applications takes less time and memory

Ease-of-use

    The Welcome screen added to the JET Control Panel enables faster creation of the projects for specific types of applications

How to use it

Beta 3 provides a graphical interface to native compile RCP applications and a simple command line interface to prepare them for deployment. Future beta releases will also include the GUI tools to create installation packages.

The procedure of compiling your RCP application is straightforward:

  1. Download and install Excelsior JET 6.5 beta 3:

    jet-650-beta3-en-win32.exe

    Windows, 80.2 MB

    jet-650-beta3-en-linux.bin

    Linux, 83.1 MB

  2. Start the JET Control Panel and click "Eclipse RCP Application" on the welcome screen.

  3. Specify the directory to which your RCP application was exported either by the Product Export Wizard or by an automated build process (let us call the directory AppDir.) Then, select the original launcher executable of your RCP application (let us call it AppLauncher.)
  4. Press F9 (Build). You will be prompted for saving the project just created. Save it into another directory.

    The native executable will be created in directory AppDir under name AppLauncher-native.

    Now you may run the compiled executable and check how the native application behaves.

  5. Prepare your compiled Eclipse RCP application for deployment using this command:

      xpack -source AppDir -target TargetDir
    

    where TargetDir is an empty directory where the resulting package will be created.

    Notice that TargetDir/plugins does not contain the jar files that have been compiled into native code.

    Now you may deploy the protected RCP application simply by copying TargetDir to other machines or wrapping it into an installer (ZIP/tar/whatever you like).

FAQ

How it works?

Excelsior JET 6.5 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. For more details, refer to System Requirements.

What are the supported Java (micro)versions?

Java SE 6 Update 7 and J2SE 5.0 Update 15

What are the supported versions of the OSGi runtime?

This Beta supports the Equinox OSGi runtime version 3.1 or higher. In particular, it has been tested on the Ganymede Release of the Eclipse Platform as well as on the previous Eclipse releases.

Versions prior to 3.1 are not supported.

Can I compile the Eclipse IDE?

We knew you would ask it. ;) Yes, of course. Use the following command line

  jc =ercp EclipseDir -pack=none

where EclipseDir is the installation directory of the Eclipse IDE. The compiled executable will appear in that directory under the name eclipse-native.

Note: The Eclipse IDE is different from most other RCP applications: its own class files are required for providing certain functionality specific to the development of plugins and RCP applications. An example is compiling plugin sources from within the IDE. In other words, the class files of the Eclipse IDE serve as both program code and resources. This implies that even if all the classes are pre-compiled to native code, they still have to be available at run time.

The extra command line option -pack=none signals to the compiler that the original classes should be retained. This is specific to the Eclipse IDE; most other RCP applications we have checked do not need this option and therefore may be fully protected.

Does the compiled Eclipse IDE start and work faster?

We have been testing the compiled Eclipse IDE for a few weeks, using it for the development of quite a large Web application. The performance was comparable to the Sun JRE, as well as startup and response times. We have also noticed that certain usage scenarios seem to work faster, though we need to get it confirmed by independent beta testers.

We believe it is ok for the first beta version because we mostly focused on ease of compilation and reliability of the compiled RCP applications.

Does it support the 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 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 JET Runtime. To configure the compiler, open your project with the JET Control Panel and go to page Classpath. Select "auto-detect" in the Optimize column and "not required" in the Protect column for those OSGi bundles you do not need to compile.

How does the solution compare to Java obfuscators?

In general, Java obfuscation has quite a few weak points as compared to AOT compilation of Java classes to native code. Specifically for RCP applications, the most crucial one 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.

What are the known limitations of Beta 3?

The early beta status of this release imposes some limitations on the entire Eclipse RCP functionality and implies presence of some known issues:

  1. It is assumed that all bundles are placed in AppDir/plugins directory. If your application is configured to use multiple bundle repositories, you may temporarily reconfigure it to use only the "plugins" directory in order to try this Beta.
  2. Running an RCP application on page Test Run of the Control Panel takes long. This annoyance will be removed in future beta versions.
  3. The Eclipse RCP auto-update facility is not yet supported.
  4. Compilation of very large Eclipse RCP applications (2x the size of the Eclipse IDE or larger) takes way too long and the compiler may terminate with an insufficient memory error. We are working hard on resolving these issues.

    In some cases, using the following command line arguments may help:

      jc =ercp AppDir -compilerheap=1300m -compilewithfixedheap+
    

    Note: your computer should have 1.5+ GB of RAM to build large applications.

Download Now

Feedback

Your feedback and suggestions are very welcome! Please email us at java@excelsior-usa.com or fill in the Open Support Ticket form.

Stay tuned

To receive updates on Excelsior JET 6.5, subscribe to our mailing list:

Subscribe to the Excelsior JET Mailing List Now
Email:
I want to learn more about this list first

Home | Company | Products | Services | Resources | Blog | Contact | Request a Call

Site: Search | Sitemap | Forum | Credits

© 1999-2008 Excelsior LLC. All Rights Reserved.