java25与其部分新特性

java25与其部分新特性简述

Posted by Byolio on September 19, 2025

本文旨在描述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

  1. CharSequence.getChars(int, int, char[], int) 新方法
  2. 新系统属性 stdin.encoding
  3. HttpClient:BodyHandlers.limiting / BodySubscribers.limiting
  4. HttpResponse.connectionLabel()
  5. ZIP 文件系统支持 accessMode=readOnly
  6. Inflater 和 Deflater 实现 AutoCloseable
  7. ForkJoinPool 实现 ScheduledExecutorService + 新增 submitWithTimeout
  8. CompletableFuture/SubmissionPublisher 异步默认使用 commonPool

JVM/HotSpot

  1. G1 GC 共享 G1CardSet 降低记忆集开销
  2. -XX:+UseCompactObjectHeaders 变为正式产品选项
  3. HotSpotDiagnosticMXBean.dumpThreads/jcmd Thread.dump_to_file 支持锁信息 + JSON schema

JFR

  1. 新增 @Contextual 注解

安全库

  1. java.security.debug 默认输出线程/时间戳/调用位置
  2. SUN provider 新增 SHAKE128-256 / SHAKE256-512
  3. SunPKCS11 新增 HKDF-SHA256/384/512
  4. jdk.tls.disabledAlgorithms 支持按 TLS 使用场景禁用算法
  5. TLS Keying Material Exporters (JSSE + SunJSSE)
  6. XML 安全库升级至 Santuario 3.0.5,支持 SHA3-ECDSA 四种算法

工具

  1. jar –validate 校验增强(重复 entry、不合法路径、LOC/CEN 不一致等)

Java 25预览/孵化特性

  1. JEP 502: Stable Values(预览)
  2. JEP 505: Structured Concurrency(第五预览)
  3. JEP 506: Scoped Values(正式?→ 需要确认:Java 25 中已标准化,Java 24 是预览)
  4. JEP 507: Primitive Types in Patterns, instanceof, and switch(第三预览)
  5. 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位平台

思维导图

java25new