注:本题出自2014年.从Java 11开始,OpenJDK和Oracle JDK正在融合.

Oracle和OpenJDK之间有什么重要区别吗?

例如,垃圾收集和其他JVM参数是否相同?

GC在两者之间的工作方式是否不同?

推荐答案

OpenJDK和Oracle JDK目前仅由Oracle创建和维护.

OpenJDK和Oracle JDK是通过TCK(Java技术认证工具包)的相同Java规范的实现.

JDK的大多数供应商都是在OpenJDK的基础上编写的,他们在不 destruct TCK兼容性的情况下,对组件进行了一些调整(主要是替换获得许可的专有部件/替换为只在特定操作系统上工作的高性能项目).

许多供应商实现了Java规范并通过了TCK.例如,IBM J9、Azul Zulu、Azul Zing和Oracle JDK.

几乎所有现有的JDK都派生自OpenJDK.

正如许多人所说,许可是JDK之间的一种变化.

从JDK 11开始,访问长期支持的Oracle JDK/Java SE现在需要商业许可证.现在,您应该注意您正在安装的JDK,因为没有订阅的Oracle JDK可能会停止工作.source

参考:100

Java相关问答推荐

为什么Java中的两个日期有差异?

使用包私有构造函数强制子类Java类

如何使用Java API在Oracle ODI中运行模拟?

Listview—在Android Java中正确链接项目时出错

JDK22执行repackage of goal org. springframework. boot:spring—boot—maven—plugin:3.2.3:repackage failed:unsupported class file major version 66—>

无法在org. openjfx:javafx—fxml:21的下列变体之间进行 Select

确定Java中Math.Ranb()输出的上限

如何在运行时动态创建表(使用Java、JPA、SprringBoot)

JavaFX如何在MeshView中修复多个立方体?

JDK 21-为什么线程局部随机S nextInt不直接用Super.nextInt实现?

虚拟线程应该很快消亡吗?

SpringBoot:在条件{Variable}.isBlank/{Variable}.isEmpty不起作用的情况下进行路径变量验证

无法使用Freemarker从XML中读取重复的标记值

从LineChart<;字符串、字符串和gt;中删除数据时出现特殊的ClassCastException;

在应用getCellFormula()时,Excel引用中的文件名始终为";[1]";使用Apache POI()

为什么mvn编译生命周期阶段不只是编译已更改的java文件?

rest api服务 spring 启动中出现IllegalFormatConversionException

ReturnedRect在升级后反转

[Guice/MissingImplementation]:未绑定任何实现

双对象供应商