首 页
手机版

java se development kit 24(jdk24) v24.0.0官方版

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

java se development kit 24是一款全球广受欢迎的现代开发平台,一般简称为jdk24,Java 24,也是企业应用的理想编程语言,有助于企业降低成本、缩短开发时间、推动创新以及改善应用服务。同时这也是自java 21以来的第三个非长期支持版本,新版本主要聚焦于AI支持、后量子安全、性能优化三大方向,通过增强模式匹配、流处理、向量计算等能力,从而帮助开发者应对新兴技术挑战。相比jdk23,java se development kit 24更强调未来技术适配性,并将多项预览功能推进至成熟阶段。开发者需注意,Java 23已于2025年3月18日结束官方支持,建议根据项目需求评估是否升级至24或等待2025年9月的LTS版本JDK 25。

与前一版本相比,全新的java se development kit 24版本一共增加了多个新特性,包括密钥派生函数 API、提前类加载和链接、类文件 API、流收集器、永久禁用安全管理器、虚拟线程的同步而不固定平台线程、简化的源文件和实例主方法、量子抗性数字签名算法、结构化并发等等,能够更好的满足开发者对性能、新特性和安全性的需求。

java se development kit 24

java se development kit 24新特性

一、JDK-8341566(字符序列)法新读本

添加了静态工厂方法java.io.Reeader.of(CharSequence),以获取从CharSequence读取字符的Reader,String和StringBuilder是CharSequence的示例。在某些情况下,返回的Reader比使用java.io.StringReader更有效,因为后者需要转换为String并同步。

二、支持Unicode 16.0(JDK-8319993)

此版本将Unicode版本升级到16.0,其中包括Unicode字符数据库和Unicode标准:

java.lang.Character类支持Unicode字符数据库,该数据库增加了5185个字符,总共154998个字符。新增内容包括七个新脚本

1、Garay是一种来自西非的现代使用脚本。

2、Gurung Khema、Kirat Rai、Ol Onal和Sunuwar是来自印度东北部和尼泊尔的四种现代使用文字。

3、托德赫里是阿尔巴尼亚语的一种历史性文字。

4、Tulu Tigalari是印度西南部的一种历史性文字。

java.text。Bidi和java.text。规范化器类分别支持Unicode标准。

java.util.regex包支持基于Unicode标准附录的扩展字素簇。

三、新方法流程等待(持续时间)(JDK-8336479)

添加了一个新的重载方法java.lang.Process#waitFor(Duration)。具有超时的现有waitFor()方法需要一个原始超时值及其单位。新方法使用java.time。持续时间,使用户不会与单位混淆。

四、不覆盖现有文件的新JAR命令选项(JDK-8335912)

jar工具的提取操作得到了增强,允许使用--keep旧文件和-k选项来防止覆盖现有文件。

五、用于监视和管理虚拟线程调度程序的新MXBean(JDK-8338890)

一个新的、特定于JDK的监控和管理接口JDK.management。添加了VirtualThreadSchedulerMXBean,以允许基于Java管理扩展(JMX)的工具监视和管理虚拟线程调度器。该接口支持监视虚拟线程调度器的目标并行性、调度器使用的线程以及排队到调度器的虚拟线程数量。它还支持动态更改调度器的目标并行度。

六、新的jcmd命令Thread.vthread_scheduler和Thread.vthreade_pollers(JDK-8337199)

jcmd命令行工具中添加了两个命令,用于打印在诊断虚拟线程问题时可能有用的信息。

jcmd<pid>Thread.vthread_scheduler打印虚拟线程调度程序、目标并行度、线程数和其他有用的计数器。输出还包括支持虚拟线程执行定时操作的延迟任务调度器。

七、支持包含安全属性文件(JDK-8319332)

java.security安全属性文件以及java.security.properties系统属性所引用的文件现在支持包含其他属性文件。指令包括<path-to-a-file>可用于此目的。包含文件的效果相当于在包含点内联定义其属性。在《安全开发人员指南》的“安全属性文件包含”部分和JDK-8319333中查找更多信息和示例。

由于此更改,名称include不能再用于定义安全属性文件中的属性。如果名称include被传递给java.security。安全::getProperty或::setProperty API,将抛出IllegalArgumentException。

八、RSASA-PSS签名的文档标准哈希和MGF算法(JDK-8248981)

Java安全标准算法名称规范中添加了PSSParameterSpec算法名称的新部分。本节列出了在使用PSSParameterSpec对象初始化RSASA-PSS签名时可以指定的标准哈希和消息生成函数(MGF)算法。

