Excelsior JET 7.6 Updated to Support the Latest Eclipse RCP and Equinox OSGi, Java SE 6u34

We have just put online Excelsior JET 7.6 Maintenance Pack 4. As usual, it addresses a handful of customer issues and enables the Java SE 6 Update 34 support add-on, but more importantly, it adds support for the latest versions of Equinox OSGi (3.8) and Eclipse RCP (4.2).

If you are a paying customer of Excelsior JET 7.6, but the download instructions for the above updates are neither in your inbox nor in the junk mail box, request them from our Support Dept. at support@excelsior-usa.com.

We have also updated the natively compiled Eclipse Classic IDE to version 4.2. You may find it in the Gallery.

Categories: Eclipse RCP, Excelsior JET, Product Updates

Tags: , , ,

Export RCP Apps As Native Executables Right From Your Eclipse IDE

Excelsior JET Eclipse plug-in for RCP developers enables you to export your Eclipse RCP application in native code form and deploy it in the wild without the easy-to-hack jar files.

Just compare the structure of exported RCP applications to see the difference:

How Excelsior JET works

With the Eclipse plug-in for Excelsior JET , the exporting of RCP applications to native code can be done in three simple steps.

STEP 1: Invoke the Export wizard

Click the Excelsior JET button in the Eclipse toolbar.

Eclipse toolbar

The export wizard window will appear.

STEP 2: Select destination

You may export your RCP application into a directory as if you were using
the standard Eclipse Product export wizard, or wrap the application
into Excelsior Installer to enhance the end-user experience.

Specify the desired Product Configuration file and enter the path to the destination directory or to the installer executable you wish to create.

STEP 3: Export!

Click Finish. The exporting process will start.

Upon successful completion, a dialog will appear, displaying
the location of the exported application.

From this dialog, you may also get instructions for the headless build of your RCP application with Excelsior JET and test drive the application installer, if you opted for its creation on STEP 2.

Note: Eclipse RCP applications exported with Excelsior JET no longer need
the JRE to run.

Plug-in installation

You may find detailed instructions and Update Site URL to install this plug-in into your Eclipse IDE on this page.


Whitepaper: Two Ways of Securing Eclipse RCP Applications (obfuscation vs. native pre-compilation.)

Case studies: RCP developers share their experience with Excelsior JET.

Video tutorial: standalone tools providing the advanced features of Excelsior JET, such as startup time optimization, Java Runtime Slim-Down, installer branding, and others.

Excelsior JET for Eclipse RCP page: product information, sample applications, etc.

Categories: Eclipse RCP, Excelsior JET, Product Updates

Tags: , , , , ,

Java and OSGi Runtimes Blended Together

Excelsior JET is a compliant Java SE JVM (yes, it has passed the awesome huge JCK testsuite).

Today news: Excelsior JET 6.5 supports the core of Eclipse Runtime (Equinox OSGi) at the JVM level. Specifically, wiring OSGi bundles, consistency checking before execution and lazy activation of OSGi bundles are supported.

What are the benefits of deploying applications with the JVM that serves as an OSGi container?

As Excelsior JET supports ahead-of-time compilation, the developers of commercial Eclipse RCP and Equinox applications benefit from the ultimate code obfuscation and protection of sensitive data: the applications can be compiled down to native code executables and distributed without the original jar files. Java decompilers are left at bay.

Moreover, merging Java and Equinox Runtimes results in the most secure environment for running Eclipse RCP applications. The environment blocks tampering with OSGi bundles and injecting unauthorized code via Java classloading hooks by protecting the Eclipse Runtime itself.

Finally, the consistency of Eclipse RCP applications can be checked statically to prevent run-time errors.

Flash demo, customers’ success stories, sample RCP applications compiled to native code (including the Eclipse IDE) and fully functional trial downloads are available here.

Official press-release
Excelsior JET home page

P.S. This new version of Excelsior JET is mostly focused on Eclipse RCP. However, the implemented Java Runtime technology can be used in other areas where OSGi shines, e.g. for Spring DM. We would greatly appreciate your feedback on this topic.

Categories: Eclipse RCP, Excelsior JET, Java

Tags: , , ,

Consistency checks for Eclipse RCP applications

The powerful OSGi…

The Eclipse Runtime enables you to create a well-formed modular architecture for Java applications. Each OSGi bundle has a unique name space and explicitly declares the imported/exported packages, and the Runtime enforces these rules.

… strikes back

