1,Sun Classic VM:
1.现在此款虚拟机已经淘汰了,是历史上第一款商用的虚拟机。
2.只能使用纯解释器的方式来执行Java代码。
3.服役于 JDK 1.0、1.1、1.2;在 1.3、1.4 作为 HotSpot VM 的备选 VM;之后退出历史舞台;
2,Sun Exact VM
1.Exact Memory Management准确式内存管理
2.编译器和解释器混合工作以及两级即时编译器
3.只在Solaris平台发布
4.英雄气短,就是存活时间短,在JDK1.2被HotSpot取代
3,HotSpot VM
1,它是Sun/OracleJDK 和OpenJDK中的默认虚拟机,也是目前使用范围最广的虚拟机,但他不是由sun公司开发,而是由一
家名为“Longview Technologies”公司设计的,甚至这个虚拟机最初并非是为java语言研发的,Hotspot既继承了sun
公司前面两款虚拟机的优点(准确数内存管理),也有了自己的新技术如:热点代码探测技术,JDK8 时移除掉了永久代,吸
收了JRockit的java Mission Control 监控工具等功能。
2,HotSpot VM的热点代码探测能力可以通过执行计数器找出最具有编译价值的代码,然后通知JIT编译器以方法为单位进行编译。
如果一个方法被频繁调用,或方法中有效循环次数很多,将会分别触发标准编译和OSR(栈上替换)编译动作。 通过编译器与解
释器恰当地协同工作,可以在最优化的程序响应时间与最佳执行性能中取得平衡,而且无须等待本地代码输出才能执行程序,即
时编译的时间压力也相对减小,这样有助于引入更多的代码优化技术,输出质量更高的本地代码.
4,Mobile/Embedded VM:
sun/oracle 公司所研发的虚拟机可不仅包含前面介绍到的服务器,桌面领域的商用虚拟机,面对移动和嵌入式市场,也有专门的
虚拟机,java ME中的虚拟机现在处于比较尴尬的位置,所面临的局面远不如服务器和桌面领域乐观,他最大的一块市场-----
只能手机被Android和IOS二分天下
5,KVM
KVM中的K是“Kilobyte”的意思,它强调简单、 轻量、 高度可移植,但是运行速度比较慢。 在Android、 iOS等智能手机操作
系统出现前曾经在手机平台上得到非常广泛的应用。
6,BEA JRockit VM
1.JRockit VM曾经号称“世界上速度最快的Java虚拟机”
2.由于专注于服务器端应用,它可以不太关注程序启动速度,因此JRockit内部不包含解析器实现,全部代码都靠即时编译器编译后
执行。除此之外,JRockit的垃圾收集器和MissionControl服务套件等部分的实现,在众多Java虚拟机中也一直处于领先水平
3.在JDK6时代停止更新,被融入 HotSpot VM;
7,IBM J9 VM:
1.IBM J9 VM并不是IBM公司唯一的Java虚拟机,不过是目前其主力发展的Java虚拟机,IBM J9 VM原本是内部开发代号,正式名
称是“IBM Technology for Java Virtual Machine”,简称IT4J,只是这个名字太拗口了一点,普及程度不如J9.
2.与BEA JRockit专注于服务器端应用不同,IBM J9的市场定位与Sun HotSpot比较接近,它是一款设计上***从服务器端到桌面
应用再到嵌入式都全面考虑的多用途虚拟机***,J9的开发目的是作为IBM公司各种Java产品的执行平台,它的主要市场是和IBM产
品(如IBM WebSphere等)搭配以及在IBM AIX和z/OS这些平台上部署Java应用。
3.2016 年起开源;之后捐献给 Eclipse 基金会管理
8,Azul VM
Azul VM是Azul Systems公司在HotSpot基础上进行大量改进,运行于Azul Systems公司的专有硬件Vega系统上的Java虚拟机,
每个Azul VM实例都可以管理至少数十个CPU和数百GB内存的硬件资源,并提供在巨大内存范围内实现可控的GC时间的垃圾收集器、
为专有硬件优化的线程调度等优秀特性。 在2010年,Azul Systems公司开始从硬件转向软件,发布了自己的Zing JVM,可以在通
用x86平台上提供接近于Vega系统的特性。
9,BEA Liquid VM:
1.Liquid VM即是现在的JRockit VE(Virtual Edition),它是BEA公司开发的,可以直接运行在自家Hypervisor系统上的JRockit
VM的虚拟化版本,Liquid VM不需要操作系统的支持,或者说它自己本身实现了一个专用操作系统的必要功能,如文件系统、 网络支持等。
由虚拟机越过通用操作系统直接控制硬件可以获得很多好处,如在线程调度时,不需要再进行内核态/用户态的切换等,这样可以最大限度地
发挥硬件的能力,提升Java程序的执行性能。
2.与 JRockit VM 同时终止开发
10,Dalvik VM
1.Dalvik VM只能称做“虚拟机”,而不能称做“Java虚拟机”,它没有遵循Java虚拟机规范,不能直接执行Java的Class文件,使用的是
寄存器架构而不是JVM中常见的栈架构。
2.但是它与Java又有着千丝万缕的联系,它执行的dex(Dalvik Executable)文件可以通过Class文件转化而来,使用Java语法编写
应用程序,可以直接使用大部分的Java API等。
11,Microsoft JVM:
1.微软公司为了在IE3中支持Java Applets应用而开发了自己的Java虚拟机,虽然这款虚拟机只有Windows平台的版本,却是当时Windows
下性能最好的Java虚拟机。
2.1997 年 10 月,Sun 以侵犯商标、不正当竞争、垄断等控告Microsoft,最终Microsoft赔偿2000万美元(因垄断总赔偿10亿美元)并
终止该 JVM 的发展;(后来就有了 .NET Framework)
12,Apache Harmony VM:
并不是一个Java VM;未通过TCK(Technology Compatibility Kit)兼容性测试和使用授权的 VM,在Sun的JDK开源后,Apache
Harmony 失去开源优势,未被真正大规模商用,但许多代码被 IBM 的 JDK 7 和 Google Andriod SDK 吸纳;
13,Google Andriod Dalvik VM:
1.并不是一个 Java VM;没有遵循《Java 虚拟机规范》,不能直接执行 Java 的 Class 文件;使用寄存器架构而非 JVM 中常见的
栈架构;使用 Java 语言编写应用,可以直接使用绝大部分 Java API;
2.在 Android 5 时代被支持提前编译(Ahead of Time Compilation, AOT)的 ART VM 全面替代;
14,其他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;