前言
为了达到给所有硬件提供一致的虚拟机平台的目的,jvm牺牲了一些与硬件相关的性能特性。
第一章 走进java
2006年,Sun公式宣布最终会将java开源,并建立了OpenJDK组织源码进行独立管理。
除了极少数产权代码(Sun本身也无权进行开源处理)外,OpenJDK几乎包括了Sun JDK的全部代码。
所以OpenJDK 7 与 Sun JDK 1.7本质史昂就是同一套代码库开发的产品
历史
1996年,sun发布jdk1.0,该jdk中所带的虚拟机就是Classic VM. 这款虚拟机采用纯解释权方式来执行java代码,若用jit编译器,就必须外挂。使用外挂jit编译器后,解释器便不再工作。
若用解释器,解释器的性能本来就比较慢。
若用编译器,编译器需要对每一行代码都进行编译,由于程序相应时间的压力,不敢应用编译耗时较高的优化技术。
由此,“java语言很慢”的形象产生jdk 1.2时,在Solaris平台发布了Exact VM.
使用了准确式内存管理(虚拟机可以知道内存中某个位置的数据具体是什么类型)。
之前Class VM基于handler(句柄)的对象查找方式,每次定位对象多了一次查找开销HotSpot VM:准确式内存管理,热点代码探测技术
Sun JDK,Open JDK都是使用HotSpot VMDalvik VM,即android上使用的jvm。
严格来说,Dalvik VM不是一个java虚拟机;
它没有遵循java虚拟机规范,不能直接执行java的class文件;
使用的是寄存器架构而不是jvm中常用的栈架构Microsoft JVM
微软曾是java技术铁杆支持者,与sun争夺java控制权,令java从跨平台技术变为绑定在windows上的技术是ms的主要目的。
sun起诉微软,微软最终败诉,赔偿sun公司2000万,承诺终止其jvm发展。
有趣的是,xp sp3完全抹去了jvm,sun又登报希望微软不要这么做
未来
- 模块化
- 混合语言(java平台上多语言很合编程正成为主流)
- 多核并行(函数式)
- 进一步丰富语法
- 64位虚拟机