However, arranging application jars into a set of OSGi bundles may be difficult and error-prone, especially if the application jars are “strongly connected”, that is, have lots of cross-references. The typical issues that may arise are

  • redundant classes: two jars contain classes with the same package and class name and the jars are placed in the same OSGi bundle. In this case, the classes from one jar will be actually used at run time and the others become “deployment baggage”
  • absent classes: a piece of code references a class that cannot be found within the bundle and is not exported from the other bundles. Unless the “wanted” class appears at run time, ClassNotFoundException will be thrown when control reaches that code.

    If your test suite does not achieve 100% code coverage (including third-party jars), there is a chance that the problem will manifest itself on end user systems.

Excelsior JET to the rescue

To detect such inconsistencies before deployment, you may use Excelsior JET 6.5. The JET Control Panel can analyze your Eclipse RCP application and report the found issues. Under the covers, it takes the OSGi bundles of your application and statically applies the resolution procedure used by the Eclipse Runtime as if the application was started and the bundles were loaded.

The results

When implementing this feature, we were really curious if such warnings would be found in real Eclipse RCP applications, and the answer came soon. Here go two examples:

Eclipse Classic IDE 3.4 (Ganymede)
Redundant (duplicated) classes Referenced absent classes Unresolved super classes
7 138 18

A large commercial RCP application
Redundant (duplicated) classes Referenced absent classes Unresolved super classes
154 299 74

Note that “unresolved super class” is a severe warning. If the code of a method just references an absent class, say, invokes a method or uses a field of that class, ClassNotFoundException is thrown only when the referencing code is executed. You are lucky if that code is on a rarely executed branch and the enclosing method runs fine in most cases ( of course, this is an optimistic assumption :). On the contrary, an absent super class prevents any usage of any classes derived from it because ClassNotFoundException will be thrown immediately when loading such a derived class.

Finally, if the application works flawlessly since it never uses the problematic classes, what is the point of deploying them to end user systems?

Try it yourself

To avoid surprises, check your Eclipse RCP application for consistency before deployment:

  1. Download and install Excelsior JET 6.5
  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
  4. Go to the page Classpath and press the “Check consistency” button in the bottom pane

As analysis completes, the detailed report will be displayed in a separate dialog.

You may then inspect the problematic bundles and classes and get the report in text form.

Take care!

Categories: Eclipse RCP, Excelsior JET, Java

Tags: ,

Eclipse Classic 3.4 Compiled Natively Using Excelsior JET 6.5 beta 2

As you may have read in our August 1st announcement, Excelsior JET 6.5 will provide support for the Equinox OSGi runtime, enabling you to protect Eclipse RCP applications from reverse engineering and tampering.

We have just published Excelsior JET 6.5 beta 2, along with two natively compiled RCP applications to illustrate its capabilities:

Here is what’s new in beta 2:

Eclipse RCP Support

  • Numerous bug fixes and overall stability improvements
  • Over 90% of Eclipse Unit Tests have passed on the compiled Eclipse IDE

Performance improvements

  • java.util.zip.*: access to jar/zip archives speeded up
  • JNI: substantially reduced overhead of calling Java methods from native methods

Categories: Excelsior JET, News

Tags: , ,

Total Solar Eclipse: Best Picture

Here is the best pi?ture of the August 1st total solar eclipse in Novosibirsk that I have seen so far. Make sure to click it for full-size view.

Photo courtesy of Alexey Lubkin, http://alexl.ru

Categories: Uncategorized


Excelsior JET 6.5 To Protect Eclipse RCP Applications

We are announcing our commercial Eclipse offering today, just a couple hours after watching a real total solar eclipse! No big surprise here, though. We have implemented support for the Equinox OSGi runtime in Excelsior JET, so the next version will enable you to protect Eclipse RCP applications from reverse engineering and tampering.

Excelsior JET 6.5 beta 1, capable of compiling Eclipse the IDE, is already available. The final release is scheduled for 1Q 2009.

Categories: Excelsior JET, News

Tags: , , , , ,

Excelsior LLC is the First Russian Company to Join the Eclipse Foundation

Excelsior has joined the Eclipse Foundation as an Add-In Provider. It turned out there are no other members from Russia, even though a number of Eclipse contributors, committers, and even project leads are based here. (In fact, the lead of the DLTK project is based right in our city.) So we are proud to be the first Russian corporate member of the Eclipse Foundation.

One of the obligations of an Add-In Provider member is to make a commercial Eclipse-based offering in 12 months. Our offering will be a tool designed for developers of (commercial) Eclipse RCP applications. We plan to announce it and make a public beta available on August 1st, 2008, so stay tuned.

I kindly invite industry analysts and authors covering Eclipse RCP to contact me to receive information and get the beta download about one week before the official annoucement. My contact is at the bottom of

The Official Press-Release

Categories: News

Tags: , , , ,