跳到主要内容

349 篇文档带有标签「Java」

查看所有标签

JDK 10 新特性 - JEP 312:线程本地握手

介绍一种在不执行全局 VM 安全点的情况下在线程上执行回调的方法。使得停止单个线程变得既可行又低成本,而不仅仅是停止所有线程或一个都不停。

JDK 11 新特性 - JEP 181:基于嵌套的访问控制

引入 nests,这是一种访问控制上下文,与 Java 编程语言中现有的嵌套类型概念相一致。Nests 允许在逻辑上属于同一代码实体的类(但编译为不同的类文件)互相访问对方的私有成员,而无需编译器插入扩大访问范围的桥接方法。

JDK 11 新特性 - JEP 309:动态类文件常量

扩展 Java 类文件格式以支持一种新的常量池形式,`CONSTANT_Dynamic`。加载 `CONSTANT_Dynamic` 时会将其创建委托给一个引导方法(bootstrap method),就像链接 `invokedynamic` 调用点时将链接操作委托给引导方法一样。

JDK 12 新特性 - JEP 325:Switch 表达式(预览版)

扩展 `switch` 语句,使其既可以用作语句,也可以用作表达式,并且两种形式都可以使用“传统”或“简化”的作用域和控制流行为。这些更改将简化日常编码,同时也为在 `switch` 中使用模式匹配(JEP 305)铺平了道路。这是 JDK 12 中的预览语言功能。

JDK 13 新特性 - JEP 350: 动态 CDS 存档文件

扩展应用类数据共享,以允许在 Java 应用程序执行结束时对类进行动态归档。归档的类将包括所有已加载的应用程序类和库类,这些类不在默认的基础层 CDS 归档中。

JDK 13 新特性 - JEP 353:重新实现传统的 Socket API

用更简单、更现代的实现替换 `java.net.Socket` 和 `java.net.ServerSocket` API 的底层实现,这种新实现将易于维护和调试。新的实现将很容易适配用于与用户模式线程(也称为 fibers,目前在 Project Loom 中正在探索)一起工作。

JDK 13 新特性 - JEP 354:Switch 表达式(第二预览版)

扩展 `switch`,使其既可以用作语句,也可以用作表达式,并且两种形式都可以使用传统的 `case ... :` 标签(带贯穿)或新的 `case ... ->` 标签(不带贯穿),同时引入一个新的语句用于从 `switch` 表达式中生成值。这些更改将简化日常编码,并为在 `switch` 中使用模式匹配(JEP 305)铺平道路。这是 JDK 13 中的预览语言功能。

JDK 13 新特性 - JEP 355:文本块(预览版)

向 Java 语言中添加文本块。文本块是一种多行字符串字面量,它避免了大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时给予开发者对格式的控制权。这是 JDK 13 中的一个预览语言功能。

JDK 14 新特性 - JEP 361: Switch Expressions

扩展 `switch`,使其既可以用作语句,也可以用作表达式,并且两种形式都可以使用传统的 `case ... :` 标签(带贯穿)或新的 `case ... ->` 标签(不带贯穿),同时引入一个新的语句用于从 `switch` 表达式中生成值。这些更改将简化日常编码,并为在 `switch` 中使用模式匹配铺平道路。这是 JDK 12 和 JDK 13 中的预览语言功能。

JDK 14 新特性 - JEP 368: 文本块(第二预览版)

向 Java 语言中添加文本块。文本块是一种多行字符串字面量,它避免了大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时给予开发者对格式的控制权。这是 JDK 14 中的一个预览语言功能。

JDK 15 新特性 - JEP 371: 隐藏类

引入了隐藏类,这些类无法被其他类的字节码直接使用。隐藏类旨在供在运行时生成类并通过反射间接使用它们的框架使用。隐藏类可以定义为访问控制巢的成员,并且可以独立于其他类进行卸载。

JDK 15 新特性 - JEP 373: 重新实现传统的 DatagramSocket API

