Here are the list of key factors that need to consider when using or migrating from open JDK to Oracle JDK
Following is a basic list and not specific to any java version.
- Font: The font library is different. This means slightly different text layout in some cases. Oracle JDK 8 is distributed with a font, while OpenJDK 8 relies on at least one font being available in the system. Neither OpenJDK 11+ or Oracle JDK 11+ have fonts embedded.
- 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 can use the RHEL system NSS crypto library, instead of 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 may differ.
- Application Class Data Sharing is part of OpenJDK since OpenJDK 10. This feature reduces 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-webpackage). We wrote this independently of Oracle. Icedtea-web is currently supported on RHEL with OpenJDK 7, and OpenJDK 8 and for Windows OpenJDK 8, which was completed in 2019. However, following Oracle’s path, IcedTea-Web is being deprecated on oracle JKD 11
- 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. Cooperative Memory Management was deprecated for removal with no replacement in JDK10 and removed in JDK11.
- 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
tzdataand system certificates (Oracle has these bundle).
- OpenJDK 8 and 11 from Red Hat fully support Shenandoah, a low pausetime Garbage Collector for large heaps.
- OpenJDK Jave Flight Recorder (JFR) is a different implementation than Oracle JDK.
Look for the support of GraalVM which is Oracle Enterprise version that enhances and Add more performance to application without change in the single line of code .