Java发展:各版本JDK新特性 JVM发展 Java技术应用发展
上篇《Java平台体系:组成结构 运行机制 JRE/JDK/OpenJDK Java SE/ EE/ ME Java优点》我们对Java平台体系有了一个全面的了解。
下面先简单介绍Java发展历史,然后在整个的发展史的基础上,抽取几个关注点的时间线,分别介绍各JDK版本的新特性、JVM发展、以及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的正式版(预计)…
语言新特性:
1、自动装箱与拆箱;
2、枚举;
3、静态导入;
4、可变长参数;
5、内省;
6、泛型;
7、动态注解;
8、遍历循环(foreach循环);
9、Java API加入:java.util.concurrent并发包;
10、改进JVM内存模型(JMM)、自适应垃圾收集配置等;
1、Web服务元数据;
2.、提供脚本语言/动态语言支持(内置JS引擎);
3、JTable的排序和过滤;
4、更简单,更强大的JAX-WS;
5、轻量级Http Server;
6、嵌入式数据库 Derby;
7、JVM改进:锁与同步、并发垃圾收集、类加载等算法;
语言改进:
1、switch支持使用字符串;
2、运用List
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》
语言改进:
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》
1、JDK、源码模块化;
2.、简化进程API;
3、轻量级 JSON API;
4、新的 HotSpot 构建系统;
5、改善锁争用机制;
6、代码分段缓存;
7、智能Java编译, 第二阶段;
8、HTTP 2.0客户端;
更多请参考:《JDK 9》
我们知道现在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控告而终止;
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虚拟机》