Java 21 将在 2023 年 9 月 19 日发布,Java 21 是 Java 17 之后的下一个 LTS(长期维护) 版本。虚拟线程在 Java 21 中将成为正式功能。在 Spring Boot 3.2 中可以使用 spring.threads.virtual.enabled=true
一键开启她。Java 21 有望将会成为继 java8 之后又一个流行的 Java 版本。
二、java 21 功能更新
2.1 正式功能
虚拟线程 (Virtual Threads)
顺序集合(Sequenced Collections)
记录类型的模式(Record Patterns)
switch 的模式匹配(Pattern Matching for switch)
分代式 ZGC (Generational ZGC)
废弃 Windows 32 位版本(Deprecate the Windows 32-bit x86 Port for Removal)
准备禁止动态加载代理(Prepare to Disallow the Dynamic Loading of Agents)
密钥封装机制API(Key Encapsulation Mechanism API)
未命名类和实例 main 方法(nnamed Classes and Instance Main Methods)
字符串模板 (String Templates)
未命名模式和变量 (Unnamed Patterns and Variables)
外部方法和内存 API (Foreign Function & Memory API)
结构化并发(Structured Concurrency )
作用域值(Scoped Values)
2.3 孵化功能
向量 API (Vector API)
三、java8 ~ 20 的各版本更新:
Java 8 (2014年3月发布) LTS长期维护,延长公共维护结束时间:2030年12月
Lambda 表达式、方法引用和函数接口,用于更简洁和灵活的编程。
新的日期/时间 API,提供了更好的 API 设计和性能。
PermGen 空间被移除,取而代之的是 Metaspace 内存区域。
并行数组支持。
Nashorn JavaScript 引擎。
Java 9 (2017年9月发布)
模块系统,提供了更好的组件化和可靠性。
改进的 Javadoc,包括搜索、注释等功能。
改进的 HTTP/2 客户端。
集合工厂方法,简化了集合的创建。
Reactive Streams API,用于响应式编程。
私有接口方法,允许默认方法和静态方法直接访问。
JShell,交互式 Java REPL 工具。
Java 10 (2018年3月发布)
var 局部变量类型推断,允许声明变量时不必显式指定类型。
改进的 G1 垃圾收集器,增强了吞吐量和 GC 时间预测。
支持 Unicode 10。
应用类数据共享(Application Class-Data Sharing)。
Java 11 (2018年9月发布) LTS长期维护,公共维护结束时间:2026年9月
HTTP 客户端标准化,替换了不稳定的 HttpURLConnection API。
改进的 ZGC 垃圾收集器,支持大内存和低延迟应用场景。
Epsilon 垃圾收集器,用于短暂测试和性能调优。
序列化过滤器,提供了更好的安全性。
支持 Unicode 10.0.0。
Java 12 (2019年3月发布)
Shenandoah 垃圾收集器,用于大型堆内存。
新的 Switch 表达式语法,可以更方便地编写条件语句。
改进的 G1 垃圾收集器,增强了吞吐量和 GC 时间预测。
Microbenchmark Suite,用于精确测量代码性能。
Java 13 (2019年9月发布)
Text Block,一种新的 String 文本块语法。
ZGC 和 Shenandoah 垃圾收集器增强。
改进的 Switch 表达式语法。
Dynamic CDS Archives,缩短了应用程序启动时间。
支持 Unicode 12.0.0。
Java 14 (2020年3月发布)
Records,一种新的类声明语法,用于声明数据模型。
Pattern Matching for instanceof,增强了类型模式匹配。
NUMA-Aware Memory Allocation,提高了 JVM 的性能和伸缩性。
支持 Unicode 12.1。
Java 15 (2020年9月发布)
Text Blocks 增强,包括更好的换行支持和缩进控制。
Sealed Classes,用于定义受限制的类继承层次关系。
Hidden Classes,用于隐藏类的实现细节。
支持 Unicode 13.0.0。
Java 16 (2021年3月发布)
Records 增强,包括继承、泛型类型和属性的支持。
Pattern Matching for instanceof 和 Switch 表达式增强。
Vector API,用于支持高性能向量运算。
JEP 390,取消了警告消息。
Java 17 (2021年9月发布) LTS长期维护,公共维护结束时间:2029年9月
原生嵌套(Native Support for Nested Based Access Control),用于在一个类中嵌套另一个类。
Sealed Class 和 Hidden Class 增强。
支持嵌套开发环境 API。
FFI(Foreign Function Interface),用于通过本地语言调用本地代码。
安全加密随机数生成器。
Java 18 (2022年3月发布)
默认 UTF-8 字符编码
简单的 Web 服务器 jwebserver
Javadoc 中支持代码片段
使用方法句柄重新实现反射核心功能
互联网地址解析 SPI
Vector API(三次孵化)
Foreign Function & Memory API (第二次孵化)
Java 19 (2022年9月发布)
将 JDK 移植到 Linux/RISC-V 平台
记录模式 (Record Patterns) 进入预览阶段
外部函数和内存 API (Foreign Function & Memory API) 进入预览阶段
虚拟线程 (Virtual Threads) 进入预览阶段
向量 API (Vector API) 进入第 4 孵化阶段
switch 模式匹配 (Pattern Matching for switch) 进入第 3 预览阶段
结构化并发 (Structured Concurrency) 进入孵化阶段
Java 20 (2023年3月发布)
作用域值(Scoped Values)(第一次孵化)
记录模式(Record Patterns)(第二次预览)
switch 模式匹配(Pattern Matching for switch)(第四次预览)
外部函数和内存 API(Foreign Function & Memory API)(第二次预览)
虚拟线程(Virtual Threads)(第二次预览)
结构化并发(Structured Concurrency)(第二次孵化)