深入理解JVM—第一章:走进JAVA

1,概述

    世界上并没有完美的程序,但我们并不因此而沮丧!

2,Java技术体系

    2.1 JDK(Java开发工具包)

    Java程序设计语言、Java虚拟机、Java API类库三部分组成。JDK是支持Java程序开发的最小环境。

    2.2 JRE(Java运行时环境)

    JavaSE API和Java虚拟机两部分组成。JRE是支持Java程序运行的标准环境。

    2.3 Java技术体系包含的内容

    深入理解JVM—第一章:走进JAVA_第1张图片

3,Java发展史

   95年,Oak语言改名Java语言。

    96年,JDK1.0发布,其Java虚拟机是纯解释执行的。

    97年,JDK1.1发布,技术代表:JDBC、JAR、JavaBeans、RMI。语法上,还有内部类和反射

    98年,JDK1.2发布,将Java技术体系分成三个方向,分别是J2SE、J2EE、J2ME。该版本的Java虚拟机第一次内置了JIT编译器。

    99年,HotSpot虚拟机发布,成为JDK1.3及之后所有SunJDK的默认虚拟机。

    00年,JDK1.3发布,对类库进行改进,JNDI服务被作为一项平台级服务提供,使用CORBA IIOP来实现RMI的通信协议等

    02年,JDK1.4发布,提供新技术:正则表达式、异常链、NIO、日志类、XML解析器、XSLT转换器等。

    04年,JDK1.5发布,提供语法糖,方便程序员编写程序,如自动装箱/拆箱、泛型、可变长参数、遍历循环等。

    06年,JDK1.6发布,改进:对动态语言支持,提供编译API和微型HTTP服务器API等。同时对Java虚拟机进行大量改进,如锁与同步、垃圾收集、类加载等方面的算法进行改进。其次,Sun公司还将Java开源,建立OpenJdk组织对这些源码进行独立管理。OpenJDK几乎包括了SunJdk的全部代码。

    09年,JDK1.7发布,提供新的G1收集器,加强对Java语言的调用支持,升级类加载架构等。同年,Oracle公司收购了Sun公司,Java商标归Oracle所有。

    13年,JDK1.8发布,增加特性:Lambda表达式和在JDK1.7中未实现的一部分Coin等。

4,主要的Java虚拟机

    4.1 Sun Classic/Exact VM

    Sun Classic是第一款商用Java虚拟机。但此时它仅可以使用纯解释器执行。要用JIT编译器,必须外挂JIT编译器,但是外挂之后,解释器就不再工作了,所以每行代码都会进行编译,这样子导致价值不大的代码也被编译,浪费时间。

    Exact VM使用准确式内存管理,知道内存中某个位置的数据具体是什么类型的。例如一个32位的整数123456,它是reference类型指向123456的内存地址还是一个数值为123456的整数。

    4.2 Sun HotSpot VM

    HotSpotVM既有准确式内存管理,又有热点代码探测技术,还能通过执行计数器找出最具有价值的代码,然后通过JIT编译器对其进行编译。

    4.3 BEA JRockit/IBM J9 VM

    JRockit VM是BEA公司的一款专注于服务端应用的虚拟机。不太关注启动速度,不包含解析器实现,全部代码靠即时编译器编译后执行。其垃圾收集器跟MissionControl服务套件等部分的实现,一直处于领先水平。

    J9 VM是IBM公司一款定位与HouSpot接近的,从服务端到桌面应用,再到嵌入式都全面考虑的多用途虚拟机。

5,展望Java技术的未来

    5.1 模块化技术

    避免应用系统与技术平台越来越复杂、越来越庞大的情况下,为了系统一个小功能,不得不重新下载、安装等操作。因此利用模块化技术将庞大的系统划分为不同的部分,同时不同部分可以独立运行。

    5.2 混合语言

    基于不同语言的优势去解决不同的问题。这需要让多种语言都能在同一JVM上进行运行。

    5.3 多核并行

    利用多个CPU核心提供的计算资源来完成一个复杂的计算任务。

    5.4 进一步丰富语法

    Sun 专门为改进Java语法在OpenJDK中建立了Coin子项目来统一处理对Java语法的细节修改,使得Java语言的精确性和易用性有更大的进步。如语法糖:自动装箱/拆箱、泛型、动态注解等。

    5.5 64位虚拟机

    随着硬件的发展,计算机终究会完全过渡到64位的时代,而虚拟机应用也会从32位发展到64位。

 

                           ----------参考《深入理解Java虚拟机》 周志明 著

你可能感兴趣的:(JVM)