JVM 和 HotSpot 的区别?
一个Java虚拟机(JVM)是从未被物理建成硬件假想计算机。JVM 运行编译成其虚构指令集的程序,该指令集作为称为字节码的中间表示写入存储。在运行时,字节码必须从虚构的指令集转换为主机 CPU 的实际指令集。这可以由口译员即时完成。或者字节码可以被完全编译和缓存,以比通过解释器运行得更快,在一个称为即时 (JIT) 编译的过程中。几十年来,有许多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 究竟是什么,它与 JVM 和 OpenJDK 有什么关系?是Library吗?它究竟有什么作用?
HotSpot是 JVM 部分的实现,它解释和/或编译要在主机 CPU 上执行的 Java 字节码。
OpenJ9是一个替代方案。
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 一起提供。一些发行版选择将OpenJDK代码库中的HotSpot部分替换为OpenJ9替代品。
总结
- HotSpot 和OpenJ9 都是jvm的一种实现
参考
更多推荐
所有评论(0)