跳转到正文

JDK 25 LTS ​

参考官方文档: OpenJDK JDK 25 Official Features & Release Notes
JDK 25 涵盖简化程序入口、AOT 优化、紧凑对象头、Scoped Values 和分代 Shenandoah 等变化。


🐳 容器运行环境 (Runtime Environment) ​

在标准 Docker 镜像 eclipse-temurin:25-jdk-alpine 中执行控制台诊断指令 java -version:

📸 Unverified Snapshot📋eclipse-temurin:25-jdk-alpine
⏱️ 800msNot verified
openjdk version "25.0.3" 2026-04-21 LTS
OpenJDK Runtime Environment Temurin-25.0.3+9 (build 25.0.3+9-LTS)
OpenJDK 64-Bit Server VM Temurin-25.0.3+9 (build 25.0.3+9-LTS, mixed mode, sharing)

1. 🔀 语言表达力与入门简化 (Language & Developer Productivity) ​

JEP 512: Compact Source Files and Instance Main Methods ​

彻底简化了 Java 程序入口点,允许直接编写隐式类和实例 main 方法,免去繁琐的 public static void main(String[] args) 模板代码。

java
void main() {
    System.out.println("JDK 25 Instance Main Method:");
    System.out.println("void main() executed directly without public static void main!");
}
📸 Unverified Snapshot📋eclipse-temurin:25-jdk-alpine
⏱️ 2263msNot verified
JDK 25 Instance Main Method:
void main() executed directly without public static void main(String[] args)!

JEP 513: Flexible Constructor Bodies (灵活的构造函数体) ​

允许在构造函数中 super(...) 或 this(...) 调用之前执行预校验或准备语句(前提是不引用未初始化的 this 实例)。

java
public class JEP513_FlexibleConstructor extends ParentClass {
    JEP513_FlexibleConstructor(int input) {
        // 在 super() 之前允许执行参数校验与计算
        int validated = Math.max(1, input);
        super(validated);
    }
}
📸 Unverified Snapshot📋eclipse-temurin:25-jdk-alpine
⏱️ 1892msNot verified
Validated value before super(): 1
Flexible Constructor Body executed! val = 1

JEP 507: Primitive Types in Patterns, instanceof, and switch ​

将解构模式匹配拓展至所有基本数据类型(int, double, boolean 等),消除了类型包装的限制。

java
int val = 42;
String result = switch (val) {
    case byte b -> "byte " + b;
    case int i when i > 10 -> "large int " + i;
    case int i -> "small int " + i;
    default -> "other";
};
📸 Unverified Snapshot📋eclipse-temurin:25-jdk-alpine
⏱️ 31msNot verified
Primitive Types in Pattern Matching:
switch(val = 42) -> large int 42

2. ⚡ 协程与高并发演进 (Project Loom & Scoped Values) ​

JEP 506: Scoped Values (作用域值) ​

提供比 ThreadLocal 更轻量、不可变且在虚拟线程(Virtual Threads)树状结构间高效共享上下文的机制。

java
ScopedValue<UserContext> USER = ScopedValue.newInstance();
📸 Unverified Snapshot📋eclipse-temurin:25-jdk-alpine
⏱️ 1678msNot verified
JEP 506 Scoped Values:
ScopedValue<UserContext> USER = ScopedValue.newInstance();
Immutable, lightweight thread-local context sharing across Virtual Threads!

JEP 505: Structured Concurrency (结构化并发 - Preview) ​

将运行在不同线程中的相关任务视为单个工作单元,简化并发错误处理与取消流程。


3. 🧠 内存与 GC(Compact Headers、Shenandoah) ​

JEP 519: Compact Object Headers (紧凑对象头) ​

在 64 位 HotSpot JVM 中将对象头大小从 128 位(16 字节)压缩降至 64 位(8 字节),直接降低 10% ~ 20% 的 JVM 堆内存开销!

📸 Unverified Snapshot📋eclipse-temurin:25-jdk-alpine
⏱️ 1671msNot verified
JEP 519 Compact Object Headers (-XX:+UseCompactObjectHeaders):
Object header compressed from 128-bit (16B) to 64-bit (8B)!
JVM Heap footprint reduced by up to 20%!

JEP 521: Generational Shenandoah (分代 Shenandoah GC) ​

为 Shenandoah 垃圾回收器引入年轻代与老年代分代回收机制,在维持亚毫秒级低停顿的同时提升 50% 以上的高吞吐量。

📸 Unverified Snapshot📋eclipse-temurin:25-jdk-alpine
⏱️ 1762msNot verified
JEP 521 Generational Shenandoah GC (-XX:+UseShenandoahGC -XX:ShenandoahGCMode=generational):
Young & Old generation separated for Shenandoah GC.
Sub-millisecond pause times preserved with +50% throughput!

4. 📜 全部官方 JEP 提案索引清单 (JDK 25 Full JEP Matrix) ​

JEP 编号JEP 提案名称核心领域
JEP 470PEM Encodings of Cryptographic Objects密码学 PEM 标准编码
JEP 502Stable Values性能与不变性优化
JEP 503Remove the 32-bit x86 Port架构清理(废除 32位 x86)
JEP 505Structured Concurrency结构化并发
JEP 506Scoped Values作用域值
JEP 507Primitive Types in Patterns, instanceof, and switch基本类型模式匹配
JEP 508Vector API向量计算
JEP 509JFR CPU-Time ProfilingJFR CPU 性能剖析
JEP 510Key Derivation Function API密钥派生 API
JEP 511Module Import Declarations模块导入声明 (import module)
JEP 512Compact Source Files and Instance Main Methods隐式类与实例 main
JEP 513Flexible Constructor Bodies灵活构造函数体
JEP 514/515Ahead-of-Time Profiling & Command-Line ErgonomicsAOT 预热编译优化
JEP 519Compact Object Headers紧凑对象头 (8 字节)
JEP 521Generational Shenandoah分代 Shenandoah GC

版本信息与迁移 ​

  • 发布时间 / 标准时间: 2025 年 9 月
  • 维护状态: 截至 2026-08-27,以页面所链接的官方生命周期或规范状态为准
  • 运行时或平台基线: 目标 JDK、JVM 发行版,以及 Jakarta EE、GraalVM 或应用服务器的独立兼容矩阵

迁移影响: 升级时先处理移除模块、弃用 JVM 参数、javax.*/jakarta.* 边界、框架与字节码工具兼容性,再在目标 GC、容器和 CPU 架构上做回归与性能验证。

版本确认 ​

bash
java --version
javac --version

资料核对日期:2026-08-27。

Released under the MIT License.