九、如果本地PKCS11库(JDK-8330842)支持,SunPKCS11提供程序将增强为使用CKM_AES_CTS机制

SunPKCS11提供程序已得到增强,以支持Cipher服务类型的以下AES CTS转换:

AES/CTS/无填充

AES_128/CTS/无填充

AES_192/CTS/无填充

AES_256/CTS/无填充

十、TLSv1.3(JDK-8328608)的可配置新会话票证计数

新的系统属性jdk.tls.server.newSessionTicket设置JSSE服务器每个会话发送的TLSv1.3恢复票证的数量。可以在命令行上使用-Djdk.tls.server.newSessionTicket=#进行设置,其中#的范围为0到10。默认值为1。

十一、通过模式匹配禁用TLS密码组的机制(JDK-8341964)

可以使用java.security配置文件中的jdk.TLS.disabledAlgorithms安全属性,使用一个或多个“”通配符禁用TLS密码套件。例如,“TLS_RSA_”禁用以“TLS_RAS_”开头的所有密码套件。只有以“TLS_”开头的密码套件才允许使用通配符。

十二、使用JAR工具将JAR文件提取到特定目录的新选项(JDK-8173970)

jar工具的提取操作已得到增强,允许使用--dir或-C选项指定提取存档的目录。

十三、JDK-8344041外部规格新摘要页

API文档包含一个新的摘要页面,列出了Java SE和JDK API引用的外部规范。可以在API文档导航栏中链接的索引页面中找到新摘要页面的链接。

十四、jpackage支持Windows上的WiX工具集v4和v5(JDK-8319457)

jpackage可以在Windows上使用WiX工具集v4和v5,以及v3。它将自动选择最新安装的版本。

jpackage支持WiX v3和v4格式的自定义WiX源。如果使用WiX Toolset v4或v5,jpackage将自动将WiX v3格式的自定义WiX源转换为WiX v4格式。

十五、将W3C DTD和XSD添加到JDK内置目录(JDK-8344800)

JDK内置的XML目录在JDK 22中引入了Java平台的标准DTD,现在包括W3C规范定义的以下DTD和XSD。这些DTD和XSD将从XML目录本地加载,不需要网络访问。

软件优势

1、直接获取 Oracle 的性能、稳定性和安全性更新

2、在公共更新结束后访问多个 Oracle Java SE 版本

3、Oracle Java SE 8 企业管理、监视及部署特性

4、在公开发布之前获取关键漏洞修复程序

5、简单的月度订阅定价模式

6、访问 Oracle Java SE 8 商业功能

7、27 种语言的全天候支持,涵盖快速修复程序和任务关键型应用

8、获得针对整个 Java 产品组合(包括第三方库和运行时)的分级支持

9、附带 Java SE Subscription Enterprise Performance Pack

10、附带 Java Management Service

11、附带 Oracle GraalVM 授权 — 无额外成本

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\jdk24.0\bin

C:\Program Files\Java\jre24.0

3、# 检查JDK环境配置命令:

CMD 输入 java -version

软件功能

一、JEP 478: 密钥派生函数 API(预览)

密钥派生函数 API 是一种用于从初始密钥和其他数据派生额外密钥的加密算法。它的核心作用是为不同的加密目的(如加密、认证等)生成多个不同的密钥,避免密钥重复使用带来的安全隐患。 这在现代加密中是一个重要的里程碑,为后续新兴的量子计算环境打下了基础

通过该 API,开发者可以使用最新的密钥派生算法(如 HKDF 和未来的 Argon2):

二、JEP 483: 提前类加载和链接

在传统 JVM 中,应用在每次启动时需要动态加载和链接类。这种机制对启动时间敏感的应用(如微服务或无服务器函数)带来了显著的性能瓶颈。该特性通过缓存已加载和链接的类,显著减少了重复工作的开销,显著减少 Java 应用程序的启动时间。测试表明,对大型应用(如基于 Spring 的服务器应用),启动时间可减少 40% 以上。

这个优化是零侵入性的,对应用程序、库或框架的代码无需任何更改,启动也方式保持一致,仅需添加相关 JVM 参数(如 -XX:+ClassDataSharing)。

三、JEP 484: 类文件 API

类文件 API 在 JDK 22 进行了第一次预览(JEP 457),在 JDK 23 进行了第二次预览并进一步完善(JEP 466)。最终,该特性在 JDK 24 中顺利转正。

类文件 API 的目标是提供一套标准化的 API,用于解析、生成和转换 Java 类文件,取代过去对第三方库(如 ASM)在类文件处理上的依赖。

四、JEP 485: 流收集器

