Working Around Older GCJ and Kaffe JVMs

Most Linux distributions have, at some point, shipped either a GCJ or Kaffe JDK as a standard part of their operating system. From the command line, it appears that a java executable is available, and it appears to identify itself as a JDK (usually as Java version 1.4.x). And, most of these distributions also come with Java programs that have been developed specifically for the GCJ or Kaffe JVM. These applications run all right because they have been thoroughly tested and modified to run on the JDK shipped with the Linux distribution. But, if the user installs other Java programs that were not developed this way—regular Java software that was probably developed with a 100 percent compatible JDK—that user-installed Java software will not work correctly. The user thinks that because the java executable is there, and the binary comes from her favorite Linux distro vendor, it will work, but mainly it doesn't. This includes Red Hat Enterprise 5 and older, Fedora 7 and all previous Fedora versions, Debian Sarge and older, SUSE Linux 10 and older, and so on.

Older Linux distributions bundled the Kaffe JVM, and somewhat newer distributions bundled the GCJ/GIJ JVM. Neither of these is complete JVMs, and you will have trouble running your Java software on them if you try.

GCJ is the GNU Compiler for Java. It is a frontend for the GCC compiler collection that can compile Java bytecode into native binaries. It also comes with a runtime that can interpret ...

Get Tomcat: The Definitive Guide, 2nd Edition now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.