JIT compilation is a source of latency jitter that applications in low latency environments can control only by "warmup phase" that is inconvenient and error-prone. AOT compilation is a natural solution to the problem for applications that don't use dynamic JVM features such as reflection. AOT is also necessary if the hardware or software has restrictions that don't allow executing JIT'd code like in the iPhone and XBox 360.
GCJ is a portable, optimizing, ahead-of-time compiler for the Java Programming Language. It can compile Java source code to Java bytecode (class files) or directly to native machine code, and Java bytecode to native machine code.
Motivation
JIT compilation is a source of latency jitter that applications in low latency environments can control only by "warmup phase" that is inconvenient and error-prone. AOT compilation is a natural solution to the problem for applications that don't use dynamic JVM features such as reflection. AOT is also necessary if the hardware or software has restrictions that don't allow executing JIT'd code like in the iPhone and XBox 360.
Implementations
Mono virtual machine for .NET supports ahead-of-time compilation.
GCJ is a portable, optimizing, ahead-of-time compiler for the Java Programming Language. It can compile Java source code to Java bytecode (class files) or directly to native machine code, and Java bytecode to native machine code.