JDK版本
- 1991年4月,Java语言的前身——————Oak(得名于James Gosling办公室外的一棵橡树)。
- 1995年5月23日,Oak语言改名为Java,并且在SunWorld大会上正式发布Java 1.0版本。Java语言第 一次提出了“Write Once,Run Anywhere”的口号。1996年1月23日,JDK 1.0发布,Java语言有了第一个正式版本的运行环境。JDK 1.0提供了一个纯解释执行的Java虚拟机实现(Sun Classic VM)。JDK 1.0版本的代表技术包括:Java虚拟机、Applet、 AWT。
-
1997年2月19 日, Sun 公司发布了 JDK 1.1 , Java 里许多最基础的技术支撑点(如 JDBC 等)都是在JDK 1.1版本中提出的, JDK 1.1 版的技术代表有: JAR 文件格式、 JDBC、 JavaBeans 、 RMI 等。 Java 语言的语法也有了一定的增强,如内部类(Inner Class)和反射( Reflection )都是在这时候出现的。
-
直到 1999年4月8 日, JDK 1.1 一共发布了 1.1.0 至 1.1.8 这 9个版本。从 1.1.4 以后,每个 JDK 版本都有一个属于自己的名字(工程代号),分别为:
- JDK 1.1.4-Sparkler(宝石)
-
JDK 1.1.5-Pumpkin (南 瓜)
-
JDK 1.1.6-Abigail (阿比盖尔,女子名)
-
JDK 1.1.7-Brutus (布鲁图,古罗马政治家和将军)
-
JDK 1.1.8-Chelsea (切尔西,城市名)
- 1998年12月4日,JDK迎来了一个里程碑式的重要版本:工程代号为Playground(竞技场)的JDK 1.2,Sun在这个版本中把Java技术体系拆分为三个方向,分别是面向桌面应用开发的J2SE(Java 2 Platform,Standard Edition)、面向企业级开发的J2EE(Java 2 Platform,Enterprise Edition)和面向手机等移动终端开发的J2ME(Java 2 Platform,Micro Edition)。在这个版本中出现的代表性技术非常多,如EJB、Java Plug-in、Java IDL、Swing等,并且这个版本中Java虚拟机第一次内置了JIT(Just InTime)即时编译器(JDK 1.2中曾并存过三个虚拟机,Classic VM、HotSpot VM和Exact VM,其中Exact VM只在Solaris平台出现过;后面两款虚拟机都是内置了JIT即时编译器的,而之前版本所带的Classic VM只能以外挂的形式使用即时编译器)。在语言和API层面Java添加了strictfp关键字,Java类库添加了现在Java编码之中极为常用的一系列Collections集合类等。在1999年3月和7月,分别有JDK 1.2.1和JDK 1.2.2两个小升级版本发布。1999年4月27日,HotSpot虚拟机诞生。HotSpot最初由一家名为“Longview Techno-logies”的小公司开发,由于HotSpot的优异表现,这家公司在1997年被Sun公司收购。Hot-Spot虚拟机刚发布时是作为JDK 1.2的附加程序提供的,后来它成为JDK 1.3及之后所有JDK版本的默认Java虚拟机。
-
2000年5月8 日,工程代号为 Kestrel (美洲红隼)的 JDK 1.3 发布。相对于 JDK 1.2 , JDK 1.3 的改进主要体现在Java 类库上(如数学运算和新的 Timer API 等), JNDI 服务从 JDK 1.3 开始被作为一项平台级服务提供(以前JNDI 仅仅是一项扩展服务),使用 CORBA IIOP 来实现 RMI 的通信协议,等等。这个版本还对Java 2D 做了很多改进,提供了大量新的 Java 2D API ,并且新添加了 JavaSound 类库。 JDK1.3有 1 个修正版本 JDK 1.3.1 ,工程代号为 Ladybird (瓢虫),于 2001年5月17 日发布。
-
2002年2月13 日, JDK 1.4 发布,工程代号为 Merlin (灰背隼)。 JDK 1.4 是标志着 Java 真正走向成熟的一个版本,Compaq 、 Fujitsu 、 SAS 、 Symbian 、 IBM 等著名公司都有参与功能规划,甚至实现自己独立发行的JDK 1.4 。哪怕是在近二十年后的今天,仍然有一些主流应用能直接运行在 JDK 1.4 之上,或者继续发布能运行在1.4 上的版本。 JDK 1.4 同样带来了很多新的技术特性,如正则表达式、异常链、NIO 、日志类、 XML 解析器和 XSLT 转换器,等等。 JDK 1.4 有两个后续修正版: 2002年9月16 日发布的工程代号为Grasshopper (蚱蜢)的 JDK 1.4.1 与 2003年6月26 日发布的工程代号为 Mantis (螳螂)的JDK 1.4.2 。
-
2004年9月30 日, JDK 5 发布,工程代号为 Tiger (老虎)。 Sun 公司从这个版本开始放弃了谦逊的“JDK 1.x” 的命名方式,将产品版本号修改成了 “JDK x” [1] 。从 JDK 1.2 以来, Java 在语法层面上的变动一直很小,而JDK 5 在 Java 语法易用性上做出了非常大的改进。如:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach循环)等语法特性都是在 JDK 5 中加入的。在虚拟机和 API 层面 上,这个版本改进了 Java 的内存模型(Java Memory Model, JMM )、提供了 java.util.concurrent 并发包 等。另外,JDK 5 是官方声明可以支持 Windows 9x 操作系统的最后一个 JDK 版本。
-
2006年12月11 日, JDK 6 发布,工程代号为 Mustang (野马)。在这个版本中, Sun 公司终结了从JDK 1.2开始已经有八年历史的 J2EE 、 J2SE 、 J2ME 的产品线命名方式,启用 Java EE 6 、 Java SE 6 、 JavaME 6的新命名来代替。 JDK 6 的改进包括:提供初步的动态语言支持(通过内置 Mozilla JavaScript Rhino引擎实现)、提供编译期注解处理器和微型 HTTP 服务器 API ,等等。同时,这个版本对 Java 虚拟机内部做了大量改进,包括锁与同步、垃圾收集、类加载等方面的实现都有相当多的改动。
-
在2006年11月13 日的JavaOne大会上,Sun公司计划将java开源。除了极少量的产权代码(Encumbered Code,这部分代码所有权不属于Sun公司,Sun本身也无权进行开源处理)外OpenJDK几乎拥有了当时SunJDK 7的全部代码。
-
jdk6的最后的版本 为Java SE 6 Update 211,于 2018年10月18 日发布。
- 2009年2月19日,工程代号为Dolphin(海豚)的JDK 7完成了其第一个里程碑版本。按照JDK 7最初的功能规划,一共会设置十个里程碑。最后一个里程碑版本原计划定于2010年9月9日结束,但由于各种原因,JDK 7最终无法按计划完成。
- JDK 7最原始的功能清单:(1):Lambda项目:支持Lambda表达式,支持函数式编程。(2):·Jigsaw项目:虚拟机层面的模块化支持。(3):·动态语言支持:Java是静态语言,为其他运行在Java虚拟机上的动态语言提供支持。(4):·Garbage-First收集器。(5):·Coin项目:Java语法细节进化。
- JDK 8的第一个正式版本原定于2013年9月发布,最终还是跳票到了2014年3月18日。
从 JDK 8 开始, Oracle 启用 JEP (JDK Enhancement Proposals)来定义和管理纳入新版JDK 发布范围的功能特性。 JDK 8 提供了那些曾在 JDK 7 中规划过,但最终未能在 JDK 7中完成的功能,主要包括:·JEP 126 :对 Lambda 表达式的支持,这让 Java 语言拥有了流畅的函数式表达能力。·JEP 104:内置Nashorn JavaScript 引擎的支持。·JEP 150 :新的时间、日期 API 。·JEP 122 :彻底移除 HotSpot 的永久代。·……
- 原本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 。
- 2018年3月20日,JDK 10如期发布,这版本的主要研发目标是内部重构,诸如统一源仓库、统一垃圾收集器接口、统一即时编译器接口(JVMCI在JDK 9已经有了,这里是引入新的Graal即时编译器)等,这些都将会是对未来Java发展大有裨益的改进,但对普通用户来说JDK 10的新特性就显得乏善可陈,毕竟它只包含了12个JEP,而且其中只有本地类型推断这一个编码端可见的改进。
- 2018年10月,JavaOne 2018在旧金山举行,此前没有人想过这会是最后一届JavaOne大会。
-
2018年9月25 日, JDK 11 发布,这是一个 LTS 版本的 JDK ,包含 17 个 JEP ,其中有 ZGC 这样的革命 性的垃圾收集器出现,也有把JDK 10 中的类型推断加入 Lambda 语法这种可见的改进。
-
2019年3月20 日, JDK 12 发布,只包含 8 个 JEP ,其中主要有 Switch 表达式、 Java 微测试套件(JMH)等新功能,最引人注目的特性无疑是加入了由 RedHat 领导开发的 Shen-andoah 垃圾收集器。Shenandoah作为首个由非 Oracle 开发的垃圾收集器,其目标又与 Oracle 在 JDK 11 中发布的 ZGC 几乎完全一致,两者天生就存在竞争。Oracle 马上用实际行动抵制了这个新收集器,在 JDK 11 发布时才说应尽可能保证OracleJDK 和 OpenJDK 的兼容一致,转眼就在 OracleJDK 12 里把 Shenandoah 的代码通过条件编译强行剔除掉,使其成为历史上唯一进入了OpenJDK 发布清单,但在 OracleJDK 中无法使用的功能。