Java发展:各版本JDK新特性 JVM发展 Java技术应用发展

Java发展:各版本JDK新特性 JVM发展 Java技术应用发展

     

       上篇《Java平台体系:组成结构 运行机制 JRE/JDK/OpenJDK Java SE/ EE/ ME Java优点》我们对Java平台体系有了一个全面的了解。

       下面先简单介绍Java发展历史,然后在整个的发展史的基础上,抽取几个关注点的时间线,分别介绍各JDK版本的新特性、JVM发展、以及Java技术的应用发展。

1、Java发展历史简介

       1995年5月23日,互联网兴起,Oak改名为Java,Java语言诞生,提出"一次编译,到处运行";

       1996年1月23日,第一个JDK--JDK1.0诞生,技术代表:纯解释执行的Java虚拟机(Sun Classic VM)、Applet、AWT等;

       1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入Java技术;

       1996年9月,约8.3万个网页应用了Java技术来制作;

       1997年2月19日,JDK1.1发布,技术代表:JAR文件格式、JDBC、JavaBeans、RMI,Java重要语法:内部类(Inter Class)和反射(Reflection)等;

       1997年9月,JavaDeveloperConnection社区成员超过十万;

       1998年2月,JDK1.1被下载超过2,000,000次;

       1998年12月4日,JDK1.2发布,拆分三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME),技术代表:EJB、Java Plug-in、Java IDL、Swing等,JVM内置JIT,Java语法/API:strictft关键字、Collections集合类等;

       1999年4月27日,HotSpot虚拟机发布,作为JDK1.2附加程序;

       2000年5月8日,JDK1.3发布,内置默认HotSpot虚拟机,改进主要在一些类库:JNDI、RMI、Timer API、Java 2D API等;

       2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机;

       2002年2月13日,JDK1.4发布,走向成熟的版本,发布新特性:正则表达式、异常链、NIO、日志类、XML解析器和XSTL转换器等;    

       2004年9月30日,JDK1.5(JDK5,公开版本号)发布,java语法新特性:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach循环)等,Java API加入:java.util.concurrent并发包等,改进JVM内存模型(JMM);

       2006年11月13日,SUN开源JDK为OpenJDK,两者代码基本相同;

       2006年12月11日,JDK6发布,J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME,改进:提供动态语言支持(内置JS引擎)、提供编译API和微型HTTP服务器API等,JVM改进:锁与同步、垃圾收集、类加载等算法;

       2009年4月7日Google App Engine开始支持Java;

       2009年04月20日,Oracle74亿美元收购Sun。取得java的版权;

       2011年7月28日,Oracle发布JDK7的正式版,主要改进:提供新的G1收集器,加强对非Java语言的调用支持、升级加载类架构等;

       2014年3月18日,Oracle发布JDK8的正式版,主要改进:支持Lambda表达式和虚拟扩展方法、新的日期和时间API、提供Nashhorn JavaScript引擎、提高安全性;

        2017年发布java9.0的正式版(预计)…

2、各JDK版本的新特性

2-1、JDK5(JDK1.5)--2004年9月30日

语言新特性:

1、自动装箱与拆箱;

2、枚举;

3、静态导入;

4、可变长参数;

5、内省;

6、泛型;

7、动态注解;

8、遍历循环(foreach循环);

9、Java API加入:java.util.concurrent并发包;

10、改进JVM内存模型(JMM)、自适应垃圾收集配置等;

2-2、JDK6--2006年12月11日

1、Web服务元数据;

2.、提供脚本语言/动态语言支持(内置JS引擎);

3、JTable的排序和过滤;

4、更简单,更强大的JAX-WS;

5、轻量级Http Server;

6、嵌入式数据库 Derby;

7、JVM改进:锁与同步、并发垃圾收集、类加载等算法;

2-3、JDK7--2011年7月28日

语言改进:

1、switch支持使用字符串;

2、运用List<String> tempList = new ArrayList<>(); 即泛型实例化类型自动推断;

3、语法上支持集合,而不一定是数组;

4、新增一些取环境信息的工具方法;

5、Boolean类型反转,空指针安全,参与位运算;

6、两个char间的equals;

7、安全的加减乘除;

8、map集合支持并发请求,且可以写成 Map map = {name:"xxx",age:18};

JVM改进:

9、提供新的G1收集器;

10、加强对动态的调用支持;

11、更严格的类文件检查;

核心基础(core)改进:

12、升级加载类架构;

13、并发和集合更新;

IO改进:

14、提供全面的new I/O APIs(NIO.2)

更多请参考:《Java SE 7 Features and Enhancements》《JDK 7 Features》

2-4、JDK8--2014年3月18日

