本文旨在描述java25与其部分新特性
java25 windows下载连接 : https://www.oracle.com/java/technologies/downloads/#jdk25-windows
java25 document下载连接: https://www.oracle.com/java/technologies/javase-jdk25-doc-downloads.html
引言
9.16号继java21后又一个tls版本java25发布了, 随之而来的也是大量的新特性, 下面就对java25的部分新特性进行简述
Java 25正式特性
core-libs
- CharSequence.getChars(int, int, char[], int) 新方法
- 新系统属性 stdin.encoding
- HttpClient:BodyHandlers.limiting / BodySubscribers.limiting
- HttpResponse.connectionLabel()
- ZIP 文件系统支持 accessMode=readOnly
- Inflater 和 Deflater 实现 AutoCloseable
- ForkJoinPool 实现 ScheduledExecutorService + 新增 submitWithTimeout
- CompletableFuture/SubmissionPublisher 异步默认使用 commonPool
JVM/HotSpot
- G1 GC 共享 G1CardSet 降低记忆集开销
- -XX:+UseCompactObjectHeaders 变为正式产品选项
- HotSpotDiagnosticMXBean.dumpThreads/jcmd Thread.dump_to_file 支持锁信息 + JSON schema
JFR
- 新增 @Contextual 注解
安全库
- java.security.debug 默认输出线程/时间戳/调用位置
- SUN provider 新增 SHAKE128-256 / SHAKE256-512
- SunPKCS11 新增 HKDF-SHA256/384/512
- jdk.tls.disabledAlgorithms 支持按 TLS 使用场景禁用算法
- TLS Keying Material Exporters (JSSE + SunJSSE)
- XML 安全库升级至 Santuario 3.0.5,支持 SHA3-ECDSA 四种算法
工具
- jar –validate 校验增强(重复 entry、不合法路径、LOC/CEN 不一致等)
Java 25预览/孵化特性
- JEP 502: Stable Values(预览)
- JEP 505: Structured Concurrency(第五预览)
- JEP 506: Scoped Values(正式?→ 需要确认:Java 25 中已标准化,Java 24 是预览)
- JEP 507: Primitive Types in Patterns, instanceof, and switch(第三预览)
- JEP 508: Vector API(第十次孵化)
Java 25移除特性
core-libs / java.net
1
2
3
4
5
| java.net.Socket 构造方法
两个接受 stream=false 的构造方法已废弃,调用将抛出 IllegalArgumentException
不再允许通过它们创建 DatagramSocket
替代方案:使用 java.net.DatagramSocket
未来版本将彻底移除
|
core-svc / javax.management
1
2
3
4
5
6
7
8
9
| 移除旧 JMX 系统属性
删除以下历史兼容性属性:
jmx.extend.open.types
jmx.invoke.getters
jdk.jmx.mbeans.allowNonPublic
jmx.mxbean.multiname
jmx.tabular.data.hash.map
jmx.remote.x.buffer.size(正确名称是 jmx.remote.x.notification.buffer.size)
这些属性原本仅用于过渡,现已无效
|
hotspot / runtime
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| PerfData 采样功能移除
移除 StatSampler
移除参数 -XX:PerfDataSamplingInterval
移除 counter:sun.os.hrt.ticks(可改用 sun.rt.createVmBeginTime)
GC PerfData 行为改变:Eden 使用计数恒为 0
替代方案:使用 Java Flight Recorder (JFR) 或 JMX
旧监视器性能计数器 sun.rt._sync*
移除以下计数器:
_sync_ContendedLockAttempts
_sync_FutileWakeups
_sync_Parks
_sync_Notifications
_sync_Inflations
_sync_Deflations
_sync_MonExtant
替代方案:使用对应的 JFR 事件:
JavaMonitorEnter
JavaMonitorWait
JavaMonitorNotify
JavaMonitorInflate / JavaMonitorDeflate
JavaMonitorStatistics
|
security-libs / java.security
1
2
3
4
5
6
| 移除过期根证书
Baltimore CyberTrust Root
alias: "baltimorecybertrustca [jdk]"
Camerfirma 根证书:
"camerfirmachamberscommerceca [jdk]"
"camerfirmachambersignca [jdk]"
|
security-libs / javax.crypto:pkcs11
1
2
3
4
5
6
7
8
| 移除 SunPKCS11 Provider 的 PBE SecretKeyFactory 实现
删除以下算法:
SecretKeyFactory.PBEWithHmac[MD]AndAES_128
SecretKeyFactory.PBEWithHmac[MD]AndAES_256
SecretKeyFactory.HmacPBE[MD]
[MD] 包括:SHA1 / SHA224 / SHA256 / SHA384 / SHA512
移除原因:与 SunJCE 实现不一致,可能导致互操作性问题
替代方案:使用 SunJCE 对应实现
|
其他
1
| 官方公告和OpenJDK发行说明Java 25正式 “drops 32-bit support for x86” , 此后不在支持x86 32位平台
|
思维导图
