JDK从1.5版本开始,官方在正式文档与宣传上已经不再使用类似JDK1.5的命名,只有在程序员内部使用的开发版本号(DeveloperVersion,例如javaversion的输出)中才继续沿用1.5、1.6、1.7的版本号,而公开版本号(ProductVersion)则改为JDK5、JDK6、JDK7的命名方式,本书为了行文一致,所有场合统一采用开发版本号的命名方式。
1991.04 GreenProject 计划启动
GreenProject(绿色守护)计划由JamesGosling博士领导。该计划的目的是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个计划的产品就是Java语言的前身:Oak(橡树)
1995.05.23 Oak语言改名为Java
在SunWorld大会上正式发布Java1.0版本。Java语言第一次提出了"WriteOnce,RunAnywhere"的口号。
1996.01.23 JDK 1.0 发布
JDK1.0发布,Java语言有了第一个正式版本的运行环境。JDK1.0提供了一个纯解释执行的Java虚拟机实现(SunClassicVM)。JDK1.0版本的代表技术包括:Java虚拟机、Applet、AWT等。
1997.02.18 JDK 1.1 发布
- 引入 JAR 文件格式
- 引入 JDBC (Java Database Connectivity)
- 支持内部类
- 引入 Java Bean
- 引入RMI(Remote Method Invocation)
- 引入反射(仅用于内省)
1998.12.04 JDK 1.2 发布,开发代号P layground (竞技场)
Sun 将 Java 技术体系拆分为三个方向:
- J2SE 面向桌面应用开发的
- J2EE 面向企业级开发
- J2ME 面向手机等移动终端开发 Java 虚拟机第一次内置了 JIT(Just In Time)编译器 添加一系列 Collections 集合类
2001.09.24 JDK 1.3 发布
JDK 1.3 开发代号为Kestrel(红隼),引入的新特性如下:
- 引入Java Sound API
- jar文件索引
- 对Java的各个方面都做了大量优化和增强
2002.02.26 JDK 1.4 发布,开发代号为Merlin(隼)
- XML处理
- Java打印服务
- 引入Logging API
- 引入Java Web Start
- 引入JDBC 3.0 API
- 引入断言
- 引入Preferences API
- 引入链式异常处理
- 支持IPv6
- 支持正则表达式
- 引入Image I/O slot machine API
2004.09.30 JDK 1.5 发布,开发代号 Tiger (老虎)
- 引入泛型
- 增强循环,可以使用迭代方式
- 自动装箱与自动拆箱
- 类型安全的枚举
- 可变参数
- 静态引入
- 元数据(注解)
- 引入Instrumentation
2006.12 JDK 6 发布,开发代号 Mustang(野马)
- 支持脚本语言
- 引入JDBC 4.0 API
- 引入Java Compiler API
- 可插拔注解
- 增加对Native PKI(Public Key Infrastructure)、Java GSS(Generic Security Service)、Kerberos和LDAP(Lightweight Directory Access Protocol)的支持
- 继承Web Services
- 做了很多优化
2011.07.28 JDK 7 发布,开发代号 Dolphin(海豚)
- switch语句块中允许以字符串作为分支条件
- 在创建泛型对象时应用类型推断
- 在一个语句块中捕获多种异常
- 支持动态语言
- 支持try-with-resources
- 引入Java NIO.2开发包
- 数值类型可以用2进制字符串表示,并且可以在字符串表示中添加下划线
- 钻石型语法
- null值的自动处理
2014.03.18 JDK 8 发布,开发代号是Spider(蜘蛛)
- 支持 lambda支持
- 增强日期与时间API的功能
- 对垃圾回收的性能也进行了改进
- 并且移除了permgen区
- Lambdas表达式与Functional接口
- 接口的默认与静态方法
- 方法引用
- 重复注解
- 更好的类型推测机制
- 扩展注解的支持
2017.07 JDK 9 发布
- 模块系统 - 模块是一个包的容器,Java 9 最大的变化之一是引入了模块系统(Jigsaw 项目)
- REPL (JShell) - 交互式编程环境
- HTTP/2 客户端 - HTTP/2 标准是 HTTP 协议的最新版本,新的 HTTPClient API 支持 WebSocket 和 HTTP2 流以及服务器推送特性
- 集合工厂方法 - List,Set 和 Map 接口中,新的静态工厂方法可以创建这些集合的不可变实例
- 轻量级的 JSON API - 内置了一个轻量级的 JSON API
- 响应式流(Reactive Streams) API - Java 9 中引入了新的响应式流 API 来支持 Java 9 中的响应式编程
2018.03.21 JDK 10 发布
- 局部变量类型推断
- 引入并行 Full
- 应用程序类数据共享
- 线程本地握手
- 在备用存储装置上进行堆内存分配
- 基于Java的实验性JIT编译器
- 删除javah工具
- JDK10新增API
- transferTo方法复制文件
- IO流大家族添加Charset参数的方法
- ByteArrayOutputStream新增toString方法
2018.09.25 Java 11 LTS 发布
- 增强局部变量类型推断 var
- 增加一些实用的API
- 移除和废弃的内容
2019.02 Java 12 发布
2019.09 Java 13 发布
- 文本块升级