JDK 25 发布说明总结
📅 发布时间:2025 年 9 月 16 日
🆔 版本号:25+37
主要新功能(Major New Functionality)
语言特性
- 模式匹配中的原始类型(第三次预览):
instanceof和switch中支持直接使用原始类型。 - 模块导入声明:允许一次性导入模块导出的所有包,简化模块复用。
- 简化单文件程序:Compact Source Files 和 Instance Main Methods,让入门更简单。
- 灵活构造方法体:构造函数中可在
super(...)或this(...)之前写语句(但不能用未构造好的对象)。
库(Libraries)
- 结构化并发(第五次预览):让一组相关任务作为一个整体来管理。
- Scoped Values:跨线程共享不可变数据,比 ThreadLocal 更轻量。
- Stable Values(预览):初始化灵活的不可变对象,可被 JVM 优化。
- 向量 API(第十次孵化):在支持的 CPU 上生成高效 SIMD 指令。
安全性
- PEM 编码 API(预览):支持 PEM 格式的加解密对象。
- 新的密钥派生函数(KDF)API。
性能
- 压缩对象头:从实验性转为正式功能。
- AOT(预编译)改进:简化缓存生成,支持方法级 profile 提前加载,缩短应用预热时间。
监控与诊断
- JFR(Flight Recorder)增强:包括 CPU 时间采样(实验性)、协作式采样,以及方法级计时/跟踪。
新增特性(New Features)
CharSequence/CharBuffer新增getChars(...)方法,高效复制字符。- 新增系统属性
stdin.encoding,指定标准输入流编码。 - HttpClient 新增限制响应体大小的 API(
BodyHandlers.limiting等)。 - ZIP 文件系统提供器可只读或读写模式。
ForkJoinPool实现ScheduledExecutorService,新增带超时的提交方法。Inflater/Deflater实现AutoCloseable,支持 try-with-resources。- G1 GC、ZGC 在延迟和内存占用上进一步优化。
移除功能(Removed Features)
- Graal JIT 被移除。
Socket的老构造函数(带stream=false)不再允许。- 某些 JMX 系统属性(如
jmx.invoke.getters)被移除。 - PerfData 的采样机制被移除。
- 旧的对象监视器性能计数器被移除,建议用 JFR 替代。
- 移除过期的根证书(如 Baltimore CyberTrust Root)。
- 移除 SunPKCS11 提供者中部分 PBE 实现。
弃用功能(Deprecated)
- Linux 的
-Djdk.lang.Process.launchMechanism=VFORK被弃用。 java.locale.useOldISOCodes被弃用(设为 true 已无效果)。- JMX 中 XML 相关 API 被弃用。
UseCompressedClassPointers被弃用(未来会彻底移除非压缩模式)。- 多种权限类(如
FilePermission、SSLPermission等)被标记准备移除,因为 Security Manager 已不再支持。
已解决问题(Resolved Issues)
- 修复 CodeModel 丢失未知属性的问题。
- 日本皇历(Japanese Imperial Calendar)异常更合理。
- Serial/Parallel GC 在 JNI 临界区的内存回收修复,避免 OOME。
- G1 Mixed GC 改进,减少暂停时间波动。
- ZGC 字符串去重策略优化,跳过短命字符串。
- JVMTI ClassFileLoadHook 提供的 class files 都会被验证。
已知问题(Known Issues)
java.time某些类的 Class 对象 跨版本序列化/反序列化不兼容。ClassValue::remove+get场景下性能回退,影响部分库(如 Scala 2.12)。- G1 GC 下
-XX:+UseTransparentHugePages在某些 Linux 配置下无效。
其他注意事项(Other Notes)
- Windows 上
File.delete不再能删除只读文件,除非设置-Djdk.io.File.allowDeleteReadOnlyFiles=true。 - 文件/目录名末尾空格在 Windows 上一律报错。
File("")(空路径)行为更一致,视为当前目录。- CLDR 数据升级到 v47,带来部分格式更新。
⚠️ 升级建议:
- 检查是否依赖已删除或弃用的 API(JMX 属性、SunPKCS11 PBE、
UseCompressedClassPointers等)。 - Windows 环境下涉及只读文件删除逻辑要调整。
- 如果使用跨版本序列化
Class对象,需注意不兼容问题。 - 测试
ClassValue的使用场景,避免性能回退。
713

被折叠的 条评论
为什么被折叠?



