The main difference between OpenJDK and Oracle JDK lies in the license. OpenJDK is open source, while Oracle JDK contains proprietary pieces, and thus it is licensed under the Oracle binary license. The fact that OpenJDK is open source provides a whole new range of benefits (and exciting discoveries) through the ability to study and modify its source code.
It is also worth mentioning that more than 90 percent of Oracle JDK is based on OpenJDK source code. This means the OpenJDK quality is not compromised in any way.
Following is a basic list and not specific to any java version.
- Serviceability: OpenJDK does not contain Mission Control, Java Flight Recorder , VisualVM. Instead of these, OpenJDK has Thermostat. It isn’t the same but it aims for many of the same goals.
- Font: The font library is different. This means slightly different text layout in some cases.
- CMS: Same for the colour management system. OpenJDK uses the same solutions as the rest of RHEL (FreeType & LCMS) while the proprietary JDK has established existing code that it has used for many years.
- OpenJDK use the RHEL system NSS crypto library, not the JDK’s built-in one. This mostly affects elliptic curve cryptography, where OpenJDK supports all of the RHEL curves and none of the others.
- 2D library: OpenJDK has its own 2D library, different from the proprietary JDK. This means that its performance is different.
- OpenJDK doesn’t have application Class Data Sharing. This feature is intended to reduce memory footprint by sharing class metadata.
- OpenJDK doesn’t support the Resource Management API for Java.
- OpenJDK doesn’t support the Simple Network Management Protocol API.
- OpenJDK has its own browser plugin and Java Web Start application (icedtea-web package). We wrote this independently of Oracle.
- OpenJDK doesn’t support Cooperative Memory Management. This allows the user to tune the G1 garbage collector depending on a compromise between memory usage and performance.
- OpenJDK supports system-tap.
- OpenJDK is provided with full-debug clone-build (-debug- subpackages).
- OpenJDK comes with javadocs. Both zipped and uncompressed.
- OpenJDK is delivered with full sources.
- OpenJDK uses system tzdata and system certificates (Oracle has these bundle).