JDK发展史详解
- 1. 起源
- 2. Java诞生
- 3. JDK1.0
- 4. JDK1.1
- 5. JDK1.2
- 6. JDK1.3
- 7. JDK1.4
- 8. JDK1.5
- 9. JDK6
- 10. JDK7
- 11. JDK8
- 12. JDK9
- 13. JDK10
- 14. JDK11
- ✔️ 一图总结
1. 起源
1991年,SUN公司开始着手“GREEN”项目,此项目旨在通过软件去控制电器产品的运行。而由于原本打算使用的C++语言应用在此项目中实现较复杂,于是由James Gosling 主导的项目组内工程师们转而设计开发了一个新的平台-OAK(橡树,据说名称来源于办公室外边的一颗橡树)。
图1 Java起源
2. Java诞生
1995年05月,基于 HotJava 浏览器的成功(91到95年之间发生了一些插曲,Java最初发展并不是一帆风顺的,感兴趣的朋友可以自行了解),SUN公司将Oak(橡树平台)改名为Java,并在SunWorld会议上正式发布了java语言,提出了“Write once,Run anywhere"(一次编译,处处运行,说的是Java通过JVM虚拟机跨平台的特性)的宣传概念。
3. JDK1.0
1996年01月,jdk1.0发布。Java语言拥有了第一个正式版本的运行环境。新技术如下:
· JVM
· Applet
· AWT
图2 JVM实现可移植性的原理
4. JDK1.1
1997年02月,创下当时同类会议参与者最多的记录的JavaOne会议召开,jdk1.1发布。 新技术如下:
· JDBC(Java database connectivity )
· 内部类支持(inner class)
· Java Bean
· RMI(remote method invocation)
· 反射(仅用于内省)
图3 反射机制的相关API
5. JDK1.2
1998年12月,jdk1.2发布。此次发布将基础体系拆分为:J2SE 桌面应用开发 、J2EE 企业级应用开发、J2ME 移动终端开发。新技术如下:
· Collections集合框架
· JIT即时编译器(just in time)
· Java Plug-in(Java插件)
· JFC(Java foundation classes),包括swing1.0、Java 2D类库
图4 JIT即时编译工作流程
此外,还包括:对字符串常量做内存映射,对打包的Java文件做数字签名,提供控制授权访问系统资源的策略工具,在JDBC中引入可滚动结果集、BLOB、批量更新和用户自定义类型,在Applet中添加声音支持等。
1999年4月,HotSpot虚拟机发布。
6. JDK1.3
2000年05月,jdk1.3发布。此时 Servlet 规范开始流行,而伴随着互联网的兴起,这项技术同其他 MVC 框架一起成为了 Web1.0时代的网红。新技术如下:
· JavaSound API
· jar文件索引
此外,还对Java的各方面做了一些优化和加强:优化Java类库如数学运算等,新的Timer API。
7. JDK1.4
2002年02月,jdk1.4发布。新技术如下:
· 正则表达式
· 异常链
· NIO
· 日志类 Logging API
· XML解析器
· XSLT转换器
· 参数API
· 断言机制
此外,还包括:引入了Java打印服务、Java web start、JDBC 3.0 API、对IPv6的支持、Image I/O slot machine API等。
图5 NIO的相关API
8. JDK1.5
❗️❗️ 2004年09月,jdk1.5发布。此版本对 Java 语言做出了一些重大的改进,为了表示该版本的重要性, 还将版本直接升级为 5.0。新技术如下:
· 泛型
· 增强循环foreach
· 自动装箱与拆箱
· 类型安全的枚举
· 元注解
· 可变参数
9. JDK6
2006年12月,jdk6发布并且SUN宣布, 将 Java 语言免费开源,并且建立了 OpenJDK 组织对这些源码进行独立管理。新技术如下:
· 脚本语言支持
· 编译 Java Compiler API
· JDBC 4.0 API
· Web Services 微型HTTP服务器 API
10. JDK7
由于诸多因素,SUN公司于09年4月被Oracle公司收购了,受此影响新版本的开发工作也停滞了一段时间。直到2009年02月,jdk7发布。新的版本主要是一些技术优化处理,包括:
泛型对象类型推断、安全的加减乘除运算、map集合支持并发请求、try-with-resource异常处理、在一个语句块捕获多种异常、switch 添加 String 类型判断支持、数字字面量的改进等。
11. JDK8
❗️❗️ 2014年03月,近 20 年中变更最大的版本jdk8发布。这个版本中的 “函数式” 编程实现,可以容易的表述并发执行的计算。新技术如下:
· lambda表达式
· 方法引用
· Stream 流式编程 API
· Optional
· 函数式接口
· 接口定义增强
· 日期与时间的API增强
· JavaScript引擎
图6 JDK5到JDK10的发展过程
12. JDK9
2017年09月,jdk9发布。也是同年8月,Oracle将JavaEE移交给了开源组织eclipse基金会。新技术如下:
· Jigsaw 模块系统
· 轻量级JSON API
· jShell交互工具
13. JDK10
2018年03月,jdk10发布。优化如下:
· 局部变量类型推断
· GC改进和内存管理
14. JDK11
2018年09月,jdk11发布。优化如下:
· ZGC垃圾收集器
· 方法扩展(String、集合类、Stream、File)
✔️ 一图总结
图7 一张图总结JDK发展历史
注:只列举了每次版本升级优化中的部分相对主要的一些技术或优化。