Java 版本历史

370 阅读4分钟

image.png

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 发布

  • 文本块升级

2020.03.17 Java 14 发布

2020.09.15 Java 15 发布

2021.03.16 Java 16 发布

2021.09.14 Java 17 LTS 发布