作为2026年的首个季度更新,OpenJDK 25.0.2已于近期正式发布。这次更新主要聚焦于安全性加固、性能修复和稳定性提升。对于Java开发者而言,有几项关键变化值得重点关注。

RMI TLS连接默认启用端点识别
这是一个具有潜在兼容性风险的变更。当通过RMI使用TLS连接时,现在默认启用端点识别。这意味着客户端会严格验证服务器证书中的Subject Alternative Name是否与主机名匹配。
这项更新主要影响所有使用 javax.rmi.ssl.SSLRMIClientSocketFactory 的RMI应用。此前能够正常工作的TLS连接,可能会因为证书主机名不匹配而失败。
因此,建议相关应用的开发者,在升级前确保服务器证书包含正确的主机名SAN信息。如果确实需要临时规避,可以通过设置系统属性 jdk.rmi.ssl.client.enableEndpointIdentification=false 来禁用此功能。
由于25.0.2是一个维护版本,虽然功能上没有大的改动,但使用了RMI over TLS的系统在升级后可能会出现连接异常。稳妥起见,最好在测试环境中先行验证,并仔细检查证书配置。
G1垃圾回收器恢复Transparent Huge Pages支持
简而言之,这意味着JDK中默认的G1垃圾回收器性能得到了一定程度的提升。
本次更新修复了 -XX:+UseTransparentHugePages 选项无法正确启用Transparent Huge Pages的问题。现在,G1可以在THP模式配置为 madvise 的系统上,正常利用大页内存了。
这对运行在Linux系统上的大内存应用尤其有益。启用该选项可以减少页表项数量,降低TLB未命中率,从而提升垃圾回收效率。当然,这要求你的Linux内核已配置 transparent_hugepage=madvise。
根据社区测试反馈,对于运行大规模Java应用的服务器,启用此选项后可获得显著的吞吐量提升。如果你在运行大内存的Linux服务器环境,建议在验证内核配置后尝试启用这一优化。
安全增强:X.509证书AIA扩展URI过滤机制
证书的授权信息访问扩展增加了URI过滤机制。新增了 com.sun.security.allowedAIALocations 这个系统与安全属性,允许管理员定义访问X.509证书AIA扩展中URI的过滤规则。
此更新的目的是防止恶意证书通过AIA扩展,诱导应用程序去访问恶意的LDAP或HTTP服务器。
配置方式如下:
# 允许特定域名
com.sun.security.allowedAIALocations=https://crl.example.com/
# 或允许所有(不推荐生产环境)
com.sun.security.allowedAIALocations=any
需要注意的是,该属性的默认策略是空值。空值意味着拒绝所有访问,你必须显式配置才能启用AIA跟踪功能。
25.0.2版本中值得关注的修复
除了上述三个主要特性,本次更新还修复了大量P1和P2级别的Bug。
P1级关键修复
- JDK-8366434:G1 GC的THP支持修复。
- JDK-8370318:AES-GCM向量内在函数越界读问题,与安全相关。
- JDK-8369605:字节码重写导致在AArch64/PPC64/RISC-V平台上出现堆损坏。
P2级性能优化
- JDK-8368071:修复了在JDK-8355003后编译吞吐量回归2-8倍的问题。
- JDK-8368670:修复了JFR事件注册与类加载可能导致的死锁。
- JDK-8369190:优化了AArch64平台上的JavaFrameAnchor内存屏障。
其他安全增强
- JDK-8368032:上述提到的AIA扩展过滤机制。
- JDK-8368308:ISO 4217货币代码更新。
深入OpenJDK Bug优先级体系
每次版本发布的修复清单中,每个Bug都标记了优先级。这个P1到P5的体系究竟是如何划分的呢?
官方优先级定义
OpenJDK的Bug优先级主要依据其JBS系统来定义,具体如下:
| 优先级 |
定义 |
典型场景 |
处理时效 |
| P1 |
最高优先级 - 系统崩溃、数据丢失、严重安全漏洞 |
JVM崩溃、数据损坏、远程代码执行漏洞 |
必须在下一个补丁版本中修复 |
| P2 |
高优先级 - 主要功能失效,但系统可运行 |
关键API错误、性能严重退化、编译器错误 |
通常在1-2个季度内修复 |
| P3 |
中等优先级 - 次要功能受影响或有变通方案 |
UI问题、非核心API缺陷、影响少量用户的性能问题 |
按计划排期修复 |
| P4 |
低优先级 - 轻微问题,不影响核心功能 |
拼写错误、轻微UI不一致、文档问题 |
有空闲资源时处理 |
| P5 |
最低优先级 - 信息类问题 |
改进建议、代码清理、测试用例补充 |
可能长期不处理 |
值得注意的是,即便是P1级别的Bug,除非特别紧急,官方通常也会安排在下一次计划内的补丁版本中修复,而不是立即发布紧急修复版本。
独特的ILW三维度评估模型
实际上,OpenJDK社区内部会采用一个更精细的三维度评估法(ILW)来最终映射到P1-P5的优先级上。
- Impact(影响程度):High(系统不可用)/Medium/Low
- Likelihood(发生概率):High(几乎必然)/Medium/Low
- Workaround(变通难度):High(无法变通)/Medium/Low
通过这三个维度的组合,最终确定Bug的优先级。例如:
- P1典型组合:Impact=High, Likelihood=High, Workaround=High(系统必现崩溃)
- P2典型组合:Impact=High, Likelihood=Medium, Workaround=High(主要功能偶尔失效)
如果你未来需要在OpenJDK的JBS上提交Bug报告,清晰地描述这三个维度的情况,将有助于社区的核心开发者快速、准确地定位问题的严重性。
理解OpenJDK的发布节奏
掌握OpenJDK的发布规律,对于制定企业的技术升级策略至关重要。
- 主版本发布:采用6个月快速迭代周期,每年3月和9月发布新的功能版本(如JDK 25, 26, 27)。
- 季度更新:在1月、4月、7月、10月的第三个星期二左右发布。内容主要为安全补丁和稳定性修复,覆盖所有当前活跃的版本(包括LTS)。本次的25.0.2就属于此类更新。
- LTS版本:每2年发布一个长期支持版本(如21 -> 25 -> 29),提供至少8年的商业支持,是企业生产环境的推荐选择。
- 紧急响应:针对严重的零日安全漏洞,可能会触发季度周期外的紧急补丁发布。
总结
OpenJDK 25.0.2的发布延续了季度更新一贯的务实风格,在安全、性能和稳定性层面均有值得关注的改进。这次更新最核心的看点可以总结为三点:
- 安全为先:对RMI TLS连接的强化和AIA扩展的过滤机制,体现了主动防御的安全思维。
- 性能回归:G1 GC对大页内存支持的修复,解开了大内存应用在特定Linux环境下的性能枷锁。
- 机制透明:通过了解其背后的Bug优先级体系和发布节奏,开发者能更好地评估升级风险与收益。
对于技术团队而言,持续关注这些更新动态,是保障应用安全与性能的基础。如果你想与更多开发者交流此类技术细节与升级经验,可以访问云栈社区的相关板块进行探讨。展望未来,Valhalla、Loom等重量级项目的进展,将是接下来几个版本更值得期待的重头戏。