Java 近期新闻:OpenJDK JEP、Jakarta EE、GraalVM、TornadoVM、Micronaut、Quarkus、JobRunr、Maven
OpenJDK
在评审结束后,JEP 539(JVM 中的严格字段初始化预览版)已经从 Proposed to Target 阶段提升至 Targeted 阶段,并计划在 JDK 28 中交付。该 JEP 在 Java 虚拟机中引入了严格初始化字段,这些字段在读取之前必须先进行初始化。因此,永远不会看到诸如 0 或 null 之类的默认值。该特性可供所有生成 class 字节码文件的编译器直接使用。
同样,JEP 401(值对象预览版)的状态也已经从 Proposed to Target 阶段提升至 Targeted 阶段,并计划在 JDK 28 中交付。该 JEP 此前名为“对象类与值(预览版)”,提议通过值对象来增强语言功能。值对象被定义为:仅包含 final 字段;没有标示符;仅通过各自字段的值来区分。
JEP 535(Shenandoah 垃圾收集器:默认启用分代模式)已经从候选阶段提升至 Proposed to Target 阶段,并计划在 JDK 28 中交付。该 JEP 提议将 Shenandoah 垃圾收集器默认设置为分代模式。非分代模式将被标记为已弃用,并计划在未来的版本中移除。评审工作已于 2026 年 8 月 3 日结束。
JEP 542(加密对象的 PEM 编码)已经从 JEP Draft 8386511 阶段提升至候选阶段。在 JDK 25 至 JDK 27 期间完成三轮预览后,该 JEP 提议将这个功能最终确定下来。该功能提供“一个 API,用于将表示加密密钥、证书和证书撤销列表的对象编码成广泛使用的增强隐私邮件(PEM)传输格式,以及从该格式解码回对象”。该 JEP 将支持 PEM 文本与 PKCS #8 及 X.509 二进制格式中加密对象之间的转换。变更内容包括:将 PEM 记录类重新划归普通类,以便提供一个构造函数,可以接受内容为 Base64 编码的字节数组;将 DEREncodable 接口重命名为 BinaryEncodable,以便更准确地描述 PEM 文本中存储的二进制数据。
JDK 27
JDK 27 的早期访问构建 Build 33 发布,它是 Build 32 的升级,修复了各种问题。要了解关于这个构建的更多细节,请参阅发布说明。
JDK 28
JDK 28 的早期访问构建 Build 9 发布,它是 Build 8 的升级,修复了各种问题。要了解关于这个构建的更多细节,请参阅发布说明。
Jakarta EE
Jakarta Agentic AI 1.0.0 的首个里程碑版本带来了多项值得注意的变更,包括:全新的内部 TCK 基础设施,不局限于签名和反射检查,还能覆盖真实的行为语义;新增 @RequiresEngine 和 @RequiresNoEngine 注解,在部署参考实现时,可以用它们替代 JUnit 的 @Disabled 注解用于测试。要了解有关该版本的更多详细信息,请参阅发布说明。
Eclipse Starter for Jakarta EE 已正式更新,支持 Jakarta EE 11,支持的运行时环境包括 Azul Payara、GlassFish 和 Open Liberty。欢迎开发者使用它生成应用程序,并在 GitHub 问题列表中提交反馈。
GraalVM
GraalvM 25.2 版本发布,带来了多项值得注意的变更,包括:全新的 Graal Script Agent(一个处于早期预览阶段的 Java 库),可以将自然语言请求转换为在本地运行的沙箱化应用程序插件;在所有平台(包括 Windows 操作系统)上支持 G1 GC on Native Image;默认启用 Java Vector API。要了解有关该版本的更多详细信息,请参阅发布说明。
TornadoVM
GPULlama3.java 1.0.0 正式发布,这是一个基于 TornadoVM 的开源 GPU 加速 Llama 3 推理项目。本次更新修复了若干 Bug,并新增了以下功能:支持 TornadoVM CUDA 后端,并利用 Tensor Core MMA 实现了批量预填充的硬件加速; 新增一个兼容 OpenAI 的服务器,可以通过 HTTP API 为 OpenAI 客户端提供任何 GPULlama3 模型服务;新增一个 RunMetrics 类,用于改进性能指标的收集。要了解有关该版本的更多详细信息,请参阅发布说明。
Micronaut
Micronaut 基金会发布了基于 Micronaut Core 5.1.10 的 Micronaut Framework 5.1.0。本次发布更新了多个 Micronaut 模块,并新增了以下功能:一个新的 @Property 注解(嵌套在 @Introspected 注解中),用于提供有序集合注入;CDI 集成钩子;通过 Kotlin Symbolic Processing API 遍历 Kotlin 内部类;支持 OpenDI——这是 CDI Lite 的一个与 Eclipse 兼容的实现,而 CDI Lite 是 4.0 版本中发布的“上下文与依赖注入”(Contexts and Dependency Injection)规范的一个子集。要了解有关该版本的更多详细信息,请参阅发布说明。
Quarkus
Quarkus 3.38.0 发布,带来了 Bug 修复、依赖项升级以及两项新功能:对于通过 Caffeine 和 JCache 实现的 Second Level Cache (2LC) 缓存区域,支持基于权重的内存驱逐;新增一个 HTTP Problem 扩展,实现了 RFC-7807(HTTP API 的问题详情),可以自动映射异常,从而标准化来自 application/problem+json 端点的 HTTP 响应。要了解有关该版本的更多详细信息,请参阅发布说明。
JobRunr
JobRunr 8.8.0 发布,带来的 Bug 修复和功能增强包括:改进 BackgroundJobServer 类实例遇到 StorageException 时的日志记录;支持 Kotlin 2.4;允许 Quarkus 用户移除 quarkus-smallrye-health 依赖项,因为使用 Quarkus SmallRye Health 扩展运行 JobRunr 时已不再需要该依赖项。要了解有关该版本的更多详细信息,请参阅发布说明。
JDKUpdater
JDKUpdater(一款可以帮助开发者跟踪 OpenJDK 和 GraalVM 构建相关更新的工具) 26.0.33+211 已于上周发布。该版本由 Azul 公司首席工程师 Gerrit Grunwald 于 2024 年 3 月中旬发布,对发布功能进行了更新,以便适应近期 OpenJDK 关键补丁更新(Critical Patch Updates)发布节奏的变化。要了解有关该版本的更多详细信息,请参阅发布说明。
Maven
Maven 4.0.0 的第六个候选版本(RC)带来 Bug 修复(包括 RC5 中已解决的问题)、文档改进、依赖项升级以及一些新功能,包括:支持将 Java 模块名称作为附加的 artifactId,即使它与项目的 artifactId 不同,从而支持可能生成多个工件的多模块项目; 此外,将 maven-executor 依赖项提取到它自己的项目中,以改善 Maven 3 和 Maven 4 项目在 ebmedded 和 forked 模式下的执行效果。
值得开发者注意的是,发布说明中详细列出了已知的兼容性问题以及更严格的 POM 验证要求。
原文链接:https://www.infoq.com/news/2026/08/java-news-roundup-jul27-2026/