8 (as of yet, there are no Java 8 update releases). When an update release provides an import-
ant change to JVM behavior, the update release is specified like this: 7u6 (Java 7 update 6).
Sections on Java Enterprise Edition (Java EE) are based on Java EE 7.
This topic does not address the performance of previous releases of Java, though of course
the current versions of Java build on those releases. Java 7 is a good starting point for a topic
on performance because it introduces a number of new performance features and optimiza-
tions. Chief among these is a new garbage collection (GC) algorithm called G1. (Earlier ver-
sions of Java had experimental versions of G1, but it was not considered production-ready
until 7u4.) Java 7 also includes a number of new and enhanced performance-related tools to
provide vastly increased visibility into the workings of a Java application. That progress in
the platform is continued in Java 8, which further enhances the platform (e.g., by introducing
lambda expressions). Java 8 offers a big performance advantage in its own right—the per-
formance of Java 8 itself is much faster than Java 7 in several key areas.
There are other implementations of the Java Virtual Machine. Oracle has its JRockit JVM
(which supports Java SE 6); IBM offers its own compatible Java implementation (including a
Java 7 version). Many other companies license and enhance Oracle's Java technology.
ORACLE'S COMMERCIAL JVM
Java and the JVM are open source; anyone may participate in the development of Java by joining
the project at http://openjdk.java.net . Even if you don't want to actively participate in develop-
ment, source code can be freely downloaded from that site. For the most part, everything dis-
cussed in this topic is part of the open source version of Java.
Oracle also has a commercial version of Java, which is available via a support contract. That is
based on the standard, open source Java platform, but it contains a few features that are not in the
open source version. One feature of the commercial JVM that is important to performance work is
Unless otherwise mentioned, all information in this topic applies to the open source version of
Although all these platforms must pass a compatibility test in order to be able to use the Java
name, that compatibility does not always extend to the topics discussed in this topic. This is
particularly true of tuning flags. All JVM implementations have one or more garbage collect-
ors, but the flags to tune each vendor's GC implementation are product-specific. Thus, while