[ANN] Excelsior JET 4.5 - reduce the download size of your game

Excelsior JET, a JVM with Ahead-Of-Time compiler, has been updated to version 4.5.

New in this release:

  1. Now Excelsior JET may help you reduce the download size of your Java applications, thanks to the brand new global optimizer and advanced compression algorithms.

  2. The use of the global optimizer also reduces application memory usage, especially on Linux.

  3. Excelsior Installer is now available on both Windows and Linux.

  4. Ease-of-use enhancements, new installation toolkit features, and JIT compiler speedup are also among the major improvements.

Excelsior JET is certified Java Compatible on a number of Windows and Linux platforms. Added to the list in this release is SUSE Linux Enterprise Server 9.

Please visit our Web site for complete information or download your fully functional Excelsior JET 4.5 Evaluation Package.

Finally, our pricing targets corporate customers, but we are willing to trade discounts of up to 100% for assistance in spreading the word about our product. Have you created a quality Java game that would benefit from being optimized and packaged by Excelsior JET? Would you consider telling others on your Web site, in the game docs, and/or elsewhere about those benefits? If yes, please contact us to discuss the opportunities.

Please feel free to forward this information to your friends and colleagues who you think might be interested in Excelsior JET.

With best regards,

Dmitry Leskov
Excelsior LLC

good news !

I’m going to try it, last time my game exe was > 30megs (instead of 10 megs of pack200 jars).

Lilian

Well… I’ve tried it and still am above 20 megs (24).

Too bad !

Has anybody else been luckier than me ?

Lilian :slight_smile:

try running UPX on the executable to shrink the size.

DP

99,2% (-200kb) …

not enough I’m afraid

Lilian :slight_smile:

I’ve made some progress since yesterday… now the size is 20megs, which is better yet still a bit high.

of course compared to full JRE + 10megs of pack200 jars, it’s competitive… now if only I could reach 16 megs…

I’ve contacted the JET team to see if they can reach better compression than me, so far they are very reactive.

Lilian :slight_smile:

So… you’re using some awt then?

You should see bigger savings with pure lwjgl for example.

yes I started the game with some Swing / AWT / Java2D stuff, and it’s a bit late to go back…

(well, may be I’ll try it depending on the results of JET team investigations… )

Lilian :slight_smile:

While my colleagues at Excelsior are helping you out, I’ll post a short explanation of how Excelsior JET 4.5 reduces the download size here.

Consider two simple facts:

  1. Any given Java application uses only a subset of the standard Java SE API. A server-side app is unlikely to use Swing, whereas a game is unlikely to use JDBC.

  2. The Sun license does not permit you to subset the API when you redistribute the Java SE technology, even if it is a private copy that only your application will use.

What Excelsior JET global optimizer does is it analyzes your application jars and determines the subset of the standard API required for your application to work. It then compiles the classes of that subset together with your application classes and links them all into a single executable. When you package your application for distribution with Excelsior Installer selected as the back-end, the remaining API classes are compressed using pack200, and then all files are compressed using LZMA.

Now, suppose the the analyzer has failed to detect usage of a particular API class. This may happen if the class is not explicitly imported but loaded dynamically via refelction or JNI. No problem: the “unused” API classes will be unpack200ed during installation and the class will be JIT compiled. So this technique is safe and in full compliance with the license.

To sum it up, the less intensive is your usage of the standard API, the smaller the resulting installer will be. Perhaps the biggest save may be achieved by using SWT and LWJGL respecitvely for GUI and 3D graphics, as that would enable the global optimizer to rule out AWT and Swing.

Any questions, please post here.

Finally, we have ideas on how to further reduce download size and disk footprint of Java applications without violating the license, so stay tuned!

Dmitry

I just got a reply from JET team : now we’re at 18.5 megs, not too bad given I’m using Swing and AWT

I working now on a new version of the game which should have a smaller download size, and more content, I’ll keep you posted ni a month or two !

Lilian :slight_smile: