Skip to content

JDK 17 LTS 官方 Release Notes 深度拆解大典

参考官方文档: OpenJDK JDK 17 Official Features & Release Notes
JDK 17 是极其重量级的 LTS 长期支持版本。它带来了 Sealed 密封类Apple Silicon (macOS/AArch64) 原生支持强封装 JDK 内部 API 以及伪随机数引擎增强。本文严格对照 OpenJDK 官方 14 个 JEP 提案进行规范化深度拆解。


🐳 容器运行环境 (Runtime Environment)

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

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

1. 📦 面向数据建模与语言表达力 (Data Modeling & Language)

JEP 409: Sealed Classes (密封类与密封接口)

限定类的继承层级结构,明确指定允许继承的子类(permits Circle, Rectangle),为穷举模式匹配奠定安全基础。

java
public sealed interface Shape permits Circle, Rectangle {}

public final class Circle implements Shape { public double r; }
public final class Rectangle implements Shape { public double w, h; }
📸 Unverified Snapshot📋eclipse-temurin:17-jdk-alpine
⏱️ 1612msNot verified
Sealed Class Hierarchy permits Circle, Rectangle:
Circle Area: 78.53981633974483
Compiler Exhaustive Switch Check Passed.

JEP 395: Records (不可变数据载体类 - 正式版)

原生生成基于值的不可变数据结构,自动提供全参构造器、equals()hashCode()toString() 与属性访问器。

java
public record UserRecord(long id, String username, String role) {}
📸 Unverified Snapshot📋eclipse-temurin:17-jdk-alpine
⏱️ 2252msNot verified
Record UserRecord[id=101, username=Alice, role=ADMIN]
Equals check: true
Accessor role(): ADMIN

JEP 378: Text Blocks (多行文本块)

使用三引号 """ 编写多行 HTML、JSON 或 SQL 字符串,免去繁琐的转义字符与 + 拼接。

java
String json = """
    {
      "status": "success",
      "code": 200
    }
    """;
📸 Unverified Snapshot📋eclipse-temurin:17-jdk-alpine
⏱️ 1570msNot verified
Multi-line Text Block JSON:
{
  "status": "success",
  "code": 200,
  "message": "Hello Multi-line Text Block"
}

JEP 394: Pattern Matching for instanceof (模式匹配)

消除了显式强转的防范性代码,在判断类型的同时自动完成类型转换绑定。

java
if (obj instanceof String s) {
    System.out.println("Length: " + s.length());
}
📸 Unverified Snapshot📋eclipse-temurin:17-jdk-alpine
⏱️ 1525msNot verified
Pattern Matching instanceof:
if (obj instanceof String s) -> s.length(): 24

2. 🎲 核心类库与安全增强 (APIs & Security)

JEP 356: Enhanced Pseudo-Random Number Generators (伪随机数生成器增强)

提供 RandomGenerator 统一接口体系,内置 LXM(如 L128X128MixRandom)等高性能伪随机数生成算法。

java
RandomGenerator generator = RandomGeneratorFactory.of("L128X128MixRandom").create();
📸 Unverified Snapshot📋eclipse-temurin:17-jdk-alpine
⏱️ 1870msNot verified
RandomGeneratorFactory (L128X128MixRandom):
Generated pseudo-random int: 639

JEP 403: Strongly Encapsulate JDK Internals (强封装 JDK 内部 API)

默认禁用对 sun.misc.Unsafe 以外大部分内部 API 的跨模块反射访问(除非显式指定 --add-opens),极大提升 JVM 内部安全性。


3. 🖥️ 平台与底层架构支持 (Platform Ports & Cleanup)

JEP 391: macOS/AArch64 Port (Apple Silicon M1/M2/M3 原生支持)

提供针对 Apple M 系列芯片(AArch64 架构)原生优化的 JDK 构建,性能提升巨大。


4. 📜 全部 14 个官方 JEP 提案索引清单 (JDK 17 Full JEP Matrix)

JEP 编号JEP 提案名称状态核心领域 / 变更意义
JEP 306Restore Always-Strict Floating-Point Semantics正式版恢复默认严格浮点语义 (strictfp)
JEP 356Enhanced Pseudo-Random Number Generators正式版伪随机数生成器统一 API (LXM 算法)
JEP 382New macOS Rendering Pipeline正式版基于 Metal API 的 macOS 图形渲染管线
JEP 391macOS/AArch64 Port正式版Apple Silicon (M1/M2/M3) 架构原生支持
JEP 398Deprecate the Applet API for RemovalDeprecated废弃 Applet API
JEP 403Strongly Encapsulate JDK Internals正式版强封装 JDK 内部 API (默认禁止反射 sun.misc)
JEP 406Pattern Matching for switchPreviewswitch 模式匹配 (初次 Preview)
JEP 407Remove RMI ActivationRemoved彻底移除 RMI Activation 机制
JEP 409Sealed Classes正式版Sealed 密封类与密封接口
JEP 410Remove Experimental AOT and JIT CompilerRemoved移除实验性 jaotc / C2 AOT 编译器
JEP 411Deprecate the Security Manager for RemovalDeprecated废弃 Security Manager
JEP 412Foreign Function & Memory APIIncubator外部函数与内存 API (Project Panama)
JEP 414Vector APISecond Incubator向量计算 API
JEP 415Context-Specific Deserialization Filters正式版上下文敏感的反序列化过滤器

Released under the MIT License.