sun class vm
是java1.0版本发布的第一款商用java虚拟机,其特点是只有解释器,如果需要编译器则需要外挂,但不能同时工作,现在hotspot内置了这个虚拟机。
exact vm
是为了解决上个虚拟机不能同时使用解释器和编译器的问题,它可以知道内存中某个位置的数据是什么类型 具备热点探测,能混合工作的雏形特点,但可惜英雄命短,在solaris 平台短暂使用后,hotspot就凭空出现替换了他。
hotspot vm
是由一家小公司设计的,后来被sun公司收购,jdk1.3的时候就成为了默认虚拟机 绝对的市场占用率,oracle jdk和openjdk都默认使用,服务器端,桌面移动端嵌入式都可使用 主要特点是: 通过计数器找到最具编译的价值代码,触发及时编译或栈上替换 通过编译器与解释器协同工作,在最优化的程序响应时间与最佳执行性能中取得平衡。
bea的JRockit
是三个商用虚拟机之一,主要专注于服务器端,因为不太关注响应时间,所以不包含解释器实现,只靠及时编译器,是最快的jvm。 主要特点是延迟敏感型,能提供 毫秒或微秒级别的响应时间,用于军事指挥,电信网络。 还拥有missionControl服务套件,能以极低的开销来监控、管理、分析生产环境中应用程序的工具。 后来 被oracle收购。
ibm的J9
定位于hotspot比较接近,可很多用途,广泛用于ibm的各种java产品,与自身产品结合得很好,是在自身产品中使用得最快的虚拟机。
kvm和cdc/cldc hotspot
是oracle在javame产品所使用的两个虚拟机,kvm是早期产品, 在更低端的设备上如老人机,智能控制器,传感器有自己的一席之地,而cdc是当年诺基亚塞班系统的游戏平台,如果ios和android二分天下后就没落了。
azul vm
azul systems公司在hotspot基础上改进,与自身的vega系统绑定,软硬件配合的专用虚拟机,高性能java虚拟机的战斗机。
liquid vm
bea公司开发的,也是高性能战斗机类似azul vm,特点是不需要操作系统的支持,本身已经实现了一个操作系统必要功能。目前已经停止了。
apache harmony
是由ibm和intel联合开发的开源jvm,但因为sun坚决不让它获得jcp认证,于是在2011年推移,ibm也转而参与了openjdk的开发,但它的java类库代码被先进了android sdk中了,也算是有所使用。
microsoft jvm
由微软为了能在ie3浏览器中支持java applets而开发的,特点是只能在window平台运行,但后面被sun指控后被微软移除了。
taobaojvm
由alijvm团队发布,基于openjdk开发的指定版本的alibabaJDK,是阿里java体系的基石,主要特点是创新的GCIH实现了off-heap,将生命周期较长的java对象从heap中移到了heap外,并且GC不能管理 GCIH内部的java对象,从而达到降低GC的回收频率和提升GC效率的目的。还有在GCIH内部的对象能实现在多个java虚拟机进程中共享。目前taobao VM已经在淘宝、天猫上线,替换了oracle官方的jvm。
Dalvik VM
由谷歌开发的用于andorid系统,在android2.2提供,特点是没有遵循java虚拟机规范,不能直接执行java的class文件而是dex文件执行效率比较高,架构上是基于寄存器架构,不是jvm的栈架构,在android5.0后支持提前编译。
Grall VM
由oracle开发的虚拟机,号称run programs faster anywhere ,是在hotspot vm基础上增强而成的跨语言全栈虚拟机,可以作为任何语言的平台使用,且支持各种语言的混用。其工作原理是将这些语言的源代码或源码编译后的中间格式通过解释器转换为最能被graal VM接受的中间表示,估计是oracle主推和未来会替代hotspot的虚拟机
|