Differences between Oracle JDK and OpenJDK

Are there any crucial differences between Oracle and OpenJDK?

For example, are the garbage collection and other JVM parameters the same?

Does GC work differently between the two?


Both OpenJDK and Oracle JDK are created and maintained currently by Oracle only.

OpenJDK and Oracle JDK are implementations of the same Java specification passed the TCK (Java Technology Certification Kit).

Most of the vendors of JDK are written on top of OpenJDK by doing a few tweaks to [mostly to replace licensed proprietary parts / replace with more high-performance items that only work on specific OS] components without breaking the TCK compatibility.

Many vendors implemented the Java specification and got TCK passed. For example, IBM J9, Azul Zulu, Azul Zing, and Oracle JDK.

Almost every existing JDK is derived from OpenJDK.

As suggested by many, licensing is a change between JDKs.

Ref: List of Java virtual machines


Nothing crucial. The OpenJDK project is mostly based on HotSpot source code donated by Sun.

Moreover, OpenJDK was selected to be the reference implementation for Java 7 and is maintained by Oracle engineers.

There's a more detailed answer to your question here, which links to this 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.


A key difference going forward is the release schedule and support policy.

OpenJDK

OpenJDK will have a feature release every 6 months which is only supported until the next feature release. It's essentially a continuous stream of releases targeted to developers.

Oracle JDK

The Oracle JDK is targeted more towards an enterprise audience which values stability. It's based on one of the OpenJDK releases but is then given long term support (LTS). The Oracle JDK has releases planned every 3 years.

在这里输入图像描述

Source: https://www.oracle.com/java/java9-screencasts.html?bcid=5582439790001&playerType=single-social&size=events

链接地址: http://www.djcxy.com/p/72354.html

上一篇: 循环后清除字符串缓冲区/构建器

下一篇: Oracle JDK和OpenJDK之间的差异