语言改进:

1、允许在接口中有默认方法实现;

2、支持Lambda表达式 & 虚拟扩展方法;

3、内置函数式接口;

4、支持方法和构造函数引用;

5、提供Nashhorn JavaScript引擎,允许在Java程序中嵌入JS代码

核心改进:

6、新的日期和时间API;

7、支持多重Annotations注解;

VM改进:

8、减少指定字段上的缓存争用;

9、移除Permanent Generation(永久代);

10、移除一些很少使用的垃圾回收器组合等;

更多请参考:《What's New in JDK 8》《JDK 8 Features》

2-5、JDK9—2017年(预计)

1、JDK、源码模块化;

2.、简化进程API;

3、轻量级 JSON API;

4、新的 HotSpot 构建系统;

5、改善锁争用机制;

6、代码分段缓存;

7、智能Java编译, 第二阶段;

8、HTTP 2.0客户端;

更多请参考:《JDK 9》

3、JVM的发展

       我们知道现在JDK1.4后只有HotSpot作为官方提供的JVM,下面我们看下这个局面是怎么产生的。

1、Sun Classic VM

第一款商用JVM;

JDK1.0/JDK1.1只内置Classic VM,JDK1.2/JDK1.3与HotSpot并存,JDK1.2默认使用Classic VM,JDK1.3默认使用HotSpot,JDK1.4抛弃Classic VM;

本身只解释执行,JIT编译器需要外挂,且解释器与编译器不能同时配合工作;

内存模型:基于handler的对象查找方式;

执行效率低;

2、Sun Exact VM

只发布JDK1.2的Solaris平台版本;

被HopSpot取代;

热点代码探测、两级即时编译器、编译器与解释器结合;

内存模型:准确式内存管理(Exact Memory Management);

执行性能较好;

3、Sun HotSpot VM

目前使用最广泛的JVM;

1997年Sun收购获得;

JDK1.2/JDK1.3与HotSpot并存,JDK1.2默认使用Classic VM,JDK1.3默认使用HotSpot,JDK1.4后只有HotSpot;

热点代码探测、两级即时编译器、编译器与解释器结合;

内存模型:准确式内存管理(Exact Memory Management);

未来结合JRockit VM;

更多HotSpot发展变化情况请参考:《Java Virtual Machine Technology》

4、BEA JRockit VM

号称"世界上最快的JVM";

专注服务器硬件与服务端应用;

没有解释器,只有即时编译器编译执行;

 垃圾回收器和MissionControl服务套件比较优秀;

被Oracle收购,与HopSpot结合;

5、其他

IBM J9 VM:与HotSpot一样为多用途虚拟机,主要应用IBM自己产品;

Azul VM:在HotSpot基础上改进,专有硬件平台Vege上运行;

 Liquid VM:JRockit VM的虚拟化版本,自带操作系统;

Apache Harmony:不仅仅是JVM,是一个开源的Java程序运行平台,使用自己的Java类库;

Dalvik VM:android平台虚拟机,运行class转化的dex文件,使用寄存器架构,而不是JVM常见的栈架构;

Microsoft JVM:主要在浏览器运行Java早期的Applets程序,1997年被Sun控告而终止;

4、Java技术的应用发展

1、AWT/Swing/SWT

        开发GUI、C/S桌面程序,响应较慢,现在很少应用;

2、Applet

        开发浏览器中运行的网页小程序,需要用户安装JRE插件,响应也慢,现在基本不用;

3、Servlet

        开发服务器端运行的程序,构建了"接收请求--调用servlet程序处理--返回响应"基本模型,属于Java EE重要规范,Tomcat, Jetty, WebLogic , Websphere, JBoss都是实现了Servlet规范的Servlet容器,可以运行Servlet程序;

4、JSP(JavaServer Pages)

        可以在HTML页面中编写Java,没有JPS,Servlet只能用代码一行一行构建响应;

5、MVC

        利用SSH/SSM等一些第三框架,编写Java程序只需要关注业务逻辑的处理;

6、Android

        开发移动平台应用程序,提供了专为移动平台优化的SDK、以及Dalvik VM;

等等...

 

 

上面我们对Java发展有了一个全面的认识,后面我们还将全面深入的学习了解Java……

 

 

【参考资料】

1、Oracle Java官网相关文档:http://www.oracle.com/technetwork/cn/java/index.html

2、Java官方站点:https://www.java.com/zh_CN

3、JVM HotSpot说明:http://www.oracle.com/technetwork/cn/java/javase/tech/index-jsp-136373-zhs.html

4、《深入理解Java虚拟机》

猜你喜欢

转载自blog.csdn.net/shangyuanlang/article/details/80883271
今日推荐