首 页
手机版

java se development kit 21(jdk21) v21.0.6

Java开发工具包,包含Java运行环境,开发套件和基础类库源代码。

作为一种功能强大并简单易用的编程语言,Java收到广泛的欢迎,使用java开发的软件也越来越多,而想要打开java编写的程序,就需要在电脑中安装java运行环境,多多小编这里给大家带来的是java se development kit 21,一般简称为jdk21,java 21,是全球广受欢迎的现代开发平台,也是企业应用的理想编程语言,有助于企业降低成本、缩短开发时间、推动创新以及改善应用服务。目前软件已经提供了数以千计的性能、稳定性和安全性改进,包括平台增强功能,可以帮助开发人员提高工作效率并推动整个组织的创新和增长。

与上一版本相比,java se development kit 21新增了多个新特性,比如引入的序列集合,可以为Java开发者提供一种新的、有序的、线程安全的集合实现。增加了三个主要的接口,包括SequencedCollection‌,SequencedSet‌和SequencedMap<K,V>‌;增加了虚拟线程,可以创建大量的线程,甚至达到百万级别,‌简化并发模式模型,简化代码,减少阻塞问题‌;还增加了字符串模板,提供了一种更简洁、更直观的方式来动态构建字符串,通过使用占位符${},可以将变量的值直接嵌入到字符串中,而不需要手动处理等等,这些特性不仅增强了Java语言的功能性,还在开发效率和程序性能上做出了质的飞跃。

jdk21

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.6版本

一、JDK 21.0.6包含IANA时区数据2024b,其中包含以下更改:

改进墨西哥、蒙古和葡萄牙的历史数据。

System V名称现已过时。

主数据表单现在使用%z。

该代码现在符合早期时间戳的RFC 8536。

支持POSIX.1-2024,它删除了asctime_r和ctime_r。

二、Windows上的ProcessBuilder引用包含任何空格字符的参数字符串(JDK-8335428(非公共))

在Windows上,ProcessBuilder在启动进程时扩展了参数字符串的引用,以确保它们被应用程序识别为单个命令参数。空格字符集已从空格(0x20)扩展到包括java.lang.Character.isSpaceChar定义的所有空格字符,其中包括所有Unicode空格分隔符字符,如EN-space(0x2002),以及行分隔符和段落分隔符字符。

三、支持时区数据库2024b(JDK-8339637)

IANA时区数据库已升级至2024b。此版本主要包括改进墨西哥、蒙古和葡萄牙历史数据的更改。它还更改了时区“MET”的一个时间戳缩写。此外Asia/Choibalsan现在是Asia/Ulaanbaatar的别名。

新的tzdata更改也会影响一些旧的时区ID。根据2024b的规定,“EST”链接更改为“美洲/巴拿马”,“HST”链接为“太平洋/檀香山”,“MST”链接为”美洲/凤凰城“。为了保持与Java SE规范的兼容性,Java.time。区域Id。SHORT_IDS地图未更改。

收起介绍展开介绍

发表评论

0条评论