替换 java.net.DatagramSocket 和 java.net.MulticastSocket API 的底层实现,采用更简单、更现代的实现方式,使其易于维护和调试。新的实现将易于调整以与虚拟线程配合使用,虚拟线程目前正在 Project Loom 中进行探索。这是 JEP 353 的后续工作,JEP 353 已经重新实现了旧的 Socket API。

JDK 15 新特性 - JEP 378: 文本块

向 Java 语言添加文本块。文本块是一种多行字符串字面量,避免了对大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时给予开发者对格式的控制。

JDK 16 新特性 - JEP 338: Vector API(孵化中)

提供一个孵化器模块的初始迭代版本,jdk.incubator.vector,用于表达矢量计算,这些计算在支持的 CPU 架构上能够可靠地在运行时编译为最佳的矢量硬件指令,从而实现比等效标量计算更优越的性能。

JDK 16 新特性 - JEP 369: 迁移到 GitHub

在 GitHub 上托管 OpenJDK 社区的 Git 仓库。结合 JEP 357(从 Mercurial 迁移到 Git),这将会把所有单一仓库的 OpenJDK 项目迁移到 GitHub,包括 JDK 特性发布版本以及 11 及更高版本的 JDK 更新发布版本。

JDK 16 新特性 - JEP 380: Unix-Domain Socket Channels

在 java.nio.channels 包中的 socket 通道和 server-socket 通道 API 中添加对 Unix 域(AF UNIX)套接字的支持。扩展继承的通道机制以支持 Unix 域套接字通道和服务器套接字通道。

JDK 16 新特性 - JEP 390:基于值的类的警告

指定原始包装器类为基于值的类,并弃用它们的构造函数以便移除,从而引发新的弃用警告。针对在 Java 平台中任何基于值的类的实例上进行不当同步尝试的行为提供警告。

JDK 16 新特性 - JEP 395: Records

通过记录(records)增强 Java 编程语言,记录是一种充当不可变数据透明载体的类。可以将记录视为名义元组。

JDK 17 新特性 - JEP 306: 恢复始终严格的浮点语义

使浮点运算始终保持严格,而不是同时具有严格的浮点语义(strictfp)和略有不同的默认浮点语义。这将恢复语言和虚拟机的原始浮点语义,与在 Java SE 1.2 中引入严格和默认浮点模式之前的语义相匹配。

JDK 17 新特性 - JEP 406: switch 模式匹配(预览)

通过为 switch 表达式和语句添加模式匹配,以及对模式语言的扩展来增强 Java 编程语言。将模式匹配扩展到 switch 可以使一个表达式根据多个模式进行测试,每个模式都有特定的操作,从而能够简洁且安全地表达以数据为导向的复杂查询。这是 JDK 17 中的预览语言功能。

JDK 17 新特性 - JEP 410:移除实验性的 AOT 和 JIT 编译器

移除实验性的基于 Java 的提前编译(AOT)和即时编译(JIT)编译器。自从该编译器推出以来,使用率一直很低,而维护它所需的工作量却很大。保留实验性的 Java 级别 JVM 编译器接口(JVMCI),以便开发人员可以继续使用外部构建的编译器版本进行 JIT 编译。

JDK 17 新特性 - JEP 411:弃用安全管理员以进行移除

在未来的版本中弃用安全管理员(Security Manager)。安全管理员起源于 Java 1.0。多年来,它已不再是保护客户端 Java 代码的主要手段,并且很少被用于保护服务器端代码。为了推动 Java 的发展,我们计划与旧的 Applet API(JEP 398)一起弃用安全管理员以便移除。

JDK 17 新特性 - JEP 412: 外部函数和内存 API(孵化版)

引入一个 API,通过它 Java 程序可以与 Java 运行时之外的代码和数据进行互操作。通过高效调用外部函数(即 JVM 之外的代码),以及安全访问外部内存(即不受 JVM 管理的内存),该 API 使 Java 程序能够调用原生库并处理原生数据,而无需担心 JNI 的脆弱性和危险性。

JDK 18 新特性 - JEP 400: UTF-8 by Default

