Running a Java program involves two steps. A programmer types in Java source code, which is converted by a Java compiler into a form called the Java byte code. The byte code is then executed by a program known as the Java Virtual Machine (JVM). All JVMs understand the same byte codes, so the byte code form of a Java program can be run on any platform with a JVM. In this way, a JVM is a generic execution engine for Java byte code -- the JVM can be written once for a given platform, and then any byte code program can be run by it. This is extremely flexible, but because the JVM is generic, it cannot be optimized for any particular Java program.
The High Performance Compiler for Java speeds up the execution of Java code by removing the JVM from the loop. It takes the Java byte code and, in a single off-line step, converts it into native code for the user's specific type of computer and operating system. HPCJ exploits optimizing compiler technology to obtain the highest performance from the converted natively executable form of the program. The process is similar to organizing a freight train by assembling the cars in a switch yard and then attaching them to the engine for the journey, rather than stopping the train to add cars as it travels along the main line.