JVM和HotSpot之间的区别?
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之后,甲骨文通过结合其竞争产品JRockit的重要部分,进一步发展了HotSpot。HotSpot现在通过OpenJDK项目开源,免费提供。
OpenJ9中的另一个这样的实现,由IBM开发,现在通过Eclipse基金会开源,并免费提供。一些基于OpenJDK构建的JVM发行版将HotSpot替换为OpenJ9,同时仍然使用OpenJDK的其余部分,例如Java SE类库。例如,AdoptOpenJDK上提供的预构建发行版在某些硬件上提供了HotSpot或OpenJ9的选择。
显示HotSpot和JRockit合并历史的图表,以及OpenJ9都可以在AdoptOpenJDK中使用。
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基金会进行安装,维护和进一步开发,同时在OpenJDK的某些发行版中取代了HotSpot。
一些Java技术发行版选择与HotSpot一起提供。一些发行版选择用替代的OpenJ9替换OpenJDK代码库中作为HotSpot的部分。
下面是一个流程图,可帮助您为 Java 平台的发行版选择供应商。