Are there performance differences between OpenJDK and Oracle?

You would find interesting this excerpt from an Oracle blog post:

Q: What is the difference between the source code found in the OpenJDK repository, and the code you use to build the Oracle JDK?

A: It is very close - our build process for Oracle JDK releases builds on OpenJDK 7 by adding just a couple of pieces, like the deployment code, which includes Oracle's implementation of the Java Plugin and Java WebStart, as well as some closed source third party components like a graphics rasterizer, some open source third party components, like Rhino, and a few bits and pieces here and there, like additional documentation or third party fonts. Moving forward, our intent is to open source all pieces of the Oracle JDK except those that we consider commercial features such as JRockit Mission Control (not yet available in Oracle JDK), and replace encumbered third party components with open source alternatives to achieve closer parity between the code bases.

As Oracle is responsible for creating both, it's clear that it will ensure that its clients will have good reasons for paying, and performance is the obvious means.

I believe that OpenJDK is interpreter-only JVM. This is easier to port as it has no architecture specific assembly code but, unfortunately, it's less performant.

OracleJDK I think takes advantage of the platform's floating point ABI (Soft Float on RP1 and Hard Float on RP2). It might also have some amount of platform-specific code to make it faster.

A JIT (just-in-time) compiler was once included in both, named Shark, but I have no knowledge if it is included in OpenJDK. Wikipedia OpenJDK does not mention JIT and I did find this old and troubling issue Remove Shark compiler. However, Wikipedia Java version history does include JIT.

If OracleJDK today includes a platform-specific JIT compiler, but OpenJDK does not, that might well explain the difference in performance,

Tags:

Jvm

Openjdk

Jdk