《深入理解Java虚拟机实践》之 虚拟机历史与未来

只有读一本书才能系统全面的学习到知识,否则只能碎片化学习某些知识点 。

感想

这是我读后感的第一篇著作,别笑,真是第一篇 。,这本书我也是挑着看的,我自己美名曰: 不求甚解,也许我只关心我关心的知识点,实用派的想法 。

虚拟机的发展历史

这里纠正了我的一个对Java狭隘的理解,这本书给出Java的定义如下:
Java不仅是一门编程语言,还是一个有一系列计算机软件和规范组成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。

Java的技术体系

Java的技术体系可以分为4个平台,分别为: JavaCard、Java ME、Java SE、Java EE。这里我跟我以前的想法跟以前的区别就是JavaSE以为就是基础API,Java EE 是企业级开发。这里给的定义是Java SE
是面向桌面级开发的,Java EE理解倒是没什么区别,就是面向企业级开发的程序API。

Java虚拟机的发展历史

在阅读这本书之前,我以为JVM虚拟机就是一种,连名字都叫不上来,称呼为Java的JVM虚拟机。在阅读者本书之后我发现Java的虚拟机可不只一个,有很多淹没在历史的长河当中,从时间线上看我们例举一下本书介绍的虚拟机的发展历史和几个需要注意的虚拟机。

  • Sun Classic VM

首先JDK 1.0用的虚拟机是 Sun Classic VM,作为“Java第一位商用虚拟机”,有资格在Java发展史上留下重要的一笔,然后替代 Sun Clssic VM 的是 Sun Extact VM所替代,所替代的原因是Sun Classic VM 编译期和解释器不配合,不能同时工作,执行效率和当时C/C++比起来确实很慢,造成当时人们对于“Java运行速度慢” 的一种形象。

  • Sun Extact VM

Sun Extact VM 解决了编译器和解释器不配合的问题,使其两个能同时混合开发,从而提高了效率,但是 Sun Extact VM 没有在存活多长时间,就被一个明星虚拟机给取代了,也就是我们大名鼎鼎的Sun Hot Spot VM 取代了。

  • Sun HotSpot VM

Sun HotSpot VM 现在我们最广泛的一个虚拟机,他用于Sun JDK 和OpenJDK中,而这两种JDK是我们使用最广泛的JDK了。从而我们可以看到了Sun HotSpot VM 在我们虚拟机中的地位。但是他相较于上边我们所说的Sun Extack VM有什么优点呢? 而且它最开始还不是Sun公司的开发的虚拟机,而是Sun公司看到了一家小公司开发的,发现他有许多新技术和实际效果。他的优点是什么呢?

HotSpot VM的热点代码探测能力可以通过执行计数器找到最具有编译价值的代码,然后通知JIT编译器以方法为单位进行编译。如果一个方法被平凡调用,或者方法中有效循环次数很多,将会分别处罚标准编译和OSR(栈上替换)编译动作。通过编译器和解释器恰当的协同工作,可以在最优化程序响应时间和最佳执行性能取得平衡,而且无需等待本地代码输出才能执行程序,既是变异的时间压力也相对减小,这样有助于引入更多的代码优化技术,输出质量更高的本地代码。

Sun HotSpot VM和 Sun Extact VM最后的取舍不是因为Sun Extact VM 没有 前者的优点。是当时Sun公司最终选择了一种开发,具体原因这本书的作者也没说...

其他著名虚拟机

  • JRrockit VM

前面介绍了Sun公司开发的各种虚拟机,除了Sun公司以外,其他组织也研究过不少虚拟机实现,其中最大、最著名的就是BEA和IBM公司了。BEA公司开发的JRockit VM曾经号称“世界上最快的虚拟机”,广告词当时是这么写的,最后BEA公司和Sun公司被Oracle公司收购了,从而也是吧JRrockit VM优秀的地方合并到HotSpot VM中了。

  • IBM J9 VM

这款虚拟机你可以看到,是IBM公司开发的虚拟机,被人简称为 J9 虚拟机,他的作用不像 JRrockit面向的是服务器端,它类似于HotSpot VM面向的是方方面面,但是他局限于IBM的各种业务,不是针对广大Java开发者们。

Java技术的未来

  • 模块化
  • 混合语言
  • 多核并行
  • 进一步丰富语法
  • 64位虚拟机

你可能感兴趣的