速查模块:12 张 API 地图
语言与类型系统
JDK 21 的语言主线是「让数据形状与类型分支都变成一等公民」:record 定义数据,sealed 封闭类型集合,模式匹配负责安全解构,三者组合后可以写出接近代数数据类型的 Java。
集合与 SequencedCollection
JDK 21 给集合框架补上了迟到三十年的首尾抽象:SequencedCollection / SequencedSet / SequencedMap 统一了 getFirst、addLast、reversed 等操作,让 List、Deque、LinkedHashSet、SortedSet 第一次共享同一套顺序 API。
String 与文本处理
String 是不可变对象,所有「修改」都会产生新对象。JDK 15 的文本块、JDK 11 的 strip / repeat / lines、JDK 21 的 splitWithDelimiters 与带范围 indexOf,让多行文本和子串搜索少写很多样板代码。
JDK 21 新增 API
JDK 21 除了虚拟线程和模式匹配这两条主线,还补了一批小而实用的 API:Math.clamp、String 的区间 indexOf、splitWithDelimiters、StringBuilder.repeat、Character 的 emoji 判断、KEM 密钥封装,以及让 HttpClient 支持 try-with-resources。
Stream 与函数式处理
Stream 是「声明式流水线」:源 + 中间操作 + 终端操作。中间操作惰性执行,只有终端操作才会真正遍历。真正拉开水平差距的不是 map/filter,而是 Collectors 的组合与副作用边界。
java.time 日期与时间
java.time 用「机器时间 Instant + 人类时间 Local/Zoned + 时间量 Duration/Period」三组类型取代了 Date 与 Calendar。它不可变、线程安全,但 DST、格式化和时区转换仍然是最容易写错的地方。
并发基础与 CompletableFuture
JDK 21 的并发工具箱分成三层:线程与执行器负责「在哪跑」,同步原语负责「怎么安全共享」,CompletableFuture 负责「怎么组合异步结果」。虚拟线程改变了第一层的成本,但没有改变后两层的规则。
虚拟线程速查
虚拟线程把「线程」从操作系统资源变成 JVM 管理的轻量任务:阻塞时自动卸载,让一个请求一个线程的写法重新可行。它提升的是阻塞场景下的吞吐上限,不是单任务速度。
IO、NIO 与 HttpClient
日常 IO 的 90% 用 Files 就能完成:readString / writeString / newBufferedReader / lines / walk。需要高并发网络请求时用 HttpClient;只有大文件、零拷贝或内存映射才需要下沉到 Channel 与 ByteBuffer。
反射、注解与模块
反射让程序在运行时检查与调用类型,是框架的基石;代价是编译期安全、性能与模块封装。JDK 21 的反射要同时理解三件事:Class/Method API、MethodHandles 的低层访问、以及模块强封装对 setAccessible 的限制。
JVM、GC 与诊断工具
JDK 21 的运行时主线是「更低停顿 + 更强诊断」:G1 仍是默认 GC,分代 ZGC 转正;JFR 与 jcmd 覆盖了从 GC、线程到虚拟线程的主要排障路径。先学会拿数据,再谈调优。
从 8 / 11 / 17 迁移到 21
升级 JDK 21 的难点通常不在新语法,而在旧假设:被移除的 JVM 参数、Java EE 模块、强封装下的反射,以及预览特性对版本和启动参数的严格要求。先处理这些,再谈用虚拟线程。
怎么用速查HOWTO
- 先看目标问题:每页开头三个问题,决定你要不要读细节。
- 再扫 API 表:知道方法名、参数与返回值,比背实现重要。
- 最后看边界:同一 API 在哪些版本是预览、哪些版本不存在,写进记忆。
- 切换版本:用侧栏或顶栏的版本选择器,落到目标版本的速查模块,再对照同名主题。
- 标记掌握度:页底按钮会记录到本机浏览器,课程首页显示总进度。