赞
踩
一次编写、到处运行;相对安全的内存管理和访问机智;热点代码检索和运行时编译以及调优;完善的API,多样的第三方类库。
(1)始祖-1996年:Sun Classic/Exact VM 慢
只能使用纯解释型方式来执行代码,使用即时编译器需要外挂,使用了外挂解释器就不能工作。
(2)武林盟主-1997年:HotSpot VM
目前使用范围最广,使用热点代码探测技术使得即时编译压力减小。
(3)小家碧玉:Mobile/Embedded VM
面对移动和嵌入式市场,使用较少,前途不乐观,多用在功能机上。
(4)天下第二:BEA JRockit/IBM J9 VM
JRockit不包含解释器,全部代码即时编译,被Oracle收购,已不再发展。
J9在设计上全面考虑服务端、桌面应用、嵌入式的多用途虚拟机,依然十分活跃;在职责分离与模块化上比hot spot优秀,2016年开源后捐献给了Eclipse基金会管理。
(5)软硬合璧:BEA Liquid VM/Azul VM
与特定硬件平台绑定或配合工作的专用虚拟机,或提供特殊的功能特性。
Liquid VM是BEA公司开发的运行在Hypervisor系统上的JRockit虚拟机的版本,不需要操作系统的支持,或者说它自身实现了一个专用操作系统的必要功能,此项目目前已停止。
Azul VM是运行在Azul公司专有硬件系统Vega上的java虚拟机,很优秀,目前已停止。
Zing虚拟机是从HotSPot基础上独立开发出的高性能虚拟机,可运行在Linux/X86-64平台上。
(6)挑战者:Apache Harmony/Google Android Dalvik VM
只能称作虚拟机,而不是java虚拟机;Apache Harmony兼容JDK5,JDK6,未通过TCK认证。
Dalvik VM未遵循《Java虚拟机规范》,使用寄存器架构,在Android5.0中被ART取代。
(7)没有成功,但并非失败:Microsoft JVM及其他
1997年微软因为被Sun公司告侵权而要求终止其虚拟机发展,三年后又希望微软不要这么做。(这波操作属实令人无语)
(8)百家争鸣
KVM:强调简单、轻量、高度可移植,但运行速度较慢
Java Card VM:精简,支持绝大多数常用加密算法,放入智能卡,SIM卡,银行卡等
Squawk JM:嵌入式虚拟机实现,
JavaInJava:实验室性质的虚拟机,用java语言实现java本身的运行环境,只能运行在另一个宿主虚拟机上
Maxin VM:几乎以Java代码实现的元循环虚拟机,有先进的即时编译器和垃圾收集器,是未来代替HotSpot中服务器端编译器的希望
以及其他很多的虚拟机…………
(1)无语言倾向:
java最大的优势在于庞大的用户群和及其成熟的软件生态。Graavl VM是跨语言全栈虚拟机,可作为“任何语言”的平台上使用,是真正意义上和物理计算机相对应的高级语言虚拟机,对输入中间自动优化,运行时即时编译优化,优秀的执行效率,发展潜力令人期待。
(2)新一代即时编译器
HotSpot中含有编译耗时端但输出代码优化低的客户端编译器(C1)、编译耗时长但输出代码质量更高的客户端2(C2),通常会在分层编译机制下和解释器相互配合来共同构成执行子系统。JDK10中加入了一个全新的即时编译器:Graal编译器,它作为java虚拟机执行代码的最新引擎,同时为HotSpot和Graal VM注入了更强的驱动力。
(3)向native迈进
小型微服务化,Substrate Vm的出现让Java逐步开始对提前编译提供支持,包括了独立,能异常处理,同步调度,进程管理,内存管理,和JNI访问等组件,显著的降低内存和启动时间。
(4)灵活的胖子
HotSpot经过不断的更新,一系列的重构和开放,虽然代码复杂度、体积仍在变大,但其架构未老朽、而是拥有了越来越多的开放性和扩展性。
(5)语言语法持续加强
新版本的Java中越来越出现其他语言中的优秀特性。
接下来呢就是可以自己实战JDK了,OpenJDK地址:https://openjdk.java.net/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。