乐趣区

关于JVM:深入理解JVM虚拟机-虚拟机的发展历史

深刻了解 JVM 虚拟机 – 虚拟机的倒退历史

​ 内容根本来自《深刻了解 JVM 虚拟机》。算是对于倒退历史的一点集体总结。

概述:

  1. JVM 的倒退历史以及历史进程
  2. Hotspot 为什么能够称霸武林
  3. Hotspot 和 JRocket 合并,后果喜忧参半
  4. jvm 面临的挑战以及将来的倒退前瞻

思维导图:

虚拟机倒退历史

classic VM – 第一台正式商用 JAVA 虚拟机

​ 于 1996 年 1 月 23 日 Sun 公布 jdk1.0 诞生,是 JAVA 真正意义上第一台 JVM 虚拟机

特点:

  • 只反对 纯解释器 运行
  • 条件编译智能用外挂(Sun wjit)。解释器和编译器 不能配合工作
  • 外部工作原理非常简略

意义:

  • jdk1.2 之前惟一指定虚拟机
  • jdk1.2 存在 hotspot 和 exact vm 混合的状况

媲美 hotspot 的虚拟机:Exact Vm

特点:

  • 精确的内存治理(能够晓得那一块内存的准确数据类型)。摈弃基于句柄的对象查找形式
  • 热点探测,两级即时编译,编译和解释混合

意义:

  • 因为更优良的 HotSpot 虚拟机呈现,没有被正式商用,存在工夫非常短暂
  • jdk1.2 时,sun 提供了此虚拟机配合 classic 应用

武林霸主:hotspot Vm

特点:

  • 具备 exact vm 虚拟机的所有个性
  • 反对热点代码摸索
  • 准确的内存治理
  • 高频代码的规范即便编译和栈上替换(重要)

意义:

  • HotRocket:jdk8 的 Hotspot 和 JRocket 进行合并
  • 实际效果并不好,JRocket 的很多个性没有施展进去。

手机端虚拟机:Embeded vm

​ 专门为了挪动智能手机设计的一款 jvm,然而最终失败。被 Andriod 间接取代。

天下第二:JRocket 和 IBM J9VM

JRocket:

特点:
  • 2008 年 JRockit 随着 BEA 被 Oracle 收买,现已不再 持续倒退,永远停留在R28 版本,这是 JDK 6 版 JRockit 的代号。
  • JRockit 外部不蕴含解释器实现,全副代 码都靠即时编译器编译后执行
  • 专门为服务器硬件和服务端利用场景高度优化的虚拟机
意义:
  • 在 JDK1.8 当中 oracle 整合 JRockit 到 HotSpot 虚拟机上,然而因为两者的个性差别较大,只整合了局部个性,后果并不是非常现实
  • 作为一款优良的 JVM 实现已经当先 JVM 前列
  • 同时随同着优良的组件 Java Mission Control 故障解决套件诞生。

IBM J9VM

特点:
  • 原名叫做:IT4J,因为名字不好记 J9 更为宽泛认知
  • 由 k8 扩大而来,名字来源于一个 8bit 的谬误问题
  • 号称是世界上最快的 Java 虚拟机(官网定义)
  • 在商用虚拟机的畛域极具影响力
意义:
  • 2017 年左右,IBM 公布了开源 J9 VM,命名为 openJ9,交给 Eclipse 基金会治理,也称为Ecilpse openJ9

须要非凡平台运行:Bea liquid / Azulejo VM (专用虚拟机)

Bea liquid:

特点:
  • 自身实现一个专门操作系统。运行在自家 Hypervisor 零碎上
  • 因为 JRocket 的开发而终止。
意义:
  • 随着 JRockit 虚拟机终止开发,Liquid VM 我的项目也进行了。

Azule VM:

特点:
  • 对于 HotSpot 进行大量的改良,运行与 Azul System 专有零碎下面的 Java 虚拟机
  • 提供微小的内存范畴的进展工夫和垃圾收集工夫:pic 收集器 c4 收集器
意义:
  • 最终产线投入到 Zing VM 虚拟机

    • 低提早
    • 疾速预热
    • 易于监控

挑战:Apache Harmony / google android dalvik vm

Apache Harmony:

特点:
  • 对于 HotSpot 进行大量的改良,运行与 Azul System 专有零碎下面的 Java 虚拟机
  • 提供微小的内存范畴的进展工夫和垃圾收集工夫:pic 收集器 c4 收集器
意义:
  • 已经因为提交 TCK 和 SUN 矛盾而愤然退出 JCP 组织
  • 因为 Open Jdk 的呈现悄悄退出市场。然而外部许多的代码排汇进 ibm open jdk7 的实现

google android dalvik vm

特点:
  • andriod 4 之前是支流的虚拟机平台,5 之后被反对提前编译 ART 虚拟机代替
  • 已经十分强力的一个虚拟机
  • 不能间接运行 class,然而和 JAVA 有着很亲密的关系

    • DEX 文件能够通过 Class 文件进行转化
意义:
  • andriod 5 之后被反对提前编译 ART 虚拟机代替

其余 JVM 虚拟机

​ 这里介绍一些书中没有提到的非重点的 JVM 虚拟机

  • Micronsoft JVM:已经作为 Window 平台性能最好的虚拟机。被 Sun 公司进行侵权制裁之后,微软转而与 JAVA 为敌,开发后续的.net 语言反抗 JAVA 生态。
  • KVM:强调轻量,简略,高度可移植。运行速度比较慢。在 IOS 和 Android 呈现之前受到欢送
  • JAVA Card VM:JAVA 虚拟机的一个子集,负责 Applet 解释和执行
  • Squarewk VM:由 Sun 公司开发,运行于 Sun SPot,也已经用于 java card。是一款 JAVA 比重非常高的虚拟机。
  • JavaInJava:Sun 公司在 97 – 98 年开发一款试验性质的虚拟机,必须运行在一个宿主的 JVM 下面。价值在于自证元循环,具备肯定的钻研价值
  • Maxine VM: 和 javainjava 十分类似,简直全副以 JVM 作为运行环境,Graal 编辑器让他有了更进一步的倒退,同时 Graal 也是作为 graal 编辑器的良好辅助虚拟机
  • Jikes RVM: ibm 开发的专门钻研 JAVA 虚拟机技术的我的项目。也是一个元循环虚拟机
  • IKVM.NET:基于.NET 框架的 java 虚拟机,借助 MONO 失去肯定的跨平台能力
退出移动版