JDK发展史
jdk1.2
- 1998年12月4日,JDK迎来了一个里程碑式的重要版本:工程代号为Playground(竞技场)的JDK1.2,Sun在这个版本中把Java技术体系拆分为三个方向,分别是面向桌面应用开发的J2SE(Java 2 Platform,Standard Edition)、面向企业级开发的J2EE(Java 2 Platform,Enterprise Edition)和面向手机等移动终端开发的J2ME(Java 2 Platform,Micro Edition)
- 在语言和API层面上,Java添加了strictfp关键字,Java类库添加了现在Java编码之中极为常用的一系列Collections集合类等
jdk1.3
- 2000年5月8日,工程代号为Kestrel(美洲红隼)的JDK 1.3发布
- 相对于JDK 1.2,JDK 1.3的改进
主要体现在Java类库上(如数学运算和新的Timer API等),JNDI服务从JDK 1.3开始被作为一项平台级服务提供(以前JNDI仅仅是一项扩展服务),使用CORBA IIOP来实现RMI的通信协议,等
jdk1.4
- 2002年2月13日,JDK 1.4发布,工程代号为Merlin(灰背隼)
- JDK 1.4同样带来了很多新的技术特性,如正则表达式、异常链、NIO、日志类、XML解析器和XSLT转换器等等。
jdk5
- 2004年9月30日,JDK 5发布,工程代号为Tiger(老虎)
- 而JDK 5在Java语法易用性上做出了非常大的改进。如:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach循环)等语法特性都是在JDK 5中加入的
- 在虚拟机和API层面上,这个版本改进了Java的内存模型(Java Memory Model,JMM)、提供了java.util.concurrent并发包等。另外,JDK 5是官方声明可以支持Windows 9x操作系统的最后一个JDK版本
jdk6
- 2006年12月11日,JDK 6发布,工程代号为Mustang(野马)
- JDK 6的改进包括:提供初步的动态语言支持(通过内置Mozilla JavaScript Rhino引擎实现)、提供编译期注解处理器和微型HTTP服务器API,等等。
- 这个版本对Java虚拟机内部做了大量改进,包括锁与同步、垃圾收集、类加载等方面的实现都有相当多的改动
jdk7
- 2009年2月19日,工程代号为Dolphin(海豚)的JDK 7完成了其第一个里程碑版本。Oracle收购Sun公司后随即宣布大幅裁剪了JDK 7预定目标,以保证JDK 7的正式版能够于2011年7月28日准时发布。
- JDK 7包含的改进有:提供新的G1收集器(G1在发布时依然处于Experimental状态,直至2012年4月的Update 4中才正式商用)、加强对非Java语言的调用支持(JSR-292,这项特性在到JDK 11还有改动)、可并行的类加载架构等
jdk8
- JDK 8的第一个正式版本原定于2013年9月发布,最终还是跳票到了2014年3月18日
- JDK 8提供了那些曾在JDK 7中规划过,但最终未能在JDK 7中完成的功能,主要包括:
- JEP 126:对Lambda表达式的支持,这让Java语言拥有了流畅的函数式表达能力。
- JEP 104:内置Nashorn JavaScript引擎的支持。
- JEP 150:新的时间、日期API。
- JEP 122:彻底移除HotSpot的永久代。
·……
jdk9
- 原本JDK 9是计划在2016年发布的,但在2016年伊始,Oracle就宣布JDK 9肯定要延期至2017年,
后来又连续经过了两次短时间的跳票,最终到2017年9月21日才得以艰难面世 - JDK 9带着Jigsaw最终发布了,除了Jigsaw外,JDK 9还增强了若干工具(JS Shell、JLink、JHSDB等),整顿了
HotSpot各个模块各自为战的日志系统,支持HTTP 2客户单API等91个JEP
jdk10
- 2018年3月20日,JDK 10如期发布
- 主要研发目标是内部重构,诸如统一源仓库、统一垃圾收集器接口、统一即时编译器接口(JVMCI在JDK 9已经有了,这里是引入新的Graal即时编译器)等,这些都将会是对未来Java发展大有裨益的改进,但对普通用户来说JDK 10的新特性就显得乏善可陈,毕竟它只包含了12个JEP,而且其中只有本地类型推断这一个编码端可见的改进
jdk11
- 2018年9月25日,JDK 11发布,这是一个LTS版本的JDK,包含17个JEP
- 有ZGC这样的革命性的垃圾收集器出现,也有把JDK 10中的类型推断加入Lambda语法这种可见的改进
jdk12
- 2019年3月20日,JDK 12发布
- 只包含8个JEP,其中主要有Switch表达式、Java微测试套件(JMH)等新功能,最引人注目的特性无疑是加入了由RedHat领导开发的Shen-andoah垃圾收集器。Shenandoah作为首个由非Oracle开发的垃圾收集器,目标又与Oracle在JDK 11中发布的ZGC几乎完全一致,两者天生就存在竞争。
摘自:深入理解Java虚拟机第三版,周志明著作