OpenJDK vs Java HotspotVM

13 浏览
0 Comments

OpenJDK vs Java HotspotVM

OpenJDK VM和Oracle Hotspot VM仍然是两个不同的JVM吗?\n我似乎找不到任何关于OpenJDK VM的官方文档。即使在OpenJDK主页上,也有一个HotSpot Group负责开发HotSpot VM。\n

\nHotSpot组由参与HotSpot虚拟机的设计、实现和维护的开发人员组成。\n

\n然而,如果我在Windows机器上检查java -version,它会打印出\n

\nJava HotSpot(TM) 64-Bit Server VM\n

\n但在我的Ubuntu VPS上\n

\nOpenJDK 64-Bit Server VM\n

\n如果这些是两个不同的虚拟机,它们之间的主要区别是什么?它们是否具有不同的运行时标志集?

0
0 Comments

Java HotspotVM和OpenJDK之间的差异主要在于商业功能。Oracle HotSpot JVM是基于OpenJDK HotSpot项目开发的,因此它们基本上是相同的虚拟机。但是Oracle JVM有一些额外的商业功能,主要包括Java Flight Recorder、Application Class Data Sharing和Cooperative Memory Management。

这里列出了两个虚拟机的运行时标志的差异,OpenJDK中缺少的标志:

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}

如果你关心商业功能并且希望打印标志,那么添加unlockcommercialfeatures可能是有意义的。

更新:Oracle已经将Java Flight Recorder和Mission Control等商业功能开源,转交给OpenJDK项目。Oracle宣布他们自己的Oracle品牌Java实现将与OpenJDK保持功能的一致性。

0
0 Comments

Java是一种广泛使用的编程语言,而Java虚拟机(JVM)是Java的核心组件之一。在Java中,有两个主要的JVM实现:Oracle JDK和OpenJDK。本文将讨论这两个实现之间的差异以及它们的发展。

近年来,Oracle公司进行了重大改变,宣布他们打算将Oracle JDK与OpenJDK进行功能对齐。现在,这两个实现都基于OpenJDK代码。为了实现这一目标,Oracle将之前商业化的工具Flight Recorder和Mission Control开源,并捐赠给OpenJDK项目。此外,Oracle和OpenJDK联盟的其他成员还贡献了更多的源代码,使得OpenJDK完全开源且不受GNU GPL+链接例外之外的任何许可证限制。

然而,Oracle对其JDK的许可条款进行了更改,Oracle JDK品牌产品在生产中不再免费。相反,您可以从包括Oracle在内的数十家供应商中获得OpenJDK的免费分发版本。此外,Oracle仍保留对其品牌产品进行紧急修复或安全漏洞修复的权利,并表示他们打算与其他OpenJDK成员进行贡献和协调。此外,Oracle仍然拥有Java商标并领导Java平台的未来。

除了Oracle JDK和OpenJDK之外,还有其他JVM实现可供选择。其中,HotSpot是Oracle JDK和OpenJDK中的一个组件,它还结合了来自JRockit的部分内容。此外,Eclipse Foundation的Adoptium项目还提供了使用Eclipse OpenJ9作为HotSpot的替代品的OpenJDK版本。目前的测试显示,OpenJ9在启动速度和内存占用方面比HotSpot更出色,但在持续使用中,HotSpot可能运行更快。然而,关于OpenJ9还需要进一步的研究和发展。

近年来,Oracle JDK和OpenJDK之间的差异正在不断缩小,它们正在朝着功能对齐的目标发展。同时,研究人员还在探索其他JVM实现,例如OpenJ9。对于开发人员来说,选择合适的JVM实现取决于具体的需求和性能要求。

0