HotSpot 到底是什么,它与 JVM 和 OpenJDK 有什么关系?是图书馆吗?它究竟是做什么的?
另外,OpenJDK 和 HotSpot 有什么区别?
HotSpot 到底是什么,它与 JVM 和 OpenJDK 有什么关系?是图书馆吗?它究竟是做什么的?
另外,OpenJDK 和 HotSpot 有什么区别?
Java 虚拟机规范中说明了究竟什么是Java 虚拟机
JVM 根据定义是虚拟机,即模拟真实机器所做的软件机器。和真机一样,它有指令集、虚拟计算机架构和执行模型。它能够运行用这个虚拟指令集编写的代码,就像一台真正的机器可以运行机器代码一样。
HotSpot是 JVM 概念的实现。它最初由 Sun 开发,现在归 Oracle 所有。JVM 规范还有其他实现,例如JRockit、IBM J9等等。
请参阅Java 虚拟机实现列表
OpenJDK是一个项目,在该项目下开发了 HotSpot(以及 JDK 的许多其他部分,例如编译器、API、工具等)的开源实现。
注意:AdoptOpenJDK在 2020-06年末移至 Eclipse 基金会后已更名为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提供的预构建发行版提供您在某些硬件上选择HotSpot或OpenJ9 。
图表显示了 HotSpot 和 JRockit 合并的历史,以及在 AdoptOpenJDK 中提供的 OpenJ9。
HotSpot 到底是什么,它与 JVM 和 OpenJDK 有什么关系?是图书馆吗?它究竟是做什么的?
OpenJ9通常以更快的启动速度和更低的内存使用量而闻名,而对于长时间运行的应用程序, HotSpot的整体运行效率可能更高。两者都备受推崇、久经考验,并且可用于 OpenJDK 的发行版。
OpenJDK是一个开源项目,它完全实现了定义Java 平台的Java 规范、 JSR和JEP。我今天知道的每个 JVM 实现都完全或大部分基于 OpenJDK代码库,并使用 HotSpot 或 OpenJ9 技术。
除了 JVM,OpenJDK 还为 Java SE 规范要求的所有类提供了源代码实现,例如java.lang、java.util、java.time和其他包。
另外,OpenJDK 和 HotSpot 有什么区别?
HotSpot的源代码作为OpenJDK项目的一部分进行存储、维护和进一步开发。替代方案OpenJ9由Eclipse Foundation托管、维护和进一步开发,同时在 OpenJDK 的某些发行版中替换 HotSpot。
一些 Java 技术发行版选择与 HotSpot 一起提供。一些发行版选择用OpenJ9替代OpenJDK代码库中的HotSpot部分。
这是一个流程图图形,可帮助您选择 Java 平台发行版的供应商。
OpenJDK(Open Java Development Kit)是Java平台标准版(Java SE)的免费开源实现。openjdk是由Sun Microsystems发起的一个项目,现在受到许多公司和社区的关注,用于构建Java Development Kit绝对是开源的。根据官方文档。
OpenJDK 是 Java 平台标准版 (Java SE) 规范的开源实现。2007 年 5 月,Sun 向 OpenJDK 社区发布了适用于 Java SE 的完全可构建的 Java 开发工具包 (JDK) 版本,作为 GNU 通用公共许可证第二版 (GPLv2) 下的免费软件。Sun 宣布了 OpenJDK 社区的临时管理委员会。Sun 还宣布,基于 OpenJDK 的实现可以使用 Java SE 6 Technical Compatibility Kit (JCK) 来建立与 Java SE 6 规范的兼容性。
OpenJDK 项目由许多组件组成——HotSpot(虚拟机)、Java 类库和 javac Java 编译器。有关它的更多信息,请访问其网站。
Sun/Oracle 提供的当前 JVM 被称为HotSpot,因为它会在代码中寻找使用热点(代码使用更密集的地方)以进行“即时”优化。来自维基百科的HotSpot,作为“Java HotSpot 性能引擎”发布,是用于桌面和服务器的 Java 虚拟机,由 Oracle Corporation 维护和分发。
如上所述,HotSpot 是 Java 虚拟机 (JVM) 概念的跨平台实现,并根据 GNU 通用公共许可证与 OpenJDK(Java 开发人员工具包)一起分发。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/
快乐编码!
JVM 是一个抽象机器(规范)。HotSpot、OpenJDK 和 JRockit 等都是 JVM 的实现。
免费和开源的实现
HotSpot,主要参考 Java VM 实现
OpenJDK — Open Java Development Kit 是一个免费的开源实现,在 GNU 通用公共许可证 (GNU GPL) 下获得许可,但有一个链接例外。
专有实现
HotSpot 是 C++ hacking 的一种高级形式,为了使用它,您必须针对它进行构建,以便编译即使是最简单的东西。除非您调整编译器或从头开始编写它们。HotSpot 基本上是一种将源代码转换为 C++ 代码,然后将其编译为本机代码的方法,因此术语 jit 已编译。