JVM和HotSpot之间的区别?

时间:2013-05-15 14:48:45

标签: java jvm-hotspot

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

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

6 个答案:

答案 0 :(得分:126)

Java Virtual Machine Specification

中列出了Java虚拟机究竟是什么的定义

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

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

请参阅List of Java Virtual Machine Implementations

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

答案 1 :(得分:21)

OpenJDK (Open Java Development Kit)是Java平台标准版(Java SE)的免费开源实现.openjdk是Sun Microsystems开发的一个项目,现在受到很多人的关注公司和社区绝对在开源中构建Java开发工具包。根据{{​​3}}。

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项目包含许多组件 - HotSpot(虚拟机),Java类库和javac Java编译器。有关详细信息,请访问它的official documentation

Sun / Oracle提供的当前JVM称为 HotSpot ,因为它在代码(代码更加集中使用的地方)中寻找热点,以实现“即时”优化。来自site HotSpot,作为“Java HotSpot性能引擎”发布的是用于桌面和服务器的Java虚拟机,由Oracle Corporation维护和分发。

答案 2 :(得分: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/

快乐的编码!

答案 3 :(得分:7)

  

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

免费和开源实施

  • HotSpot ,主要参考Java VM实现

  • OpenJDK - Open Java Development Kit是一个根据GNU通用公共许可证(GNU)许可的免费开源实现 GPL)带有链接异常。

专有实施

    Oracle为Linux,Windows和Solaris收购的
  • JRockit (最初来自Appeal Virtual Machines)

了解更多implementations
link解释了HotSpot和JRocket之间的区别

答案 4 :(得分:0)

  

JVM和HotSpot之间的区别?

Java Virtual Machine (JVM)是一台虚构的计算机,从未在物理上构建为硬件。 JVM运行编译为虚构的instruction set的程序,并以intermediate representation的形式写入存储,称为bytecode

在运行时,必须将字节码从虚拟指令集转换为主机CPU的实际指令集。这可以由口译员即时完成。或者,可以在称为Just-In-Time (JIT) compiling的过程中完全编译和缓存字节码,以使其运行速度比通过解释器的运行速度快。

在过去的几十年中,有许多implementations of the JVM。大多数已经消失了。

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

由IBM开发的OpenJ9中的另一个此类实现,现在通过Eclipse Foundation开放源代码并免费提供。在OpenJDK上构建的某些JVM发行版将HotSpot替换为OpenJ9,同时仍在使用Java SE类库之类的其余OpenJDK。例如,在某些硬件上,AdoptOpenJDK上可用的预构建发行版提供了 HotSpot OpenJ9 的选择。

A graphic depicting the evolution of JVM technology over time, with features of JRockit being rolled into HotSpot, and  J9 being open-sourced as OpenJ9 and competing as an alternative to HotSpot.

  

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

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

OpenJ9 通常以更快的启动速度和较低的内存使用而广为人知,而 HotSpot 对于长期运行的应用程序可能整体上更有效地运行。两者都备受推崇,陈旧,并随OpenJDK发行版一起提供。

OpenJDK是一个开源项目,可以完全实现定义Java SpecificationsJSRJEPthe Java platform s。我今天知道的每个JVM实现都完全或大部分基于OpenJDK codebase,并使用HotSpot或OpenJ9技术。

除了JVM,OpenJDK还为Java SE规范所需的所有类提供了源代码实现,例如 java.lang java.util ,< em> java.time 和其他软件包。

  

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

HotSpot 的源代码已被保存,维护和进一步开发,作为 OpenJDK 项目的一部分。 OpenJ9 ,是在 Eclipse Foundation 内进行存放,维护和进一步开发的,同时在某些OpenJDK发行版中替代了HotSpot。

某些Java技术发行版选择与HotSpot一起提供。某些发行版选择用 OpenJ9 替代 OpenJDK 代码库的 HotSpot 部分。

以下是流程图图形,可帮助您选择用于Java发行版的供应商。

Flowchart guiding you in choosing a vendor for a Java 11 implementation

Motivations in choosing a vendor for Java

答案 5 :(得分:-13)

HotSpot是C ++黑客的一种高级形式,为了使用它,你必须构建它以便编译即使是最简单的东西。除非你调整编译器或从头开始编写它们。 HotSpot基本上是一种将源代码转换为C ++代码然后将其编译为本机代码的方式,因此编译了jit这个术语。