按两个方向组织。语言特性回答「这个 API 该怎么用、为什么这样设计」,运行时回答「线上出问题怎么定位」。每篇的结论都标了 JDK 版本与 JEP 编号,代码在 JDK 21.0.8 与 JDK 25 上编译运行过。

语言特性

文章 回答的问题
Java——Optional类的使用 Optional 怎么用,orElseorElseGet 的差别在哪
Java——Stream API 常见误用 12 类能静默出错的写法,以及 Collectors 的边界
Java——Stream Gatherers 自定义管道 内建五个 Gatherer 各自解决什么,自定义的惰性与短路怎么保证
Java——CompletableFuture 异步编程实战 thenApply / thenCompose / allOf 的语义边界与异常传播
Java——record、sealed 与模式匹配 三者怎么组合成代数数据类型,穷尽性检查怎么用
Java——模式匹配演进史:从 JEP 406 到 JEP 441 一个语法特性为什么改了五轮预览
Java——ScopedValue 替代 ThreadLocal 上下文传递为什么不该挂在池化线程上,绑定能被谁继承

运行时与版本

文章 回答的问题
Java——虚拟线程实战 什么时候有用、什么时候是负优化,pinning 在哪个版本变了
Java——虚拟线程迁移实测 同样一段服务换成虚拟线程,吞吐与延迟变了多少
Java——一次锁竞争的完整定位 接口变慢,怎么用线程 dump 与 JFR 定位到锁
Java——JVM 内存与 GC 定位实战 GC 日志、jcmd、堆 dump 三层证据怎么串起来
Java——JDK 21 到 25 迁移清单 从上一个 LTS 升上来会撞到什么,逐项带实测证据
Java——结构化并发实战(StructuredTaskScope) 一个请求并发调多个下游,怎么保证不泄漏、超时与取消怎么传
Java——容器里的 JVM:内存、CPU 与镜像 容器限额下 JVM 怎么读核数与内存,镜像怎么在体积和可运行性之间取舍
Java——并发工具选型:从线程池到结构化并发 该用线程池、虚拟线程还是结构化并发
Java——JFR 实战:录制、事件与开销实测 录制从哪发起、录完拿什么读、开销有多大

阅读建议

模式相关的二十六篇已归到 设计模式系列。想先动手的从「虚拟线程实战」开始,那篇给了判断标准;要排障的看「锁竞争」与「内存与 GC」两篇,它们共用同一套方法(先减少不确定性,再逐层取证)。升级 JDK 或把服务搬上容器之前,先读「JDK 21 到 25 迁移清单」与「容器里的 JVM」;并发改造则从「虚拟线程实战」顺着读到「结构化并发」和「ScopedValue」。