How to create native binaries for your Java app?

Ariejan picture Ariejan · May 3, 2011 · Viewed 11k times · Source

I'm wondering how to package a Java application into a native binary for Windows, Linux and Mac OS X.

I know Minecraft does this, but I can't figure out how. This is what'd I'd like to do:

  • From NetBeans (preferably) or Eclipse, build the three binaries automatically.
  • Include native libraries for OpenGL et. all.
  • Obfuscate my code if possible.

If there's some way to mimic the Minecraft auto-updater feature, that'd be totally awesome.

So, are there any tools available to do this for you, or do I need to write a large bulk of XML to accomplish this?

Answer

Lawrence McAlpin picture Lawrence McAlpin · May 3, 2011

To make a native binary for Windows, you would use a tool like Launch4J. On OSX you could use JarBundler. Minecraft simply distributes the jar file for Linux. I'm not aware of a native binary packager for Linux.

You could also compile your Java code via GCJ but that's probably not what you want, as there are limitations and compatibility concerns there. The native bundlers like Launch4j and JarBundler simply wrap your jar file and use a real JRE to execute it.

As for integrating with NetBeans or Eclipse, you'll probably have to write your own ant build file, especially since the solution varies from one platform to the next.