OpenJDK VM和Oracle仍然是两个不同的JVM吗?
我似乎找不到任何关于OpenJDK VM的官方文档。即使在OpenJDK主页上,也有一个开发HotSpot VM的HotSpot小组。
HotSpot组由参与HotSpot虚拟机的设计、实现和维护的开发人员组成。
但是,如果我在我的Windows机器上检查java -version,它就会打印出来
Java HotSpot(TM) 64位服务器VM
但是我的Ubuntu VPS
OpenJDK 64位服务器VM
如果这是两个不同的VM,它们之间的主要区别是什么?它们有不同的运行时标志集吗?
发布于 2017-06-03 01:59:32
Oracle HotSpot JVM基于OpenJDK HotSpot项目。因此,它们大多是相同的VM,只是Oracle有一些附加的商业特性,主要是Java飞行记录器、应用程序类数据共享和协作内存管理。
对于两个VM,运行时标志几乎是相同的;请参见使用
-XX:+UnlockDiagnosticVMOptions -XX:+UnlockCommercialFeatures -XX:+PrintFlagsFinal在JDK8u131中,唯一的区别是以下标志( OpenJDK VM中没有):
bool EnableResourceManagementTLABCache = true {product}
bool EnableSharedLookupCache = true {product}
bool FlightRecorder = false {commercial}
ccstr FlightRecorderOptions = {product}
bool LogCommercialFeatures = false {product}
ccstr MemoryRestriction = none {commercial}
bool ResourceManagement = false {commercial}
intx ResourceManagementSampleInterval = -1 {commercial}
ccstr StartFlightRecording = {commercial}
bool TraceSharedLookupCache = false {product}
bool UnlockCommercialFeatures := true {commercial}
bool UseAppCDS = false {commercial}发布于 2019-05-22 00:01:15
tl;dr
阿潘金接受的答案现在已经过时了。
对于最近的版本,如Java 11,Oracle产品实际上与OpenJDK项目完全相同。OpenJDK现在包括甲骨文以前的产品:Java飞行记录器、Java任务控制、应用程序类-数据共享和ZGC。
因此,从Java11开始,Oracle构建和OpenJDK构建将本质上是相同的。
Oracle和OpenJDK收敛
甲骨文在过去的几年里发生了巨大的变化。
甲骨文宣布,他们打算将他们的品牌甲骨文JDK与OpenJDK合并,以实现功能对等。两者都是基于OpenJDK代码库的。
为此,以前由甲骨文、https://en.wikipedia.org/wiki/JDK_Flight_Recorder和https://en.wikipedia.org/wiki/JDK_Mission_Control销售的商业工具现在都是开源的,并捐赠给了OpenJDK项目。请参阅这和这上的OpenJDK站点。
甲骨文和OpenJDK联盟的其他成员提供了更多的源代码,使OpenJDK代码库完全开放,并且不受以外的许可的限制。
甲骨文有改变他们的许可证术语。甲骨文JDK品牌产品不再是生产中免费使用的产品.或者,您可以从超过六个供应商中的任何一个获得免费的OpenJDK分发,其中包括一个来自甲骨文的。有关所有细节,请参阅这篇由Java社区支柱机构https://medium.com/@javachampions/java-is-still-free-c02aef8c9e04编写的重要白皮书。
我绘制了这个流程图,以指导您选择JDK源代码。

Oracle保留修补自己品牌产品的权利,以应对紧急修复或安全漏洞。但该公司已表明,他们也打算与其他OpenJDK成员作出贡献和协调。Oracle继续拥有Java商标,并引领Java平台的未来。对于现有的长期支援(LTS)版本8和11,甲骨文已经放弃了对RedHat的管理 (IBM)。

HotSpot对OpenJ9
这里的问题是:
OpenJDK VM和Oracle仍然是两个不同的JVM吗?
正如上面所讨论的,这两个产品都是在特性均等的情况下收敛的。关于https://en.wikipedia.org/wiki/HotSpot技术,请继续阅读。
正如上面所讨论的,HotSpot是Oracle和OpenJDK中的一个组件。今天的HotSpot还结合了来自https://en.wikipedia.org/wiki/JRockit的部分。甲骨文合并了两个Java引擎中最好的引擎,并从太阳微系统和BEA系统中获得了它们。
Eclipse的https://adoptopenjdk.net/项目(以前称为AdoptOpenJDK)也提供了一个OpenJDK构建,使用月食OpenJ9 (基于J9,由IBM捐赠)作为HotSpot的替代。从Adoptium网站下载时,从菜单中选择 HotSpot 或 OpenJ9。
目前,测试似乎表明,OpenJ9的启动速度非常快,而使用内存却少得多,但是HotSpot可以在持续使用的情况下运行得更快。但是对于OpenJ9来说,这还为时过早,所以你自己来调查一下最新的发展吧。

https://stackoverflow.com/questions/44335605
复制相似问题