DEEPDIVE · JDK 17
深钻模块:3 个硬核主题
不满足于会用,要能讲清「为什么这样设计、代价是什么、边界在哪里」。
四步结构每个主题都按「心智模型 → 机制拆解 → 落地实践 → 费曼自检」展开。你可以先跳到任意一步,但真正的掌握发生在最后一步。
01
record 与 sealed:用 Java 写代数数据类型
record 描述「数据是什么形状」,sealed 描述「可能是哪几种形状」,模式匹配负责按形状分支。三者组合后,Java 可以表达代数数据类型,并让编译器检查分支是否穷尽。
02
强封装:模块边界与反射
JDK 17 的 JEP 403 把「默认拒绝」变成「一律拒绝」:classpath 上的代码不能再靠 --illegal-access=permit 反射进 JDK 内部包。理解 exports 与 opens 的差别,才能把 --add-opens 用在最小范围。
03
JDK 17 的 GC:G1 默认,ZGC 与 Shenandoah 转正
JDK 17 默认 G1;ZGC 与 Shenandoah 都在 15 转正,17 可以直接用于生产。三者的差别不是「谁更新」,而是停顿目标、吞吐与内存占用之间的取舍。
为什么是这四步METHOD
- 心智模型:先建立一张能自洽的图。没有模型,细节只是碎片。
- 机制拆解:看 JDK 如何实现,理解设计取舍与代价。
- 落地实践:把机制落到代码、参数、排障步骤上。
- 费曼自检:用自己的话复述,暴露理解漏洞。回答不了就回到对应小节。