指定 UTF-8 作为标准 Java API 的默认字符集。通过这一变更,依赖于默认字符集的 API 将在所有实现、操作系统、区域设置和配置中表现一致。

JDK 18 新特性 - JEP 408: Simple Web Server

提供一个命令行工具,用于启动仅提供静态文件的最小 Web 服务器。没有可用的 CGI 或类似 servlet 的功能。此工具在原型设计、即兴编码和测试方面非常有用,尤其是在教育环境中。

JDK 18 新特性 - JEP 419: 外部函数和内存 API(第二个孵化版)

引入一个 API,通过它 Java 程序可以与 Java 运行时之外的代码和数据进行互操作。通过高效调用外部函数(即 JVM 之外的代码),以及安全访问外部内存(即不受 JVM 管理的内存),该 API 使 Java 程序能够调用本地库并处理本地数据,而无需担心 JNI 的脆弱性和危险性。

JDK 18 新特性 - JEP 420:switch 模式匹配(第二次预览)

通过为 switch 表达式和语句添加模式匹配,以及对模式语言的扩展,来增强 Java 编程语言。将模式匹配扩展到 switch 可以使一个表达式与多个模式进行匹配测试,每个模式都有特定的操作,从而能够简洁且安全地表达以数据为导向的复杂查询。这是 JDK 18 中的预览语言功能。

JDK 18 新特性-JEP 421:弃用 Finalization 以便移除

在未来版本中弃用并移除终止处理(finalization)。目前,默认情况下终止处理仍处于启用状态,但可以禁用以方便早期测试。在未来的版本中,它将默认被禁用,并在更晚的版本中被彻底移除。依赖终止处理的库和应用程序的维护者应考虑迁移到其他资源管理技术,例如 try-with-resources 语句和清理器(cleaners)。

JDK 19 新特性 - JEP 405: 记录模式(预览)

通过记录模式来增强 Java 编程语言,以解构记录值。记录模式和类型模式可以嵌套使用,从而实现一种强大、声明式且可组合的数据导航与处理方式。这是一个预览语言特性。

JDK 19 新特性 - JEP 424:外部函数和内存 API(预览版)

引入一个 API,通过它 Java 程序可以与 Java 运行时之外的代码和数据进行互操作。通过高效调用外部函数(即 JVM 之外的代码),以及安全访问外部内存(即不受 JVM 管理的内存),该 API 使 Java 程序能够调用本地库并处理本地数据,而无需担心 JNI 的脆弱性和危险性。这是一个预览版 API。

JDK 19 新特性 - JEP 427:switch 模式匹配(第三次预览)

增强 Java 编程语言,使其在 switch 表达式和语句中支持模式匹配。将模式匹配扩展到 switch 可以让一个表达式与多个模式进行匹配,每个模式都有特定的操作,从而能够简洁且安全地表达以数据为导向的复杂查询。这是一个预览语言特性。

JDK 19 新特性 - JEP 428:结构化并发(孵化阶段)

通过引入结构化并发的 API 来简化多线程编程。结构化并发将不同线程中运行的多个任务视为一个单一的工作单元,从而简化错误处理和取消操作,提高可靠性,并增强可观测性。这是一个孵化中的 API。

JDK 20 新特性-JEP 429: Scoped Values(孵化阶段)

引入了作用域值(scoped values),它能够在线程内部和跨线程之间共享不可变数据。相比于线程局部变量,作用域值是更优的选择,尤其是在使用大量虚拟线程时。这是一个孵化中的 API。

JDK 20 新特性-JEP 433: switch 模式匹配(第四预览版)

增强 Java 编程语言,为 switch 表达式和语句添加模式匹配功能。将模式匹配扩展到 switch 可以使一个表达式根据多个模式进行测试,每个模式都有特定的操作,从而能够简洁且安全地表达以数据为导向的复杂查询。这是一个预览语言功能。

JDK 20 新特性-JEP 434: 外部函数和内存 API(第二次预览)

