Java 虚拟机发展史

4

记录Java虚拟机的发展历程,说不定你的项目就有可能需要这款虚拟机特性

名称

特性/简介

Liquid VM

及是现在的 JRockit VM ,它是BEA公司开发的
直接运行在自家的Hypervisor系统上的 JRockit VM的虚拟化版本
Liquid VM不需要操作系统的支持,他自己实现了专有操作系统的必要功能,如:文件系统、网络支持等

Azul VM

Azul Systems公司在HotSpot VM基础上进行大量改进,运行于公司专有硬件Vega系统上的 Java虚拟机
每个Azul VM实例都可以管理至少十个CPU和数百GB内存的硬件资源,实现在巨大内存范围内可控的GC时间的垃圾收集器,专有硬件的线程调度等优秀特征

IBM J9 VM

市场定位于Sun HotSpot VM接近
设计上从服务器端到桌面应用到嵌入式都全面考虑
开发目的是作为IBM公司各种Java产品的执行平台

JRockit VM

曾号称 “世界上速度最快的Java虚拟机”
IBM公司在2002年从 Appeal Virtual Machines 公司收购的虚拟机
一款专门为服务器硬件和服务器端应用场景高度优化的虚拟机
内部不包含解析器实现,所有代码靠及时编译器编译后执行
垃圾收集器和MissionControl服务套件等在众多虚拟机中一直处于领先水平

Maxine VM

和 JavaInJava 非常类似
项目与2005年开始至今仍在发展中
运行效率已接近HotSpot Client VM

JavaInJava

Sun于1997~1998年研发的一个实验性虚拟机
试图用Java语言实现Java语言本身的运行环境,即 “元循环”

Squawk VM

Sun公司开发、运行在Sun SPOT,一种手持WiFi设备上,也曾用于JavaCard
一个Java代码比重很高的嵌入式虚拟机实现,类加载器,字节码校验器、垃圾回收器、解释器、编译器和线程调度都是Java语言本身完成的,仅用C语言编写设备IO和必要本地代码

CDC-HI VM、CLDC-HI VM

CDC/CLDC是整个 JavaME 的重要支柱

KVM

K是“Kilobyte”,强调简单、轻量、高度可移植,但运行速度慢
曾在手机操作系统得到广泛应用

Sun HotSpot VM

目前使用范围最广的Java虚拟机
最初由 Longview Technologies 公司设计,并非为Java语言开发的,源于Strongtalk VM
Sun在1997年收购了 Longview Technologies 公司,从而获得 Sun HotSpot VM
继承了之前二款虚拟机的优秀特点,也有自己许多的新技术优势
2006年JavaOne大会,Sun宣布Java开源,并随后一年陆续将JDK各部分在GPL协议下公开源码,其中包含Sun HotSpot VM

Exact VM

曾在Solaris平台发布
执行系统已具备现代高性能虚拟机雏形,如:两级及时编译器、编译器与解释器混合工作模式等
Exact VM因使用准确式内存管理而得名,提升了执行性能
虽然Exact VM相对Classic Vm先进了许多,但它在很短暂的时间就被更为优秀的HotSpot VM取代,甚至没有来得及发布Windows,Linux平台的商用版本

Sun Classic Vm

“世界上第一款商用Java虚拟机”
1996年1月23日,Sun公司发布的JDK1.0,Java语言首次拥有正式运行环境
使用纯解释器方式,来执行Java代码,如果使用JIT编译器,就必须外挂
本阶段的虚拟机使用JIT编译器输出本地代码,执行效率和传统的C/C++程序有很大差距,“Java语言很慢”的形象就在这时树立起来了
在JDK1.2之前是SunJDK中唯一的虚拟机,到JDK1.3和HotSpot VM并存,JDK1.4时才完全退出商用虚拟机和Exact VM一起进入Sun Labs Research VM