文档地址:JDK Release Notes (oracle.com)
Java SE 1.0:
1996年1月23日
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日
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)