引入一个 API,通过它 Java 程序可以与 Java 运行时之外的代码和数据进行互操作。通过高效调用外部函数(即 JVM 之外的代码),以及安全访问外部内存(即不受 JVM 管理的内存),该 API 使 Java 程序能够调用本地库并处理本地数据,而无需像 JNI 那样脆弱且危险。这是一个预览版 API。

JDK 20 新特性-JEP 437: 结构化并发 (第二次孵化)

通过引入结构化并发的 API 来简化多线程编程。结构化并发将不同线程中运行的多个任务视为一个工作单元,从而简化错误处理和取消操作,提高可靠性并增强可观测性。这是一个孵化中的 API。

JDK 20新特性-介绍

引入 范围值,它允许在线程内和线程间共享不可变数据。与线程局部变量相比,范围值更为优先,尤其是在使用大量虚拟线程时。这是一个孵化中的API。

JDK 21 新特性 - JEP 431: Sequenced Collections

引入新的接口来表示具有确定遭遇顺序的集合。每个这样的集合都有一个明确的第一个元素、第二个元素,依此类推,直到最后一个元素。它还提供了用于访问其第一个和最后一个元素的统一 API,并按相反顺序处理其元素。

JDK 21 新特性 - JEP 439: Generational ZGC

通过扩展 Z 垃圾收集器(ZGC)以维护年轻对象和老对象的单独代际,来提升应用程序性能。这将允许 ZGC 更频繁地收集通常会较快消亡的年轻对象。

JDK 21 新特性 - JEP 440: Record Patterns

通过记录模式来增强 Java 编程语言,以解构记录值。记录模式和类型模式可以嵌套,从而实现一种强大、声明式且可组合的数据导航和处理形式。

JDK 21 新特性 - JEP 441:switch 的模式匹配

增强 Java 编程语言,使其在 switch 表达式和语句中支持模式匹配。将模式匹配扩展到 switch 可以使一个表达式根据多个模式进行测试,每个模式都有特定的操作,从而能够简洁且安全地表达复杂的数据导向查询。

JDK 21 新特性 - JEP 442: 外部函数和内存 API(第三次预览)

引入一个 API,通过它 Java 程序可以与 Java 运行时之外的代码和数据进行互操作。通过高效调用外部函数(即 JVM 之外的代码),以及安全地访问外部内存(即不受 JVM 管理的内存),该 API 使 Java 程序能够调用原生库并处理原生数据,而无需担心 JNI 的脆弱性和危险性。这是一个预览版 API。

JDK 21 新特性 - JEP 444: 虚拟线程

向 Java 平台引入虚拟线程。虚拟线程是一种轻量级线程,可以显著减少编写、维护和观察高吞吐量并发应用程序的工作量。

JDK 21 新特性 - JEP 446: 作用域值 (预览)

引入了作用域值,这是一种可以安全且高效地共享给方法的值,而无需使用方法参数。它们比线程局部变量更受青睐,尤其是在使用大量虚拟线程时。这是一个预览 API。

JDK 21 新特性 - JEP 451:准备禁止动态加载代理

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

JDK 21 新特性-JEP 430: 字符串模板 (预览)

通过字符串模板增强 Java 编程语言。字符串模板通过将文本字面量与嵌入式表达式和模板处理器相结合,从而补充了 Java 现有的字符串字面量和文本块,以生成专门的结果。这是一个预览语言特性及 API。

JDK 21 新特性-JEP 445:Unnamed Classes and Instance Main Methods (预览)

改进 Java 语言,让学生在不需要理解专为大型程序设计的语言特性的情况下,就能编写他们的第一个程序。学生可以使用简化的声明来编写单类程序,而不用使用 Java 的另一种方言,然后随着技能的提升,无缝扩展他们的程序以使用更高级的功能。这是一个预览语言功能。

JDK 21 新特性-JEP 453: 结构化并发 (预览)

通过引入结构化并发的 API 来简化并发编程。结构化并发将不同线程中运行的相关任务组视为一个工作单元,从而简化错误处理和取消操作,提高可靠性并增强可观测性。这是一个预览版 API。

