深刻了解 JVM 虚拟机 – 虚拟机的倒退历史
内容根本来自《深刻了解 JVM 虚拟机》。算是对于倒退历史的一点集体总结。
概述:
- JVM 的倒退历史以及历史进程
- Hotspot 为什么能够称霸武林
- Hotspot 和 JRocket 合并,后果喜忧参半
- 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 失去肯定的跨平台能力