High Performance Compiler for Java (Workstation Edition): Overview

The IBM High Performance Compiler for Java (HPCJ) is an optimizing compiler that is based on advanced IBM optimization technology. It compiles Java source code or bytecode into optimized, platform-specific native code that takes the form of either executables or DLLs. The resulting code is generally much faster than the bytecode executed in a Java Virtual Machine (VM) using a Just-In-Time (JIT) compiler.

HPCJ has the look and feel of the Java VM. For instance, the HPCJ hpj and hpjava commands closely mirror the javac and java commands and associated options of the Sun JDK. HPCJ also supports the Java Native Interface (JNI) so that native code can call Java code.

With the exception of native methods that are implemented in C/C++ and in applications using the JNI invocation interface, the HPCJ applications are primarily written in Java and compiled with HPCJ.

Why Use the High Performance Compiler for Java?
Execution speed is an important requirement for server code. For this reason, you may need an optimizing native code compiler for Java that will compile Java bytecode directly into native code in the same manner as compilers for C/C++, Fortran, COBOL, and other languages. A JIT compiler must balance time spent in optimizing code with time spent in executing that code. Because a native compiler like HPCJ compiles code only once, before execution time, it can apply resource-intensive optimization techniques to the generated code that are not available to a JIT compiler. These optimization techniques can greatly enhance the performance of the code. The degree of performance improvement, of course, is dependent on your application.

HPCJ makes it possible for you to write entire server applications in Java without sacrificing the benefits of platform-specific, native code performance. Cross-platform portability is retained through the Java bytecode or by compiling the bytecode to native code for each required platform.

 


Java Executables and DLLs


Building Executables and DLLs
Building Applications and Applets


hpj Command
hpjava Command