JDK 22 新特性-JEP 454: Foreign Function & Memory API

引入一个 API,通过它 Java 程序可以与 Java 运行时之外的代码和数据进行互操作。通过高效调用外部函数(即 JVM 之外的代码),以及安全访问外部内存(即不受 JVM 管理的内存),该 API 使 Java 程序能够调用原生库并处理原生数据,而无需像 JNI 那样脆弱且危险。

JDK 22 新特性-JEP 458: 启动多文件源代码程序

增强 Java 应用程序启动器,使其能够运行以多份 Java 源代码文件形式提供的程序。这将使从小型程序过渡到大型程序的过程更加平缓,使开发人员可以选择是否以及何时去配置构建工具。

JDK 22 新特性-JEP 459: 字符串模板(第二次预览)

通过字符串模板增强 Java 编程语言。字符串模板通过将文本字面量与嵌入式表达式和模板处理器相结合,从而补充了 Java 现有的字符串字面量和文本块,以生成专门的结果。这是一个预览语言功能和 API。

JDK 22 新特性-JEP 462: 结构化并发(第二次预览)

通过引入结构化并发的 API 来简化并发编程。结构化并发将不同线程中运行的相关任务组视为一个工作单元,从而简化错误处理和取消操作,提高可靠性并增强可观测性。这是一个预览版 API。

JDK 22 新特性-JEP 463:隐式声明的类和实例主方法(第二次预览)

改进 Java 编程语言,以便学生在无需理解专为大型程序设计的语言特性的情况下,就能编写他们的第一个程序。学生可以使用简化的声明来编写单类程序,而不用使用该语言的单独方言,然后随着技能的增长,无缝扩展他们的程序以使用更高级的功能。这是一个预览语言特性。

JDK 22 新特性-JEP 464: 作用域值(第二预览版)

引入了作用域值(scoped values),它能够实现与同一线程中的子帧以及子线程之间的不可变数据的受控共享。作用域值比线程局部变量更容易理解,并且在空间和时间成本上更低,尤其是在与虚拟线程(Virtual Threads)和结构化并发(Structured Concurrency)结合使用时。这是一个预览版 API。

JDK 23 新特性-JEP 471:弃用 sun.misc.Unsafe 中的内存访问方法以进行移除

弃用 sun.misc.Unsafe 中的内存访问方法,并计划在未来的版本中移除这些方法。这些不受支持的方法已经被标准 API 取代,即 VarHandle API(JEP 193,JDK 9)和 Foreign Function & Memory API(JEP 454,JDK 22)。我们强烈建议库开发者从 sun.misc.Unsafe 迁移到受支持的替代方案,以便应用程序能够顺利迁移到现代的 JDK 版本。

JDK 23 新特性-JEP 477:隐式声明的类和实例主方法(第三次预览)

改进 Java 编程语言,以便初学者可以在不需要理解专为大型程序设计的语言特性的情况下编写他们的第一个程序。初学者无需使用该语言的单独方言,而是可以为单类程序编写简化的声明,然后随着技能的增长无缝扩展其程序以使用更高级的功能。经验丰富的开发人员同样可以享受简洁地编写小程序的乐趣,而无需使用旨在大规模编程的结构。这是一个预览语言功能。

JDK 23 新特性-JEP 480: 结构化并发 (第三次预览)

通过引入结构化并发的 API 来简化并发编程。结构化并发将不同线程中运行的相关任务组视为一个工作单元,从而简化错误处理和取消操作,提高可靠性并增强可观测性。这是一个预览版 API。

JDK 23 新特性-JEP 481: Scoped Values(第三次预览)

引入了作用域值(scoped values),使方法能够在线程内的被调用者以及子线程之间共享不可变数据。与线程局部变量相比,作用域值更易于理解。它们在空间和时间成本上也更低,特别是与虚拟线程(JEP 444)和结构化并发(JEP 480)一起使用时。这是一个预览 API。

