Java 21 / JDK 21 (LTS) GA

news/2024/12/29 18:47:27/

Java 21 / JDK 21 已正式 GA,此版本是继 JDK 17 后的长期支持版本 (LTS),Oracle 将为其提供至少八年的技术支持和更新

本版本是Java SE平台21版的参考实现,由Java社区流程中的JSR 396指定。

正式稳定功能

  • JEP 444:虚拟线程
  • JEP 431:序列集合
  • JEP 440:记录模式
  • JEP 441:switch 模式匹配
  • JEP 439:分代 ZGC
  • JEP 449:弃用 Windows 32 位 x86 移植
  • JEP 451:准备禁止动态加载代理
  • JEP 452:密钥封装机制 API

预览阶段功能

  • JEP 442:外部函数和内存 API(第三次预览)

  • JEP 446:作用域值(预览)

  • JEP 453:结构化并发(预览)

  • JEP 430:字符串模板(预览)

  • JEP 443:未命名模式和变量(预览)

  • JEP 445:未命名类和实例主方法(预览)

孵化阶段功能

  • JEP 448:Vector API(孵化器第六阶段)

430:String Templates (Preview)
431:Sequenced Collections
439:Generational ZGC
440:Record Patterns
441:Pattern Matching for switch
442:Foreign Function & Memory API (Third Preview)
443:Unnamed Patterns and Variables (Preview)
444:Virtual Threads
445:Unnamed Classes and Instance Main Methods (Preview)
446:Scoped Values (Preview)
448:Vector API (Sixth Incubator)
449:Deprecate the Windows 32-bit x86 Port for Removal
451:Prepare to Disallow the Dynamic Loading of Agents
452:Key Encapsulation Mechanism API
453:Structured Concurrency (Preview)

新接口已经完美融合到现有的 Collection API 类层次结构中。

 

Download: https://jdk.java.net/21/
Release notes: https://jdk.java.net/21/release-notes
Features: https://openjdk.org/projects/jdk/21/

安装包下载

主要分为OpenJDK版本和Oracle版本,下载地址如下:

  • OpenJDK版本:OpenJDK JDK 21 GA Release
  • Oracle版本:Java Downloads | Oracle

JDK 21 新特性说明
正式稳定功能
JEP 431:序列集合

序列集合(Sequenced Collections)在 core-libs/java.util:collections 包中。

该 JEP 提议引入“一个新的接口族,用于表示集合的概念,这些集合的元素按照预定义的序列或顺序排列,它们是作为集合的结构属性。”这一提案的动机是由于集合框架中缺乏预定义的顺序和统一的操作集。

JEP 439:分代 ZGC
分代 ZGC(Generational ZGC)在 hotspot/gc 包中。

通过扩展Z垃圾回收器(ZGC)来维护年轻对象和年老对象的独立生成,从而提高应用程序性能。这将使ZGC能够更频繁地收集年轻对象——这些对象往往英年早逝。

JEP 440:记录模式
使用记录模式(Record Patterns)增强Java编程语言,以解构记录值。可以嵌套记录模式和类型模式,以实现功能强大、声明性和可组合形式的数据导航和处理。

JEP 441:switch 模式匹配
通过switch表达式和语句的模式匹配来增强Java编程语言。通过将模式匹配扩展到switch,可以针对多个模式测试表达式,每个模式都有一个特定的操作,从而可以简洁、安全地表达复杂的面向数据的查询。

JEP 444:虚拟线程
将虚拟线程(Virtual Threads)引入Java平台。虚拟线程是轻量级线程,可以显著减少编写、维护和观察高吞吐量并发应用程序的工作量。

详见《Java下一代高并发技术——虚拟线程(Virtual Threads)》。

JEP 449:弃用 Windows 32 位 x86 移植
弃用Windows 32位x86移植,并打算在将来的版本中将其删除。

JEP 451:准备禁止动态加载代理
将代理动态加载到正在运行的JVM中时发出警告。这些警告旨在让用户为将来的版本做好准备,该版本默认情况下不允许动态加载代理,以提高默认情况下的完整性。在启动时加载代理的可服务性工具不会导致在任何版本中发出警告。

JEP 452:密钥封装机制 API
介绍一种用于密钥封装机制(Key Encapsulation Mechanism,简称KEM)的API,这是一种使用公钥加密来保护对称密钥的加密技术。

预览阶段功能
JEP 430:字符串模板(预览)
使用字符串模板(String Templates)增强Java编程语言。字符串模板通过将文本与嵌入的表达式和模板处理器耦合来生成专门的结果,从而补充Java现有的字符串文本和文本块。这是一个预览语言功能和API。

JEP 442:外部函数和内存 API(第三次预览)
引入API,Java程序可以通过该API与Java运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即JVM外部的代码),并通过安全地访问外部内存(即不受JVM管理的内存),API使Java程序能够调用本机库并处理本机数据,而不会出现JNI的脆弱性和危险性。这是一个预览API。

