作为一种功能强大并简单易用的编程语言,Java收到广泛的欢迎,使用Java开发的软件也越来越多,而想要打开java编写的程序,就需要在电脑中安装java运行环境,多多小编这里给大家带来的是java se development kit 21,一般简称为jdk21,java 21,是全球广受欢迎的现代开发平台,也是企业应用的理想编程语言,有助于企业降低成本、缩短开发时间、推动创新以及改善应用服务。目前软件已经提供了数以千计的性能、稳定性和安全性改进,包括平台增强功能,可以帮助开发人员提高工作效率并推动整个组织的创新和增长。
与上一版本相比,java se development kit 21新增了多个新特性,比如引入的序列集合,可以为Java开发者提供一种新的、有序的、线程安全的集合实现。增加了三个主要的接口,包括SequencedCollection,SequencedSet和SequencedMap<K,V>;增加了虚拟线程,可以创建大量的线程,甚至达到百万级别,简化并发模式模型,简化代码,减少阻塞问题;还增加了字符串模板,提供了一种更简洁、更直观的方式来动态构建字符串,通过使用占位符${},可以将变量的值直接嵌入到字符串中,而不需要手动处理等等,这些特性不仅增强了Java语言的功能性,还在开发效率和程序性能上做出了质的飞跃。
java se development kit 21主要新特性
一、序列集合
jdk21中引入的序列集合(Sequenced Collections)为Java开发者提供了一种新的、有序的、线程安全的集合实现。其特性如下:
1、有序性:每个Sequenced Collection都保持元素插入的顺序。这意味着当你遍历集合时,元素将按照它们被添加到集合中的顺序出现。
2、线程安全性:Sequenced Collections提供了线程安全的集合实现,可以在多线程环境下安全地访问和修改集合中的数据。这是通过一种称为“Sequenced Locks”的特殊锁机制实现的,它允许多个线程同时读取集合中的数据,但只允许一个线程进行写操作。
3、可扩展性:Sequenced Collections的设计考虑了可扩展性,可以处理大量数据的并发访问。
4、统一的接口:Sequenced Collections提供了一个统一的接口来表示具有定义好的出现顺序的集合,这使得在API中表达某些有用概念变得更加容易。同时,它还提供了一套统一的与顺序相关的操作集,使得不同类型的集合在处理顺序相关操作时方式更加一致。
二、主要接口
java se development kit 21为Sequenced Collections引入了三个主要的接口:
1、SequencedCollection:这是表示具有定义好的出现顺序的集合的基础接口。它继承了Collection接口,并添加了一系列与顺序相关的方法,如reversed()、addFirst(E)、addLast(E)、getFirst()、getLast()和removeFirst()等。
2、SequencedSet:这是Set接口的扩展,表示有序且不包含重复元素的集合。它继承了Set和SequencedCollection接口,并提供了reversed()方法以返回一个反转顺序的SequencedSet。
3、SequencedMap<K,V>:这是Map接口的扩展,表示条目具有定义好的遍历顺序的映射。它继承了Map接口,并添加了一系列与顺序相关的方法,如reversed()、sequencedKeySet()、sequencedValues()、sequencedEntrySet()、putFirst(K, V)、putLast(K, V)、firstEntry()、lastEntry()、pollFirstEntry()和pollLastEntry()等。
三、虚拟线程
jdk21增加了虚拟线程,其特性如下:
1、轻量级且可大量创建:虚拟线程开销小,可以创建大量的线程,甚至达到百万级别,相比传统线程创建百万级别可能导致内存或系统崩溃。
2、简化并发模式模型:虚拟线程的轻量特性使得在实现每一个请求都开一个线程来提高程序并发性能变得可行,同时简化了编程模型。
3、高可扩展性:虚拟线程可以充分利用系统资源,提高对系统CPU核数的利用率。
4、简化代码:虚拟线程使得同步编程风格的代码并发成为可能,程序员无需使用复杂的非阻塞编程手法。
5、减少阻塞问题:虚拟线程阻塞时会自动切换到其他正在运行的线程,充分利用CPU时间,提高效率。
6、管理与调度不同:平台线程由操作系统进行管理和调度,而虚拟线程由JVM进行管理与调度。
7、线程规模不同:平台线程的规模受到操作系统的限制,而虚拟线程没有这个限制,理论上来说虚拟线程的最大数量要比平台线程大得多。
8、使用成本不同:虚拟线程由JVM管理,分配不需要进行系统调用,也不受系统上下文切换的影响。
四、字符串模板
String Templates(字符串模板) 目前仍然是 JDK 21 中的一个预览功能。String Templates 提供了一种更简洁、更直观的方式来动态构建字符串。通过使用占位符${},我们可以将变量的值直接嵌入到字符串中,而不需要手动处理。其特性如下:
1、基本语法:字符串模板使用了一种简洁的语法来嵌入表达式。通常,这种嵌入是通过特定的标记(如$符号或{}花括号)来实现的。在JDK 21中,具体的语法可能因模板处理器的不同而有所差异。
2、模板处理器:JDK 21提供了多种内置的模板处理器,如STR、FMT和RAW,它们各自具有不同的行为和功能。例如,STR用于执行基础的字符串插值,FMT支持格式化操作,而RAW则用于创建未处理的StringTemplate对象。
3、动态内容生成:通过字符串模板,开发者可以轻松地将变量的值、方法调用的结果或其他表达式嵌入到字符串中,从而实现动态内容的生成。
五、记录模式
java se development kit 21增强了Java编程语言,引入了记录模式,用于解构记录值。记录模式可以嵌套和组合,提供了一种功能强大、声明性和可组合的数据导向编程方式。其特性如下:
1、简洁性:记录模式使用简洁的语法来匹配和解构记录类型,避免了冗长的类型检查和属性访问代码。
2、可读性:记录模式的语法更加直观易懂,使得代码更加清晰易读。
3、灵活性:记录模式支持对记录类型的属性进行匹配和解构,可以根据实际需求灵活地处理不同的对象类型。
4、安全性:通过编译时检查确保访问的正确性,避免错误的字段访问或类型不匹配问题。
六、分代ZGC
jdk21中对 ZGC 进行了功能扩展,增加了分代 GC 功能。不过,默认是关闭的,需要通过配置打开。其特性如下:
1、低延迟和高吞吐量:
- 分代ZGC通过并发处理和分代回收的策略,实现了非常低的停顿时间,适合对响应时间要求高的应用场景。
- 在尽可能减少停顿时间的同时,分代ZGC也能保持较高的垃圾回收吞吐量。
2、大堆支持:
- 分代ZGC可以处理非常大的堆内存,适用于需要大内存容量的应用程序。在JDK 21中,ZGC支持的最大堆大小已经增加到了16TB以上。
3、分代收集机制:
- 分代ZGC在逻辑上将堆内存划分为年轻代和老年代。年轻代用于存放新创建的对象,老年代则用于存放生命周期较长的对象。
- 通过频繁扫描年轻代,分代ZGC可以更高效地利用CPU资源,并减少分配停滞的风险和所需的堆内存开销。
4、并发处理:
- 在年轻代和老年代的垃圾回收过程中,分代ZGC都采用了并发处理的方式。这意味着在垃圾回收期间,应用程序线程可以继续执行,从而减少了停顿时间。
5、染色指针和读屏障:
- 分代ZGC使用了染色指针技术来标记指针,帮助识别跨区域的引用,并减少额外的元数据开销。
- 读屏障技术则用于在读取对象引用时自动更新指针,以反映对象的新位置。
6、动态内存布局:
- 分代ZGC的内存布局是动态的,可以根据应用程序的实际内存需求动态创建和销毁内存区域。这种设计使得ZGC能够更好地适应不同的工作负载和对象分布模式。
七、Switch模式
增强 Java 中的 switch 表达式和语句,允许在 case 标签中使用模式。当模式匹配时,执行 case 标签对应的代码。其特性如下:
1、类型模式匹配:
- 在JDK 21中,switch语句支持类型模式匹配,允许在case标签中直接进行类型检查和模式匹配。这意味着开发者可以针对不同类型的对象编写不同的处理逻辑,而无需使用显式的类型转换或if-else语句。
2、守卫模式:
- 守卫模式进一步增强了switch语句的匹配能力。它允许在case标签中添加额外的条件检查,从而实现更加精细的控制流。这使得switch语句能够处理更复杂的条件逻辑。
3、模式匹配的switch表达式:
- 除了switch语句外,JDK 21还增强了switch表达式的功能,使其支持类型模式和守卫模式。模式匹配的switch表达式使得代码更加简洁和直观,同时提高了代码的可读性和可维护性。
4、改进的类型推断:
- JDK 21中的switch语句和表达式在类型推断方面进行了改进,编译器能够更好地推断出switch表达式的返回类型,从而减少显式类型声明的需求。这有助于简化代码,并减少潜在的错误。
5、增强的错误检测能力:
- JDK 21对switch语句和表达式的错误检测能力进行了增强,可以更早地捕捉潜在的错误和不一致。例如,如果switch语句或表达式中的所有可能情况都没有被处理,编译器将发出警告或错误提示。
八、程序集模块化
jdk 21还增强了程序集模块化,其特性如下:
1、通过引入java.assembly模块,为Java程序集提供了一种新的模块化方式。这种方式允许开发者定义程序集的依赖关系、导出模块等,从而实现了代码的有效隔离和重用。
2、提高代码的可维护性:通过模块化,可以将代码拆分成更小的、更易于管理的部分,从而降低了代码的复杂度。
3、增强代码的可重用性:模块化的代码可以被不同的项目共享和重用,避免了重复劳动。
4、便于构建和部署:模块化使得构建和部署过程更加自动化和标准化,提高了开发效率。
JAVA环境变量配置:
此电脑->右键->属性->高级系统设置->环境变量:
1、「用户变量」和「系统变量」分别新建2条变量
变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.8.0_311(安装目录版本号路径)
2、「系统变量」双击->Path->编辑环境变量 -> 分别新建3条
%JAVA_HOME%\bin
C:\Program Files\Java\jdk21.0\bin
C:\Program Files\Java\jre21.0
3、# 检查JDK环境配置命令:
CMD 输入 java -version
JRE和JDK的区别?
如果在学习或从事Java开发、编译java程序,那么安装JDK
如果仅需运行java程序,只需要Java运行库,那么安装JRE
Java Development Kit(简称JDK)= Java开发套件,Java开发工具包,面向Java语言开发者。
Java Runtime Environment(简称JRE)= Java运行库,Java运行环境,面向Java程序用户们。
JDK:Java核心,含Java运行环境(JRE)、编译器(javac.exe)、开发工具(javadoc.exe、jar.exe、keytool.exe、jconsole.exe)和Java工具类库(如tools.jar)源代码等java语言编译所需的工具包。
JRE:Java语言开发的程序运行所需要的运行环境,包括JVM标准实现(java.exe等)及 Java核心类库(rt.jar等),它不包含开发工具(编译器、调试器等)
更新日志
v21.0.8版本
一、此更新版本的完整版本字符串为 21.0.8+12(其中“+”表示“内部版本”)。
版本号为 21.0.8。此 JDK 符合 Java SE 规范 (JSR 396, 2023-09-19) 的版本 21。
IANA TZ 数据 2025b
JDK 21.0.8 包含 IANA 时区数据 2025b,其中包含以下更改:
巴拉圭从 2024 年春季开始采用永久性 -03。
使 JDK 保持最新状态
Oracle 建议使用每个重要补丁更新来更新 JDK。 为了确定某个版本是否为最新版本,Security Baseline (安全基线) 页面可以 用于确定哪个版本是每个版本系列的最新版本。
包含安全漏洞修复的关键补丁更新会提前一年公布 重要补丁更新、安全警报和公告。 不建议在计划下一次关键补丁更新后使用此 JDK(版本 21.0.8) 2025 年 10 月 21 日。
Java 管理服务可供所有用户使用,可帮助您在系统中找到易受攻击的 Java 版本。在 Oracle Cloud 中运行的 Java SE 订户和客户可以使用 Java 管理服务更新 Java 运行时并进行进一步的安全审查,例如识别 Java 程序使用的潜在易受攻击的第三方库。现有 Java 管理服务用户单击此处登录到您的仪表板。Java 管理服务文档提供了可供所有人使用的功能列表,以及仅可供客户使用的功能列表。了解有关使用 Java 管理服务监控和保护 Java 安装的更多信息。
二、删除的功能和选项
1、security-libs/java.security ➜过期后删除了巴尔的摩CyberTrust根证书
2、security-libs/java.security ➜删除了两个Camerfirma根证书
三、其他注释
1、security-libs/java.security ➜添加了Sectigo Limited的4个新根证书
2、安装/安装 ➜使用OL9签名密钥签署oracle.com JDK RPM包
3、core-libs/java.net ➜java.net.http。HttpClient得到增强,可以向服务器报告HTTP/2流控制错误
4、security-libs/java.security ➜更新的HSS/LMS公钥编码
5、security-libs/java.security ➜与OCSP超时兼容的OCSP readtimeout属性
6、security-libs/jdk.security ➜如果删除条目,Jarsigner应打印警告
其它版本下载
-
查看详情
java se development kit 9(jdk9) v9.0.4 64位32位官方版
356.94M
-
查看详情
java se development kit 24(jdk24) v24.0.2官方版
204.21M
-
查看详情
java se development kit 12 v12.0.2
157.15M
-
查看详情
Java SE Development Kit(JDK)7.0官方正式版 32位&64位
277.34M
-
查看详情
java se development kit 8(jdk1.8) v8.0.461官方版
121.4M
-
查看详情
java 11(java se development kit 11) v11.0.28
140.22M
-
查看详情
java se development kit 17(jdk) v17.0.16官方版
152.44M
-
查看详情
java se development kit 23官方版 v23.0.2
203.64M
-
查看详情
jdk1.8 8u202
209.67M
- jdk开发工具包
-
更多 (17个) >>jdk大全 JDK是java开发的必不可少的工具包,它包含了JAVA的运行环境和JAVA工具。而且JDK包含了JRE(java运行环境),同时还包含了编译java源码的编译器,那么jdk哪个版本最好用?jdk更新版本的速度还是较快的,已经已经出来了JDK10了,但用JDK8和JDK9的人较多。小编整理出来jdk大全供大家下载!这里拥有多个版本的jdk可以选择,希望对java程序员有所帮助!
-
-
jdk15.0.1 64位官方版 158.16M
查看/简体中文 -
jdk16.0.2 64位官方版 149.05M
查看/简体中文 -
java se development kit 9(jdk9) 356.94M
查看/简体中文v9.0.4 64位32位官方版 -
Java JDK 128.75M
查看/简体中文 -
jdk1.6 32位/64位官方版 128.75M
查看/简体中文附环境变量配置教程 -
jdk17官方版 159.72M
查看/英文附安装教程 -
Jre4Android 63.88M
查看/简体中文v1.6.42安卓版
-
发表评论
0条评论软件排行榜
热门推荐
Convert.NET(代码翻译器) v10.6.9328.2414.1M / 多国语言[中文]
RegEx Tester(正则表达式调试工具) v3.2.0.026K / 英文
python最新版本 v3.13.527.22M / 简体中文
node.js安装包 v22.14.028.04M / 简体中文
dotCover 2024官方版 v2024.3.564.81M / 多国语言
jdk1.6 32位/64位官方版 附环境变量配置教程128.75M / 简体中文
jdk17官方版 附安装教程159.72M / 英文
微软visual c++运行库合集包 v3.0.22.0317官方版85.82M / 简体中文
dwin dgus(开发配置工具) v5.04官方版6.87M / 简体中文
Report Builder v3.0官方版32.16M / 简体中文