JDK 23 新特性-JEP 482: 灵活的构造函数主体(第二次预览)

在 Java 编程语言的构造函数中,允许在显式构造函数调用(即 super(..) 或 this(..))之前出现语句。这些语句不能引用正在构造的实例,但可以初始化其字段。在调用另一个构造函数之前初始化字段,当方法被重写时,可以使类更加可靠。这是一个预览语言特性。

JDK 8 新特性 - JEP 107:集合的批量数据操作

为 Java 集合框架(Java Collections Framework)添加用于数据批量操作的功能。这通常被称为“Java 的 filter/map/reduce”。批量数据操作包括串行(在调用线程上执行)和并行(使用多线程)两种版本的操作。数据操作通常以 lambda 函数的形式表达。

JDK 8 新特性 - JEP 139:增强 javac 以提高构建速度

通过修改 Java 编译器,使其在单个持久进程中运行于所有可用核心上,跟踪构建之间的包和类依赖关系,自动生成本地方法的头文件,并清理不再需要的类和头文件,从而减少构建 JDK 所需的时间并启用增量构建。

JDK 8 新特性 - JEP 166:全面改造 JKS-JCEKS-PKCS12 密钥库

通过在 PKCS#12 密钥库中添加等效支持,来促进从 JKS 和 JCEKS 密钥库迁移数据。增强 KeyStore API 以支持新功能,例如条目元数据和跨越多个密钥库的逻辑视图。启用 JEP-121 中引入的强加密算法,以保护密钥库条目。

JDK 8 新特性 - JEP 174:Nashorn JavaScript 引擎

设计并实现一种新的轻量级、高性能的 JavaScript 实现,并将其集成到 JDK 中。这个新的引擎将通过现有的 `javax.script` API 提供给 Java 应用程序使用,同时也会更广泛地通过一个新的命令行工具提供支持。

JDK 8 新特性 - JEP 179:记录 JDK API 的支持与稳定性文档

JDK 长期以来一直存在一个缺陷,即未能明确指定 **com.sun.\*** 类型以及 JDK 中随附的其他非 Java SE 规范类型的支持和稳定性使用约定。这些约定以及潜在的演进策略应当在这些类型的源代码和生成的类文件中清晰地体现出来。这类信息可以通过 JDK 特定的注解类型进行建模。

JDK 9 新特性 - JEP 165:编译器控制

这个 JEP 提出了一种改进的方式来控制 JVM 编译器。它启用了运行时可管理的、依赖于方法的编译器标志。(在编译期间不可变。)

JDK 9 新特性 - JEP 193: 变量句柄 (Variable Handles)

定义一个标准方法,用于在对象字段和数组元素上调用各种 `java.util.concurrent.atomic` 和 `sun.misc.Unsafe` 操作的等效操作,定义一套标准的围栏操作以实现对内存排序的细粒度控制,并定义一个标准的可达性围栏操作,以确保被引用的对象保持强可达性。

JDK 9 新特性 - JEP 211:忽略导入语句上的弃用警告

从 Java SE 8 开始,根据对《Java 语言规范》的合理解释,java 编译器在通过名称导入已弃用的类型或静态导入已弃用的成员(方法、字段、嵌套类型)时,需要发出弃用警告。这些警告信息并不具备足够的参考价值,因此不应强制要求。在实际使用已弃用成员时,仍然应该保留弃用警告。

JDK 9 新特性 - JEP 213:Milling Project Coin

作为 JDK 7 / Java SE 7 的一部分,Project Coin / JSR 334 中包含的小型语言变更易于使用,并在实践中运作良好。然而,一些修正案可以解决这些变更中的不完善之处。此外,在 Java SE 8 中将下划线("_")用作标识符会生成警告,而在 Java SE 9 中应将其转变为错误。还建议允许接口拥有私有方法。

JDK 9 新特性 - JEP 220: 模块化运行时镜像

