# java21-journey **Repository Path**: j67mk2/java21-journey ## Basic Information - **Project Name**: java21-journey - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-28 - **Last Updated**: 2026-10-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java 21 实战精通营(java21-journey) > Java 21(LTS)新特性实战,10 课从"全景地图"走到"企业落地与面试冲刺"。**实战主线**:每课都是一个照做能跑出结果的任务,虚拟线程、Record、密封类、模式匹配 switch、顺序集合、字符串模板、结构化并发逐个真跑;**面试向**:每课预告面试题、§8 速记可直接背诵、附面试回答模板;**设计模式贯穿**:每课一个"设计模式视角"小框。 > 面向 Java 基础偏弱、求职向的读者(大专生之类):术语首现必解释 + 生活类比,主线只讲"照做能跑",深原理全部收进每课「📌 进阶深挖(选学)」。 > 注意:**L8 字符串模板、L9 结构化并发与作用域值是 JDK 21 预览特性**,编译运行需带 `--enable-preview`,且后续 JDK 版本可能有变化,详见对应课 README。 --- ## 一、课程表(新特性主线 + 设计模式映射) | 课 | 主题 | 新特性主线进展 | 设计模式视角 | 每课亮点 | |---|---|---|---|---| | L1 | Java 21 全景(LTS 演进) | 版本史 + 特性地图 + 环境搭建 | 无(宏观视角) | 一张特性地图看懂"该学什么" | | L2 | 虚拟线程入门 | 平台线程痛点 → 10 万并发对比 | 工厂模式 | 10 万任务真实跑起来,数字震撼 | | L3 | 虚拟线程实战 | 线程池改造、信号量限流、pinning 坑 | 适配器模式 | pinning 坑真实复现 + 解法 | | L4 | Record 与密封类 | record 数据类 + 密封类继承边界 | 模板方法模式 | 一屏代码讲透数据类与继承边界 | | L5 | 模式匹配 switch | 类型匹配 + 守卫子句 + 穷尽性 | 策略模式 | if-else 地狱 → 一行分派 | | L6 | 记录模式 | 嵌套解构,深层字段一行取出 | 组合模式 | 解构式匹配 | | L7 | 顺序集合 SequencedCollection | getFirst/getLast/reversed 统一接口 | 接口隔离 + 迭代器 | List/Deque/SortedSet 终于同接口 | | L8 | 字符串模板(预览) | STR 模板 + 自定义模板处理器 | 模板方法模式 | 告别"+"号和 StringBuilder | | L9 | 结构化并发 + 作用域值(预览) | StructuredTaskScope + ScopedValue | 组合模式 | 任务取消/失败传播更结构化 | | L10 | 企业落地——订单处理服务收官战 | 迁移路径 + 企业级小项目 + 面试话术 | 综合 | 企业级七要素全达标,面试拿得出手 | **新特性主线演进**(每课在前一课基础上加一块,10 课拼出完整认知): ``` L1 全景地图(LTS 节奏 + 特性清单) → L2 虚拟线程入门(10 万并发对比,工厂创建) → L3 虚拟线程实战(执行器改造 + pinning 坑) → L4 Record 与密封类(数据类 + 继承边界) → L5 模式匹配 switch(类型分派 + 守卫 + 穷尽性) → L6 记录模式(嵌套解构) → L7 顺序集合(统一正反序接口) → L8 字符串模板(预览:模板插值) → L9 结构化并发 + 作用域值(预览:任务树 + 上下文) → L10 企业落地(迁移路径 + 企业级小项目 + 面试话术) ``` --- ## 二、环境要求 - **JDK 21**(本系列硬性要求:虚拟线程、record、密封类、模式匹配等都需要 21;L8/L9 预览特性需 21 + `--enable-preview`)。 - **Maven 3.9+**。 - 命令以 Linux/macOS 的 **Bash** 为准;Windows 用户请用 WSL 或 Git Bash,命令照抄可跑。 - 本机演示环境:Temurin JDK 21.0.12.1 + Maven 3.9.16。如果你自己有 JDK,把命令里的 `JAVA_HOME` 路径换成你的即可。 ```bash export JAVA_HOME=<你的 JDK 21 路径> # 例:$HOME/tools/jdk-21.0.12.1+1 export PATH=$JAVA_HOME/bin:$PATH java -version # 确认 21 mvn -version # 确认 Maven 3.9+ ``` ## 三、每课运行命令 每课都是独立 Maven 工程(零第三方依赖,只靠 JDK 标准库),进入目录编译运行即可: ```bash cd java21-journey/lesson-01 mvn -q clean install -DskipTests java -cp target/classes com.java21.lesson01.Main ``` > 上面的路径是相对本系列根目录(<本系列根目录>)的写法;你把课程目录放到任何位置,先 cd 进对应 lesson 目录再执行这两条命令即可。 | 课 | 主类 | 运行备注 | |---|---|---| | L1 | com.java21.lesson01.Main | 特性小览(record + 文本块 + switch 模式匹配) | | L2 | com.java21.lesson02.Main | 10 万任务对比(平台线程池 vs 虚拟线程) | | L3 | com.java21.lesson03.Main | 执行器改造 + 信号量 + pinning 对比 | | L4 | com.java21.lesson04.Main | record 与密封类 | | L5 | com.java21.lesson05.Main | 模式匹配 switch | | L6 | com.java21.lesson06.Main | 记录模式嵌套解构 | | L7 | com.java21.lesson07.Main | 顺序集合 SequencedCollection | | L8 | com.java21.lesson08.Main | **预览:`java --enable-preview -cp target/classes com.java21.lesson08.Main`** | | L9 | com.java21.lesson09.Main | **预览:`java --enable-preview -cp target/classes com.java21.lesson09.Main`** | | L10 | com.java21.lesson10.Main | 企业级小项目(运行方式见该课 README §4) | ## 四、通用坑(每课 §7 也有) 1. **JDK 版本必须 21**:不 export `JAVA_HOME` 就编译,record/sealed/虚拟线程直接报语法错误或 `invalid source release: 21`;每轮新终端都要先 export。 2. **预览特性编译运行都要带 `--enable-preview`**:L8/L9 只加一边会报 class 版本错误或 "preview features are not enabled";预览特性在后续 JDK 版本可能有变化,以目标版本官方文档为准。 3. **record 访问字段用方法**:`o.item()` 不是 `o.item`;record 默认 final 不可变、不能继承。 4. **switch 模式匹配注意穷尽性**:sealed 类型要覆盖所有分支,漏分支编译报错(这是特性不是 bug)。 5. **虚拟线程 demo 别真去建 10 万平台线程**:对比实验平台侧用固定线程池模拟,虚拟线程侧再放开数量(本系列 L2 就是这么做的)。 6. **性能数字看相对关系**:计时输出随机器波动,看相对快慢。 7. **main 都能自然结束**:并发 demo 均用 CountDownLatch/join 收口,跑完自动退出。 ## 五、学习建议 - 顺序刷:L1 建立地图 → L2/L3 吃透虚拟线程(面试最高频)→ L4~L7 语法糖四连(record、switch、解构、顺序集合)→ L8/L9 预览特性尝鲜 → L10 收尾到迁移与面试。 - 每课主线"照抄能跑":先编译运行拿到 §6 的输出,再回头读 §5 逐行讲解,最后做 §9 作业。 - 面试冲刺:背 §8 速记 + 回答模板(虚拟线程 pinning、record、switch 模式匹配是高频考点);L10 有"面试怎么讲这个项目"的完整话术与迁移路径。 - 想深入:每课 §5 之后的「📌 进阶深挖(选学)」有源码级内容。 - 配套:Stream 流式处理见 stream-journey 系列;基础语法补强见《Java 语言核心实战》系列。