# jdk-features-learning **Repository Path**: liuchangng/jdk-features-learning ## Basic Information - **Project Name**: jdk-features-learning - **Description**: 学习jdk新特性 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-20 - **Last Updated**: 2026-09-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JDK 27 新特性源码学习 Java 27 各 JEP 的**可运行源码示例**与实测笔记。每个特性一个文件,直接用 `javac` / `java` 即可跑(预览特性需 `--enable-preview`)。 > 本仓库基于 JDK 27 构建 `27+35-2325`(安装路径 `D:\Software\Java\jdk-27`)。不同 JDK 27 早期构建对预览 API 的落地程度不一,部分特性在本机构建中尚未提供真实注解/类,相关文件已用占位或手写演示说明,详见各文件注释。 ## 环境要求 - JDK 27(建议 `D:\Software\Java\jdk-27`,用 `java -version` 确认) - 终端使用时建议把 JDK 27 的 `bin` 放到 `PATH` 前面: ```powershell $env:PATH = "D:\Software\Java\jdk-27\bin;" + $env:PATH ``` - VS Code 用户:`.vscode/settings.json` 已锁定 `java.home` 为 JDK 27 并启用 `--enable-preview`,开箱即用。 ## 目录结构 ``` jdk27/ src/ 9 个 JEP 示例(每个特性一个 .java) out/ 编译产物(已 gitignore) README.md 各特性详细说明与编译/运行命令 ``` ## 9 个新特性 | JEP | 特性 | 类型 | |-----|------|------| | 523 | 让 G1 成为所有环境的默认 GC | 正式 | | 527 | TLS 1.3 后量子混合密钥交换 | 正式 | | 531 | Lazy Constants | 预览 | | 532 | 模式 / instanceof / switch 中的原始类型 | 预览 | | 533 | Structured Concurrency | 预览 | | 534 | 默认启用紧凑对象头 | 正式 | | 536 | JFR 进程内数据脱敏 | 正式 | | 537 | Vector API(第 12 次孵化) | 孵化 | | 538 | PEM 编码的加密对象 | 预览 | 详见 [jdk27/README.md](jdk27/README.md)。 ## 快速开始 ```powershell # 编译全部(JEP 537 需要 incubator 模块) & "D:\Software\Java\jdk-27\bin\javac.exe" --release 27 --enable-preview --add-modules jdk.incubator.vector -sourcepath jdk27/src -d jdk27/out jdk27/src/*.java # 运行某示例 & "D:\Software\Java\jdk-27\bin\java.exe" --enable-preview --add-modules jdk.incubator.vector -cp jdk27/out JEP523G1Default ``` ## 几个实测结论(避坑) - **JEP 531 `@Lazy`**:本机构建未导出 `java.lang.annotation.Lazy`,文件中用工程内占位注解演示语法,真实懒加载语义用手写模拟体现。 - **JEP 533 Structured Concurrency**:JDK 27 第七次预览已将 `StructuredTaskScope` 重构为 interface,用 `StructuredTaskScope.open(Joiner)` 创建,旧的 `ShutdownOnFailure` / `throwIfFailed()` 已移除。`Joiner` 三者区别:`anySuccessfulOrThrow()`(取首成、返回单值)/ `allSuccessfulOrThrow()`(全成功、返回结果列表)/ `awaitAllSuccessfulOrThrow()`(全成功、不收集结果)。 - **JEP 537 Vector API**:对简单数组加减,显式 Vector API 跑不过 JIT 自动向量化的标量循环(实测加速比 < 1)。其真实优势在 autovectorizer 生成不了的场景(掩码 / 谓词 lane、非连续访问等)。 ## License [MIT License](LICENSE) — 详见 [LICENSE](LICENSE) 文件。