Compile to Native Machine Code
If you know the target environments
of your application, you have the option of taking your Java
application and compiling it to a machine-code executable. There is a
variety of these compilers already available for various target
platforms, and the list continues to grow. (Check the computer
magazines or follow the compiler links on good Java web sites. See
also the compilers listed in Chapter 15.) These
compilers can often work directly from the bytecode (i.e., the
.class files) without the source code, so any
third-party classes and beans you use can normally be included.
If you follow this option, a standard technique to remain multiplatform is to start the application from a batch file that checks the platform and installs (or even starts) the application binary appropriate for that platform, falling back to the standard Java runtime if no binary is available. Of course, the batch file also needs to be multiplatform, but then you could build it in Java.
But prepare to be disappointed with the performance of a natively compiled executable compared to the latest JIT-enabled runtime VMs. The compiled executable still needs to handle garbage collection, threads, exceptions, etc., all within the confines of the executable. These runtime features of Java do not necessarily compile efficiently into an executable. The performance of the executable may well depend on how much effort the compiler vendor has made in making those Java features run efficiently ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access