Java各个版本发布时间和主要特性整理!

文档地址:JDK Release Notes (oracle.com)

Java SE 1.0:

1996年1月23日

  • Java语言的初始版本

Java SE 1.1:

1997年2月19日

  • 内部类、JavaBeans、RMI和JAR文件的支持

Java SE 1.2(Java 2):

1998年12月8日

  • 改进了JVM性能、Swing用户界面工具包和Java插件

Java SE 1.3:

2000年5月8日

  • HotSpot虚拟机、Java Sound API和JNDI(Java命名和目录接口)的引入

Java SE 1.4:

2002年2月6日

  • 增加了正则表达式、XML解析、Java Web Start和Java NIO(新I/O)等特性

Java SE 5.0(Java 5):

2004年9月30日

  • 泛型、自动装箱/拆箱、枚举、注解和for-each循环等特性的引入

Java SE 6(Java 6):

2006年12月11日

  • 更快的JVM、JDBC 4.0和Web服务的支持

Java SE 7(Java 7):

2011年7月28日

  • 改进了JVM性能、自动资源管理、泛型实例化类型推断和新的文件系统API等

Java SE 8(Java 8):

2014年3月18日,LTS长期支持版本。支持期限:自发布日期起至2025年12月

  • Lambda 表达式:简化函数式编程。允许以更简洁的语法编写函数式接口的实例,使代码更加简洁。
  • Stream API:用于处理集合,支持函数式操作,如过滤、映射和聚合。
  • 方法引用:允许直接引用现有方法或构造函数,避免了重复编写类似的代码。
  • 接口的默认方法:在接口中提供默认实现,提高接口的灵活性。
  • 时间 API:提供了一组强大的时间操作类,简化了日期和时间的操作。
  • 重复注解:允许在同一个地方多次声明同一个注解,提高了代码的可读性。
  • CompletableFuture 类:简化异步编程,提供更好的错误处理和异常处理机制。
  • Nashorn 引擎:提供了一种基于 JavaScript 的解决方案,允许将 JavaScript 代码嵌入到 Java 应用程序中。
  • Optional 类:减少空指针异常,提高代码可读性。

JDK 8 Update Release Notes (oracle.com)

Java SE 9(Java 9):

2017年9月21日

  • 模块系统(Project Jigsaw):将 Java 的庞大代码库划分为可重用的模块,简化大型应用的构建和维护。
  • JShell:Java 的交互式命令行工具,用于快速尝试和测试 Java 代码片段。
  • 新的集合工厂方法:方便地创建不可变集合,如 List.of()、Set.of() 和 Map.of()。

Java Development Kit 9 Update Release Notes (oracle.com)

Java SE 10(Java 10):

2018年3月20日

  • 局部变量类型推断:使用 var 关键字自动推断局部变量的类型,简化代码。
  • 垃圾收集器接口改进:提高了垃圾收集器的可插拔性和灵活性。

Java Development Kit 10 Update Release Notes (oracle.com)

Java SE 11(Java 11):

2018年9月25日,LTS长期支持版本。支持期限:自发布日期起至2026年9月:

  • 新的 HTTP 客户端 API:支持 HTTP/2 和 WebSocket,提供了更现代化的编程方式。
  • 改进的垃圾收集:引入了 ZGC 和 Epsilon 垃圾收集器。
  • String 类的新方法:如 lines()、isBlank()、strip() 等。

Java Development Kit 11 Release Notes (oracle.com)

Java SE 12(Java 12):

2019年3月19日

  • switch 表达式:允许在 switch 语句中使用表达式,提高了代码的可读性和简洁性。
  • 改进的字符串类:提供了一些新的方法,使得字符串的操作更加方便和高效。
  • Shenandoah 垃圾回收器:提供了一种低停顿时间的垃圾回收器,适用于大型堆内存的应用程序。
  • 微基准测试套件:提供了一种用于快速测试性能的微基准测试框架。
  • JDK 源代码重构:对 JDK 源代码进行了重构,提高了代码的可读性和维护性。

Java Development Kit 12 Update Release Notes (oracle.com)

Java SE 13 (Java 13):

2019年9月17日

  • 文本块:允许以更简洁的语法创建多行字符串,提高了代码的可读性和简洁性。
  • 改进的 switch 表达式:允许在 switch 语句中使用表达式,提供更好的类型推断和更灵活的写法。
  • ZGC 垃圾回收器改进:提高了 ZGC 垃圾回收器的性能和可靠性。
  • 应用程序类数据共享改进:提高了应用程序类数据共享的性能和效率。

Java Development Kit 13 Update Release Notes (oracle.com)

Java SE 14 (Java 14):

2020年3月17日

  • instanceof 模式匹配:允许在 instanceof 操作符中使用模式匹配,提高了代码的简洁性和可读性。
  • Records 类:提供了一种更简单和安全的数据类的定义方式。
  • Switch 表达式增强:允许使用箭头操作符(->)作为 lambda 表达式的简写语法。
  • 文本块增强:允许在文本块中使用嵌入式表达式,使得文本块更加灵活和强大。
  • 改进的 NullPointerException 信息:提供更详细的 NullPointerException 信息。

Java Development Kit 14 Update Release Notes (oracle.com)

Java SE 15 (Java 15):

2020年9月15日

  • 隐式的类文件:允许在 Java 源代码中定义多个类,而不需要单独的类文件。
  • 改进的文本块:允许在文本块中使用转义字符和 Unicode 转义,提高了文本块的灵活性和可读性。
  • 改进的 switch 表达式:允许在 switch 语句中使用多个匹配项,提供更灵活的写法。
  • Sealed 类和接口:允许控制哪些类或接口可以继承或实现该类或接口,提高了代码的安全性和可维护性。
  • 其他改进:包括增强的 ZGC 垃圾回收器、改进的内存管理、新增的 Unix 域套接字 API 等。

Java Development Kit 15 Release Notes (oracle.com)

Java SE 16 (Java 16):

2021年3月16日

  • 增强的文本块:允许在文本块中使用转义字符和嵌入式表达式。
  • 移除了废弃的 ParallelScavenge 垃圾回收器。
  • 改进的 ZGC 垃圾回收器:提高了性能和可靠性,增加了可配置参数。
  • Records 类的增强:允许在 records 类中添加静态方法和私有构造函数。
  • Vector API:提供了一种新的 API,用于高效地执行矢量化操作。

Java Development Kit 16 Release Notes (oracle.com)

Java SE 17(Java 17):

2021年9月14日,LTS长期支持版本。支持期限:自发布日期起至2029年9月

  • 嵌套枚举:允许在类和接口中定义嵌套枚举,提高了代码的可读性和简洁性。
  • 改进的 switch 语句:允许在 switch 语句中使用 case 标签作为表达式,提供更灵活的写法。
  • 预览性功能:包括模式匹配、嵌套枚举、记录类的序列化等新特性。
  • 增强的垃圾回收器:提高了性能和可靠性,增加了可配置参数。
  • 其他改进:包括新的内存管理和性能优化,增强的 JIT 编译器等。

Java Development Kit 17 Release Notes (oracle.com)