JVM和HotSpot之间的区别?

Jus*_*tin 133 java jvm-hotspot

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

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

Edw*_*rzo 140

Java虚拟机规范中说明了Java虚拟机究竟是什么的定义

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

HotSpot是JVM概念的一种实现.它最初由Sun开发,现在由Oracle拥有.还有JVM规范的其他实现,如JRockit,IBM J9等等.

请参阅Java虚拟机实现列表

OpenJDK的是其下热点(和其他许多件JDK如编译器,应用程序接口,工具等)的开源实现开发的一个项目.


Bas*_*que 35

注意:在2020-06年末转移到 Eclipse 基金会后,AdoptOpenJDK已更名为Adoptium。


JVM 和 HotSpot 的区别?

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

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

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

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

OpenJ9 中的另一个这样的实现,由 IBM 开发,现在通过Eclipse Foundation开源并免费提供。一些基于 OpenJDK 的 JVM 发行版将 HotSpot 替换为 OpenJ9,同时仍然使用 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。我今天所知道的每个 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 供应商的动机

  • 非常有帮助的答案。谢谢先生 (3认同)

NIN*_*OOP 22

OpenJDK(Open Java Development Kit)是Java平台标准版(Java SE)的免费开源实现.openjdk是由Sun Microsystems开发的项目,现在由许多公司和社区关注构建Java开发工具包绝对是开源的.根据官方文档.

OpenJDK是Java平台标准版(Java SE)规范的开源实现.2007年5月,Sun在GNU通用公共许可证第2版(GPLv2)下向OpenJDK社区发布了一个完全可构建的Java SE开发工具包(JDK)版本作为免费软件.Sun宣布OpenJDK社区的临时管理委员会.Sun还宣布,基于OpenJDK的实现可以使用Java SE 6技术兼容性工具包(JCK)来建立与Java SE 6规范的兼容性.

OpenJDK项目包括多个组件的- 热点(虚拟机)中,Java类库和javac的Java的compiler.For更多关于它,请访问其网站.

Sun/Oracle提供的当前JVM称为HotSpot,因为它在代码中使用热点(代码更加集中使用的地方)用于"即时"优化.从维基百科中,作为"Java HotSpot性能引擎"发布的HotSpot是由Oracle Corporation维护和分发的桌面和服务器的Java虚拟机.


小智 8

如上所述,HotSpot是Java虚拟机(JVM)概念的跨平台实现,并在GNU通用公共许可证下与OpenJDK(Java Developer Kit)一起分发.HotSpot主要用C++编写,最初是在Sun Microsystems下开发的.它目前是在OpenJDK项目下开发的,网址是www.java.net.HotSpot JVM作为Java 1.2的附加组件提供,后来被用作Java 1.3中的默认Sun JVM.JVM目前处于版本7,Build b147,并且背后有一个活跃的开发社区.

有关更多信息,请转到:https: //www.java.net/

快乐的编码!


Pre*_*raj 7

JVM是一个抽象机器(规范).HotSpot,OpenJDK和JRockit等都是JVM的实现.

免费和开源实现

  • HotSpot,主要参考Java VM实现

  • OpenJDK - Open Java Development Kit是一个免费的开源实现,在GNU通用公共许可证(GNU GPL)下获得许可,并带有链接异常.

专有实现

  • JRockit(最初来自Appeal Virtual Machines)被Oracle收购,用于Linux,Windows和Solaris

对于更多实现,
链接解释了HotSpot和JRocket之间的差异