JVM 和 HotSpot 之间的区别?

新手上路,请多包涵

HotSpot 到底是什么?它与 JVM 和 OpenJDK 有什么关系?是图书馆吗?它到底是做什么的?

另外,OpenJDK 和 HotSpot 有什么区别?

原文由 Justin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 809
2 个回答

什么是 Java 虚拟机的定义在 Java 虚拟机规范 中有说明

JVM 根据定义是 虚拟机,即模拟真实机器功能的软件机器。和真机一样,它有 指令集、虚拟计算机架构和执行模型。它能够运行用这个虚拟指令集编写的代码,就像真机可以运行机器代码一样。

HotSpot 是 JVM 概念的一个实现。它最初由 Sun 开发,现在归 Oracle 所有。 JVM 规范还有其他实现,例如 JRockitIBM J9 等。

请参阅 Java 虚拟机实现列表

OpenJDK 是一个项目,在该项目下开发了 HotSpot(以及 JDK 的许多其他部分,例如编译器、API、工具等)的开源实现。

原文由 Edwin Dalorzo 发布,翻译遵循 CC BY-SA 4.0 许可协议

注意: AdoptOpenJDK 在 2020-06 年底移至 Eclipse 基金会后更名为 Adoptium


JVM 和 HotSpot 之间的区别?

Java 虚拟机 (JVM) 是一种假想的计算机,从未以物理方式构建为硬件。 JVM 运行编译成其虚构 指令集 的程序,该指令集作为称为 字节码中间表示形式 写入存储。

在运行时,字节码必须从虚构的指令集转换为主机 CPU 的实际指令集。这可以由口译员即时完成。或者字节码可以被完全编译和缓存,以比通过解释器运行得更快,在一个称为 即时 (JIT) 编译 的过程中。

几十年来,有许多 JVM 的实现。大多数都已经消失了。

HotSpot 是 JIT 技术的一种实现,它从解释运行开始,然后观察应用程序的实际性能。然后选择部分应用程序作为本机代码完全编译并缓存,以实现更快的执行速度。 HotSpot 是作为商业产品在 Sun 开发的。收购 Sun 后, 甲骨文 通过结合其竞争产品 JRockit 的重要部分进一步发展了 HotSpot。 HotSpot 现在通过 OpenJDK 项目开源,免费提供。

OpenJ9 中的另一个此类实现由 IBM 开发,现在通过 Eclipse Foundation 开源并免费提供。一些基于 OpenJDK 构建的 JVM 发行版用 OpenJ9 替换了 HotSpot,同时仍然使用 OpenJDK 的其余部分,例如 Java SE 类库。例如, AdoptOpenJDK 上提供的预构建发行版让您可以在某些硬件上选择 HotSpotOpenJ9

图表显示了 HotSpot 和 JRockit 合并的历史,以及 AdoptOpenJDK 中可用的 OpenJ9。

图表显示了 HotSpot 和 JRockit 合并的历史,以及 AdoptOpenJDK 中可用的 OpenJ9

HotSpot 到底是什么?它与 JVM 和 OpenJDK 有什么关系?是图书馆吗?它到底是做什么的?

  • HotSpot 是 JVM 的一部分的实现,它解释和/或编译要在主机 CPU 上执行的 Java 字节码。
  • OpenJ9 是一个替代方案。

众所周知, OpenJ9 以更快的启动速度和更低的初始内存使用量而闻名,而 HotSpot 对于长时间运行的应用程序整体运行效率更高。两者都备受推崇,经久不衰,并且可以在 OpenJDK 的发行版中使用。

OpenJDK 是一个开源项目,它完全实现了定义 Java 平台Java 规范JSRJEP 。主要贡献者包括 Oracle、IBM、Apple 等。

我今天所知道的每个 JVM 实现都完全或大部分基于 OpenJDK 代码库,并使用 HotSpot 或 OpenJ9 技术。

除了 JVM 之外,OpenJDK 还为 Java SE 规范所需的所有类提供源代码实现,例如 java.langjava.utiljava.time 和其他包。

另外,OpenJDK 和 HotSpot 有什么区别?

HotSpot 的源代码作为 OpenJDK 项目的一部分进行存储、维护和进一步开发。替代方案 OpenJ9Eclipse Foundation 提供、维护和进一步开发,同时在 OpenJDK 的某些发行版中取代 HotSpot。

Java 技术的一些发行版选择与 HotSpot 一起发布。一些发行版选择将 OpenJDK 代码库的 HotSpot 部分替换为替代方案 OpenJ9

这是一个流程图,可帮助您选择 Java 平台分发的供应商。

指导您为 Java 11 实施选择供应商的流程图

选择 Java 供应商的动机

原文由 Basil Bourque 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题