重组 JDK 和 JRE 的运行时镜像,以适应模块化并提升性能、安全性和可维护性。定义一种新的 URI 模式,用于命名存储在运行时镜像中的模块、类和资源,同时不暴露镜像的内部结构或格式。根据需要修订现有规范以适应这些更改。

JDK 9 新特性 - JEP 225: Javadoc 搜索功能

在由标准 doclet 生成的 API 文档中添加一个搜索框,可以用于搜索文档中的程序元素以及带标签的单词和短语。该搜索框会出现在由标准 doclet 生成的所有页面的头部。

JDK 9 新特性 - JEP 260:封装大多数内部 API

默认情况下,封装大多数 JDK 的内部 API,以便在编译时无法访问它们,并为未来版本中运行时也无法访问它们做好准备。确保关键且广泛使用的内部 API 不被封装,以便在存在对其全部或大部分功能支持的替代方案之前,它们仍然可以被访问。

JDK 9 新特性 - JEP 264:平台日志 API 与服务

定义一个最小的日志记录 API,平台类可以使用该 API 来记录消息,并为这些消息的使用者提供一个服务接口。库或应用程序可以提供此服务的一个实现,以便将平台日志消息路由到其所选择的日志框架。如果没有提供实现,则会使用基于 `java.util.logging` API 的默认实现。

JDK 9 新特性 - JEP 268: XML 目录

开发一个支持 OASIS XML 目录标准 v1.1 的标准 XML 目录 API。该 API 将定义目录和目录解析器抽象,可以与接受解析器的 JAXP 处理器一起使用。

JDK 9 新特性 - JEP 274:增强的方法句柄

增强 `java.lang.invoke` 包中的 `MethodHandle`、`MethodHandles` 和 `MethodHandles.Lookup` 类,通过新的 `MethodHandle` 组合器和查找细化来简化常见用例,并实现更好的编译器优化。

JDK 9 新特性 - JEP 276:语言定义对象模型的动态链接

提供一种机制,用于将对象上的高级操作(例如“读取属性”、“写入属性”、“调用可调用对象”等)链接起来,这些操作在 `INVOKEDYNAMIC` 调用点中以名称形式表达。为普通 Java 对象的这些操作提供默认链接器以支持其常见语义,同时提供一种安装语言特定链接器的机制。

JDK 9 新特性 - JEP 289:弃用 Applet API

废弃 Applet API,随着 web 浏览器供应商移除对 Java 浏览器插件的支持,该 API 正迅速变得无关紧要。引导开发人员使用其他技术,例如 Java Web Start 或可安装的应用程序。

JDK24新特性-JEP 472: 准备限制 JNI 的使用

对 Java Native Interface (JNI) 的使用发出警告,并调整 Foreign Function & Memory (FFM) API 以一致的方式发出警告。所有这些警告旨在让开发人员为未来的版本做好准备,该版本将通过统一限制 JNI 和 FFM API 来默认确保完整性。应用程序开发人员可以通过在必要时选择性地启用这些接口来避免当前的警告和未来的限制。

JDK24新特性-JEP 483: 提前类加载与链接

通过使应用程序的类在 HotSpot Java 虚拟机启动时立即可用(处于已加载和已链接状态)来改进启动时间。通过在一次运行中监视应用程序并存储所有类的已加载和已链接形式到缓存中,以便在后续运行中使用,从而实现这一点。为将来对启动时间和预热时间的改进奠定基础。

JDK24新特性-JEP 486: 永久禁用安全管理员

Security Manager 多年来一直不是保护客户端 Java 代码的主要手段,也很少被用来保护服务器端代码,并且维护成本很高。因此,我们在 Java 17 中通过 JEP 411(2021)将其标记为废弃,准备移除。作为移除 Security Manager 的下一步,我们将修订 Java 平台规范,使开发人员无法启用它,并且其他平台类不会引用它。这一变更对绝大多数应用程序、库和工具没有影响。我们将在未来的版本中移除 Security Manager API。

JDK24新特性-JEP 487: Scoped Values (第四版预览)

