一个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的一种实现

参考

java - JVM 和 HotSpot 之间的区别? - 堆栈溢出

JVM 和 HotSpot 的区别?相关推荐

  1. 虚拟机jvm和hotspot的联系与区别

    虚拟机jvm和hotspot的联系与区别 JVM是虚拟机,总的来说是一种标准规范,虚拟机有很多实现版本.主要作用就是运行java的类文件的.而HotSpot是虚拟机的一种实现,它是sun公司开发的,是 ...

  2. 关于JVM和Dalvik的区别

    2019独角兽企业重金招聘Python工程师标准>>> Dalvik和JVM的几点区别       1.Dalvik 基于寄存器,而 JVM 基于栈.基于寄存器的虚拟机对于更大的程序 ...

  3. ART/Dalvik,JVM/Dalvik 虚拟机的区别

    从功能上来看,一个高级语言虚拟机主要分为两部分,一个是解释器部分,用来运行高级语言编译生成的ByteCode:还有一部分则是Runtime运行时,用来负责运行时的内存空间开辟.管理等等. JAVA虚拟 ...

  4. java方法重载和重写在jvm_重载和重写在jvm运行中的区别(一)

    1.重载(overload)方法 对重载方法的调用主要看静态类型,静态类型是什么类型,就调用什么类型的参数方法. 2.重写(override)方法 对重写方法的调用主要看实际类型.实际类型如果实现了该 ...

  5. JVM(HotSpot) 垃圾收集器

    需要提前了解的知识: 1. JVM内存模型 2. JVM垃圾回收算法 HotSpot虚拟机所有的垃圾收集器如下图: 上面有7种收集器,分为部分,上面为新生代收集器,下面是老年代收集器.如果两个收集器之 ...

  6. JVM和JMM的区别

    参考文献: java中JVM和JMM之间的区别 感谢作者分享!

  7. java jvm和android DVM区别

    本文转自:http://blog.csdn.net/yujun411522/article/details/45932247 1.Android dvm的进程和Linux的进程, 应用程序的进程是否为 ...

  8. JVM和DVM的区别

    1.首要差别 Dalvik: 基于寄存器,编译和运行都会更快些 JVM: 基于栈, 编译和运行都会慢些 2.字节码的区别 Dalvik: 执行.dex格式的字节码,是对.class文件进行压缩后产生的 ...

  9. java and android_java jvm和android DVM区别

    本文转自:http://blog.csdn.net/yujun411522/article/details/45932247 1.Android dvm的进程和Linux的进程, 应用程序的进程是否为 ...

最新文章

  1. python程序如何循环_在Python的一段程序中如何使用多次事件循环详解
  2. matplotlib(2)
  3. mysql int类型的长度值
  4. php 递归求得目录大小
  5. linux文件操作命令介绍(一)
  6. Go 语言里怎么正确实现枚举?答案藏着官方的源码里
  7. 苹果iPhone XI奋起直追?直接升级四摄镜头
  8. python 百分比输出_获取Linux系统负荷百分比的python脚本
  9. python学习笔记六 初识面向对象上(基础篇)
  10. 安卓模拟器刷小米系统_小米5x原生rom系统刷机-小米5X MIUI10刷机包下载V9.7.21最新版-西西软件下载...
  11. MATLAB二次规划和整数规划
  12. trans系列是sci几区_怎么确定SCI是几区的?
  13. 封闭解(Closed-form solution)、解析解(Analytical solution)、数值解(Numerical solution) 释义
  14. java-No route to host 解决办法
  15. 关于Java的抽象类与接口
  16. sql server delete语句删除行
  17. 充电电池哪个牌子好用?
  18. MarkDown 图片大小问题
  19. 米波现场桌面软件服务器地址,米波现场系统启动workerman服务service workerman start...
  20. amr转wav java,Android系统wav和amr的互转

热门文章

  1. python之pyc
  2. java打印插件_java c/s项目中有没有好用的打印插件?
  3. 如何用阿里云服务器建立一个wordpress网站?
  4. ios 怎么判断字符串的字节数_如何用IOS判断字符串是不是纯数字
  5. 右手螺旋判断磁感应强度方向_弹簧左旋or右旋在功能和应用上有什么区别,如何判断左旋还是右旋...
  6. tcl之quartus 脚本学习 · 1 quartus tcl packages 介绍
  7. 计算机及应用学习顺序,自考计算机及应用专业经验谈
  8. Linux环境中的帮助命令有,Linux下的帮助命令
  9. PLOS_ONE_Genome-Wide Analysis of Long Noncoding RNA (lncRNA) Expression in Hepatoblastoma Tissues
  10. yii2 跨域请求配置_如何在SpringBoot应用中实现跨域访问资源和消息通信?