JavaOne Conference Trip Report

Hewlett Packard: Compilation Strategies for Optimized Enterprises Java Technology Performance

Byte code compiling is the responsibility of the developer, but the native compiler is the responsibility of someone else (that is part of the runtime environment). Byte codes are stack-based. JITs are better suited to client-side compilation because compiling time is added to execution time. There are other options for compiling.

Closed static compilers have a limited application to Java. They are compatible with the Java Language Standard (JLS) but only questionably compatible with the JVM. And, there are problems with dynamic loading and portable binaries.

Open static compilers will compile and optimize what is put into them. Quality becomes the question. These compilers are compatible with both the JLS and JVM. You'd use JITs on non-pre-compiled stuff.

Dynamic compilation takes advantage of the 20/80 rule (20% of the code runs 80% of the time).

The challenge to improved static compilation is deployment transparency.

One technique for optimization is PBO - Profile-Based Optimization. Here you run the app a while and feed the profile information back into the compiler (this can be done right now on the HP C++ compiler).

I spoke after the session on the exhibit hall floor with three guys from HP's compiler group and got a couple of contacts.