介绍作用域值,它使方法能够在单个线程中与其调用者以及子线程共享不可变数据。作用域值比线程局部变量更容易理解。它们还具有更低的空间和时间成本,尤其是在与虚拟线程(JEP 444)和结构化并发(JEP 480)一起使用时。这是一个预览 API。

JDK24新特性-JEP 491: Synchronize Virtual Threads without Pinning

通过安排在这些结构中阻塞的虚拟线程释放其底层平台线程以供其他虚拟线程使用,来提高使用同步方法和语句的 Java 代码的可扩展性。这将消除几乎所有虚拟线程被固定到平台线程的情况,这种情况会严重限制可用于处理应用程序工作负载的虚拟线程数量。

JDK24新特性-JEP 492: 灵活的构造函数体(第三次预览)

在 Java 编程语言的构造函数中,允许在显式的构造函数调用(即 super(..) 或 this(..))之前出现语句。这些语句不能引用正在构建的实例,但它们可以初始化其字段。在调用另一个构造函数之前初始化字段可以使类在方法被重写时更可靠。这是一个预览语言特性。

JDK24新特性-JEP 493: Linking Run-Time Images without JMODs

通过启用 jlink 工具来创建自定义运行时镜像,而无需使用 JDK 的 JMOD 文件,从而将 JDK 的大小减少约 25%。此功能必须在构建 JDK 时启用;默认情况下不会启用,并且某些 JDK 供应商可能会选择不启用它。

JDK24新特性-JEP 495: 简单源文件和实例 main 方法(第四预览)

使 Java 编程语言得以发展,以便初学者可以在不需要理解为大型程序设计的语言特性的情况下编写他们的第一个程序。初学者可以为单类程序编写简化的声明,然后随着技能的提高无缝地扩展他们的程序以使用更高级的特性。有经验的开发者也可以喜欢简洁地编写小型程序,而不需要使用为大型编程设计的结构。这是一个预览语言特性。

JDK24新特性-JEP 496: 抗量子模块-基于格的密钥封装机制

通过提供抗量子的基于模块格的密钥封装机制(ML-KEM)的实现来增强 Java 应用程序的安全性。密钥封装机制(KEMs)用于使用公钥加密技术在不安全的通信信道上保护对称密钥。ML-KEM 被设计为能够抵御未来的量子计算攻击。它已被美国国家标准与技术研究院(NIST)在 FIPS 203 中标准化。

JDK24新特性-JEP 497: 抗量子模块-基于格的数字签名算法

通过提供抗量子模块格数字签名算法(ML-DSA)的实现来增强 Java 应用程序的安全性。数字签名用于检测对数据未经授权的修改,并验证签署人的身份。ML-DSA 被设计为能够抵御未来的量子计算攻击。它已被美国国家标准与技术研究院(NIST)在 FIPS 204 中标准化。

JDK24新特性-JEP 498: 在使用 sun.misc.Unsafe 中的内存访问方法时发出警告

在运行时首次调用 sun.misc.Unsafe 中的任何内存访问方法时发出警告。这些不受支持的方法在 JDK 23 中已被彻底弃用。它们已经被标准 API 所取代,即 VarHandle API(JEP 193,JDK 9)和 Foreign Function & Memory API(JEP 454,JDK 22)。我们强烈建议库开发者从 sun.misc.Unsafe 迁移到受支持的替代方案,以便应用程序可以顺利迁移到现代的 JDK 版本。

JDK24新特性-JEP 499: 结构化并发(第四预览版)

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

JDK24新特性-JEP 501: 抑制32位 x86 端口以备移除

弃用 32 位 x86 端口,并打算在未来的版本中移除它。这将因此弃用 JDK 中唯一剩余的 Linux 32 位 x86 端口。这实际上也将弃用任何剩余的下游 32 位 x86 端口。在 32 位 x86 端口被移除后,与架构无关的 Zero 端口将是运行 32 位 x86 处理器上 Java 程序的唯一方式。

JDK新特性-介绍

JDK8共更新55个新特性。部分重要特性会在后续的文章中单独介绍。特性列表如下