Like other Java runtimes, libgcj can load classes from bytecode class files. Unlike other Java runtimes, libgcj can also load classes that have been compiled to native machine code using GCJ. As you might expect, code sourced from native classes executes much faster than code sourced from bytecode classes.

Many of the Java packages in Fedora contain native code in addition to the usual bytecode. If you have a package that doesn't, then adding it is simple.

(These instructions extend and replace the earlier aot-compile-rpm HOWTO.)