一、前言

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)

2.2 预览功能

  • 未命名类和实例 main 方法(Unnamed 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)(第二次孵化)
  • 向量 API(Vector API)(第五次孵化)

 


0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

蜀ICP备16001794号
© 2014 - 2024 linpxing.cn All right reserved.