流收集器 Stream::gather(Gatherer) 是一个强大的新特性,它允许开发者定义自定义的中间操作,从而实现更复杂、更灵活的数据转换。Gatherer 接口是该特性的核心,它定义了如何从流中收集元素,维护中间状态,并在处理过程中生成结果。

与现有的 filter、map 或 distinct 等内置操作不同,Stream::gather 使得开发者能够实现那些难以用标准 Stream 操作完成的任务。例如,可以使用 Stream::gather 实现滑动窗口、自定义规则的去重、或者更复杂的状态转换和聚合。 这种灵活性极大地扩展了 Stream API 的应用范围,使开发者能够应对更复杂的数据处理场景。

五、JEP 486: 永久禁用安全管理器

JDK 24 不再允许启用 Security Manager,即使通过 java -Djava.security.manager命令也无法启用,这是逐步移除该功能的关键一步。虽然 Security Manager 曾经是 Java 中限制代码权限(如访问文件系统或网络、读取或写入敏感文件、执行系统命令)的重要工具,但由于复杂性高、使用率低且维护成本大,Java 社区决定最终移除它。

六、JEP 487: 作用域值 (第四次预览)

作用域值(Scoped Values)可以在线程内和线程间共享不可变的数据,优于线程局部变量,尤其是在使用大量虚拟线程时。

作用域值允许在大型程序中的组件之间安全有效地共享数据,而无需求助于方法参数。

七、JEP 491: 虚拟线程的同步而不固定平台线程

优化了虚拟线程与 synchronized 的工作机制。 虚拟线程在 synchronized 方法和代码块中阻塞时,通常能够释放其占用的操作系统线程(平台线程),避免了对平台线程的长时间占用,从而提升应用程序的并发能力。 这种机制避免了“固定 (Pinning)”——即虚拟线程长时间占用平台线程,阻止其服务于其他虚拟线程的情况。

现有的使用 synchronized 的 Java 代码无需修改即可受益于虚拟线程的扩展能力。 例如,一个 I/O 密集型的应用程序,如果使用传统的平台线程,可能会因为线程阻塞而导致并发能力下降。 而使用虚拟线程,即使在 synchronized 块中发生阻塞,也不会固定平台线程,从而允许平台线程继续服务于其他虚拟线程,提高整体的并发性能。

八、JEP 493:在没有 JMOD 文件的情况下链接运行时镜像

默认情况下,JDK 同时包含运行时镜像(运行时所需的模块)和 JMOD 文件。这个特性使得 jlink 工具无需使用 JDK 的 JMOD 文件就可以创建自定义运行时镜像,减少了 JDK 的安装体积(约 25%)。

说明:

Jlink 是随 Java 9 一起发布的新命令行工具。它允许开发人员为基于模块的 Java 应用程序创建自己的轻量级、定制的 JRE。

JMOD 文件是 Java 模块的描述文件,包含了模块的元数据和资源。

九、JEP 495: 简化的源文件和实例主方法(第四次预览)

这个特性主要简化了 main 方法的的声明。对于 Java 初学者来说,这个 main 方法的声明引入了太多的 Java 语法概念,不利于初学者快速上手。

十、JEP 497: 量子抗性数字签名算法 (ML-DSA)

JDK 24 引入了支持实施抗量子的基于模块晶格的数字签名算法 (Module-Lattice-Based Digital Signature Algorithm, ML-DSA),为抵御未来量子计算机可能带来的威胁做准备。

ML-DSA 是美国国家标准与技术研究院(NIST)在 FIPS 204 中标准化的量子抗性算法,用于数字签名和身份验证。

十一、JEP 498: 使用 sun.misc.Unsafe 内存访问方法时发出警告

JDK 23(JEP 471) 提议弃用 sun.misc.Unsafe 中的内存访问方法,这些方法将来的版本中会被移除。在 JDK 24 中,当首次调用 sun.misc.Unsafe 的任何内存访问方法时,运行时会发出警告。

十二、JEP 499: 结构化并发(第四次预览)

JDK 24 引入了结构化并发,一种多线程编程方法,目的是为了通过结构化并发 API 来简化多线程编程,并不是为了取代java.util.concurrent,目前处于孵化器阶段。

结构化并发将不同线程中运行的多个任务视为单个工作单元,从而简化错误处理、提高可靠性并增强可观察性。也就是说,结构化并发保留了单线程代码的可读性、可维护性和可观察性。

结构化并发的基本 API 是StructuredTaskScope,它支持将任务拆分为多个并发子任务,在它们自己的线程中执行,并且子任务必须在主任务继续之前完成。

收起介绍展开介绍

发表评论

0条评论