深刻了解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失去肯定的跨平台能力