JEP 443:未命名模式和变量(预览)
使用未命名模式和未命名变量来增强Java语言,未命名模式匹配记录组件而不说明组件的名称或类型,未命名变量可以初始化但不使用。两者都用下划线字符_表示。这是一个预览语言功能。

JEP 445:未命名类和实例主方法(预览)
发展Java语言,使学生无需理解为大型程序设计的语言功能即可编写第一个程序。学生们不用使用单独的Java方言,就可以为单类程序编写精简的声明,然后随着技能的发展,无缝地扩展程序,使用更高级的功能。这是一个预览语言功能。

JEP 446:作用域值(预览)
引入作用域值,这些值可以在不使用方法参数的情况下安全有效地共享给方法。它们优先于线程化局部变量,尤其是在使用大量虚拟线程时。这是一个预览API。

实际上,作用域值是一个隐式方法参数。这“就好像”一系列调用中的每个方法都有一个额外的、不可见的参数。没有任何方法声明此参数,只有能够访问作用域值对象的方法才能访问其值(数据)。通过作用域值,可以通过一系列中间方法将数据从调用者安全地传递给遥远的被调用者,这些中间方法不声明数据的参数,也无法访问数据。

JEP 453:结构化并发(预览)
通过引入用于结构化并发(Structured Concurrency)的API来简化并发编程。结构化并发将在不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和消除,提高可靠性,并增强可观察性。这是一个预览API。

孵化阶段功能
JEP 448:Vector API(孵化器第六阶段)
引入API来表示向量计算,这些向量计算在运行时可靠地编译为支持的CPU架构上的最佳向量指令,从而实现优于等效标量计算的性能。
 

 参考引用
本文同步至: https://waylau.com/jdk-21-released/
https://waylau.com/jdk-17-released/
https://waylau.com/jdk-16-released/
https://waylau.com/jdk-15-released/
https://waylau.com/jdk-14-released/
《Java核心编程》
开源项目“现代Java案例大全” https://github.com/waylau/modern-java-demos


http://www.ppmy.cn/news/1125213.html

相关文章

【ODPS 新品发布第 2 期】实时数仓 Hologres:推出计算组实例/支持 JSON 数据/向量计算+大模型等新能力

云布道师 阿里云 ODPS 系列产品以 MaxCompute、DataWorks、Hologres 为核心,致力于解决用户多元化数据的计算需求问题,实现存储、调度、元数据管理上的一体化架构融合,支撑交通、金融、科研、等多场景数据的高效处理,是目前国内最…

目标检测YOLO实战应用案例100讲-区域卷积网络在阴影环境目标检测上的研究与应用

目录 前言 国内外研究现状 阴影检测模型研究现状 基于区域卷积网络的目标检测研究现状

cheat 命令行帮助 备忘单

cheat 是一个命令行工具,允许你创建和查看交互式的备忘单(cheatsheets)。它旨在帮助 *nix 系统管理员记住那些他们经常使用但不常记得的命令选项。 wget https://github.com/cheat/cheat/releases/download/4.4.0/cheat-linux-amd64.gz gunz…

uvm白皮书练习_ch2_ch222加入factory机制

uvm白皮书练习_ch2_ch222只有factory机制 factory机制的实现被集成在了一个宏中:uvm_component_utils。 这个宏所做的事情非常多,其中之一就是将my_driver登记在UVM内部的一张表中,这张表是factory功能实现的基础。 自动创建一个类的实例并调…

SpringBoot 学习(一)自动装配

本系列文章为【狂神说 Java 】视频的课堂笔记,若有需要可配套视频学习。 1.1 pom.xml (1) 父工程( spring-boot-starter-parent ) 核心依赖,静态资源过滤等配置。编写或导入 springboot 依赖时不需要指定版本号,继承…

【数据库原理与应用(第3版)】第三章:关系数据库理论(选择与填空)

目录 一、填空题二、选择题 一、填空题 关系模型用单一的数据结构,即【二维表】来描述实体以及实体之间的联系。关系数据模型中的关系可用二维表来表示,表中的一行对应关系的一个【元组】,表中的一列对应关系的一个【属性】。早期的关系操作…

MIPI协议介绍-CPHY

MIPI协议概述 MIPI(Mobile Industry Processor Interface): 是MIPI联盟发起为移动应用处理器制定的开放标准.MIPI接口协议层主要包括CSI和DSI两种,其中CSI主要用于图像输出,如图像传感器等; DSI主要用于图像输入,如屏幕显示器等.对于camera而…

root用户自动安装mysql 5.7脚本

#!/bin/bash # -*- codeing utf-8 -*- # Time : 2023/09/25 22:11 # Author : lidachuan # File : mysql_install.sh # Software : PyCharm #1.设置mysql安装目录 mysql_install/home/mysql #2.设置mysql安装目录 mysql_data/testdata #3.设置mysql端口 mysql_port3306 #4.设…