Java 虚拟机家族

1. Sun Classic VM

服役于 JDK 1.0、1.1、1.2;在 1.3、1.4 作为 HotSpot VM 的备选 VM;之后退出历史舞台;

2. Sun Exact VM

具备高性能 VM 的雏形(如:热点探测、两级即时编译器、编译器与解释器混合工作模式等);使用准确式内存管理;在 1.2 时作为 Classic VM 的备选 VM;随即被 HotSpot 所取代;

3. HotSpot VM

源于一家小公司 Longview Technologies 为 Self 语言实现的 VM,初期在即时编译等多方面有优秀的理念和实际成果,因此在 1997 年 Sun 通过收购该公司或者 HotSpot VM;

HotSpot 继承了 Sun 之前两款商用虚拟机的优点(准确式内存管理),也带来了创新(热点探测:通过执行计数器找到最具有编译价值的代码,再通过即时编译器以方法为单位进行编译;若一个方法被频繁调用或方法中有效循环次数很多,将会分别触发标准即时编译和栈上替换,On-Stack Replacement,OSR;通过编译器与解释器恰当协同,平衡最优程序响应时间和最佳执行性能,且无需等待本地代码输出就能执行程序,减小即时编译的时间);

到 2014 年的 JDK 8 时期,HotSpot VM 融合了 BEA JRockit,移除掉永久代,吸收 JRockit 的 Java Mission Control;

4. Mobile/Embedded VM

面向移动和嵌入式市场的 JVM;

5. BEA JRockit VM

专为服务器硬件和服务端应用场景高度优化的 VM;不太关注程序启动速度,因此不包含解释器实现,全部代码靠即时编译器编译后执行;在 JDK 6 时代停止更新,被融入 HotSpot VM;

6. IBM J9 VM

定位于 HotSpot 接近,全面考虑服务端、桌面应用、嵌入式等;在职责分离和模块化方面做的比 HotSpot 更优秀;
2016 年起开源;之后捐献给 Eclipse 基金会管理;

7. BEA Liquid VM

BEA 自家 Hypervisor系统上的JRockit虚拟机的虚拟化版本;不需要操作系统支持,不需要内核态/用户态的切换,可以最大限度发挥硬件能力;与 JRockit VM 同时终止开发;

8. Azul VM

Azul Systems 在 HotSpot 上大改所得;适用于 Azul Systems 的专有硬件 Vega 系统,对大型硬件的线程调度有优秀的优化效果;

Zing VM 是从 HotSpot 旧版本独立分支重新开发的高性能 JVM,重新编写了垃圾收集器;可以轻易带来低延迟、快速预热、易于监控等功能;

9. Apache Harmony VM

并不是一个 Java VM;未通过 TCK(Technology Compatibility Kit)兼容性测试和使用授权的 VM,在 Sun 的 JDK 开源后,Apache Harmony 失去开源优势,未被真正大规模商用,但许多代码被 IBM 的 JDK 7 和 Google Andriod SDK 吸纳;

10. Google Andriod Dalvik VM

并不是一个 Java VM;没有遵循《Java 虚拟机规范》,不能直接执行 Java 的 Class 文件;使用寄存器架构而非 JVM 中常见的栈架构;使用 Java 语言编写应用,可以直接使用绝大部分 Java API;
在 Android 5 时代被支持提前编译(Ahead of Time Compilation, AOT)的 ART VM 全面替代;

11. Microsoft JVM

为 Internet Explorer 3 支持 Java Applets 应用而开发的 JVM(背离了一次编译,到处运行的初衷,但确实是 Windows 下性能最好的 JVM);
1997 年 10 月,Sun 以侵犯商标、不正当竞争、垄断等控告 Microsoft,最终 Microsoft 赔偿 2000 万美元(因垄断总赔偿 10 亿美元)并终止该 JVM 的发展;(后来就有了 .NET Framework)

12. 其他 VM

  • KVM Android、iOS 出现前被广泛应用的 VM;
  • Java Card VM 应用于智能卡、 SIM卡、银行信用卡、借记卡等,负责对 Java Applet 程序进行解释执行;
  • Squawk VM 运行与 Sun SPOT(Wi-Fi 设备)
  • JavaInJava 实验性 VM,试图以 Java 语言来实现 Java 语言本身的运行环境(Meta-Circular,元循环),证明了一门语言可以自举;
  • Maxine VM 类似 JavaInJava,但比 JavaInJava 执行效率靠谱得多,接近 HotSpot VM Client 模式;
  • Jikes RVM IBM 用来研究 JVM 实现技术的项目,类似 JavaInJava,也是一个元循环 VM;
  • IKVM.NET 基于 .NET 框架实现的 JVM,借助 Mono 获得了一定跨平台能力;可以将 Java Class 文件编译成 .NET Assembly;

上一篇:Java 发展史
下一篇:Java 技术倾向

PS:感谢每一位志同道合者的阅读,欢迎关注、评论、赞!


参考资料:

  • [1]《深入理解 Java 虚拟机》
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aurelius-Shu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值