JVM各种虚拟机

 

java虚拟机是java运行的及时,不同的虚拟机对于java运行有着非常重要的影响,我们熟知的虚拟机有HotSport,JRockit还有IBM J9虚拟机,在java发展史中除了这三个知名的虚拟机外,还有一些其他的虚拟机

Classic VM 与 Exact VM

1996年1月23日,Sun发布JDK1.0,世界第一款商用虚拟机Classic VM发布

HotSpot VM

HotSpot VM 是Sun/OracleJDK和OpenJDK中的默认Java虚拟机,也是目前使用范围最广的Java虚拟机。在最初并
非由Sun公司所开发,而是由一家名为“Longview Technologies”的小公司设计的。HotSpot既继承了Sun之前两款
商用虚拟机的优点,也有许多自己新的技术优势,如它名称中的HotSpot指的就是它的热点代码探测技术。
         2006年,Sun陆续将SunJDK的各个部分在GPLv2协议下开放了源码,形成了Open-JDK项目,其中当然也包括
HotSpot虚拟机。HotSpot从此成为Sun/OracleJDK和OpenJDK两个实现极度接近的JDK项目的共同虚拟机。
         Oracle收购Sun以后,建立了HotRockit项目来把原来BEA JRockit中的优秀特性融合到HotSpot之中。到了2014年
的JDK 8时期,里面的HotSpot就已是两者融合的结果,HotSpot在这个过程里移除掉永久代,吸收了JRockit的Java
Mission Control监控工具等功能

        BEA JRockit JVM

JRockit虚拟机曾经号称是“世界上速度最快的Java虚拟机”,它是BEA在2002年从Appeal Virtual Machines公司收购
获得的Java虚拟机。
        BEA将其发展为一款专门为服务器硬件和服务端应用场景高度优化的虚拟机,由于专注于服务端应用,它可以不太
关注于程序启动速度,因此JRockit内部不包含解释器实现,全部代码都靠即时编译器编译后执行。
        除此之外,JRockit的垃圾收集器和Java Mission Control故障处理套件等部分的实现,在当时众多的Java虚拟机中
也处于领先水平。
        JRockit随着BEA被Oracle收购,现已不再继续发展,永远停留在R28版本,这是JDK 6版JRockit的代号。

        IBM J9 VM

        IBM J9虚拟机并不是IBM公司唯一的Java虚拟机,不过目前IBM主力发展无疑就是J9。
与BEA JRockit只专注于服务端应用不同,IBM J9虚拟机的市场定位与HotSpot比较接近,它是一款在设计上全面考
虑服务端、桌面应用,再到嵌入式的多用途虚拟机。
        开发J9的目的是作为IBM公司各种Java产品的执行平台,在和IBM产品(如IBM WebSphere等)搭配以及在IBM
AIX和z/OS这些平台上部署Java应用。
        从2016年起,IBM逐步将OMR项目和J9虚拟机进行开源,完全开源后便将它们捐献给了Eclipse基金会管理,并重
新命名为Eclipse OMR和OpenJ9。

        Apache Harmony VM

        Apache Harmony是一个Apache软件基金会旗下以Apache License协议开源的实际兼容于JDK 5和JDK 6的Java程
序运行平台,它含有自己的虚拟机和Java类库API,用户可以在上面运行Eclipse、Tomcat、Maven等常用的Java程
序。但是,它并没有通过TCK(Technology Compatibility Kit)认证。
        当Sun公司把自家的JDK开源形成OpenJDK项目之后,Apache Harmony开源的优势被极大地抵消,以至于连
Harmony项目的最大参与者IBM公司也宣布辞去Harmony项目管理主席的职位,转而参与OpenJDK的开发。虽然Harmony没有真正地被大规模商业运用过,但是它的许多代码(主要是Java类库部分的代码)被吸纳进IBM的JDK 7实现以及Google Android SDK之中,尤其是对Android的发展起了很大推动作用

 Graal VM

2018年4月,Oracle Labs新公开了一项黑科技:Graal VM,从它的口号“Run Programs Faster Anywhere”就能感
觉到一颗蓬勃的野心。
        Graal VM 是一个在HotSpot虚拟机基础上增强而成的跨语言全栈虚拟机,可以作为“任何语言”的运行平台使用,这
里“任何语言”包括了Java、Scala、Groovy、Kotlin等基于Java虚拟机之上的语言,还包括了C、C++、Rust等基于
LLVM的语言,同时支持其他像JavaScript、Ruby、Python和R语言等。
JVM各种虚拟机_第1张图片

 


 

你可能感兴趣的:(java)