跳到正文

Java 学习路线 ​

本目录只做导航。每篇正文按「一句话 → 为什么需要 → 核心机制 → 最小上手 → 生产动作 → 边界 → 讲清楚」组织,版本以 JDK 17 / JDK 21 为主,旧版本差异在文中单独标注。

适用前提 ​

  • 能写 Java 基础语法,知道类、接口、异常和 Maven 的基本用法。
  • 本机装有 JDK 17 或 JDK 21,java -version 能正常输出。
  • 涉及 Native Image、Reactor、SSE 的篇目需要额外安装 GraalVM、引入 Maven 依赖或准备 Spring Boot 环境,篇内会给出命令。

阅读顺序 ​

阶段篇目读完能做什么前置
运行时01-JVM内存模型与GC看懂堆与元空间、G1/ZGC 的取舍,能读一段 GC 日志无
运行时02-类加载机制解释双亲委派,定位 ClassNotFoundException 与 NoClassDefFoundError01
运行时05-HashMap与ConcurrentHashMap解释树化条件、扩容迁移和 CHM 的并发写入路径01
并发03-并发编程-AQS与锁画出 AQS 的等待队列,正确使用 ReentrantLock 与条件队列02
并发04-线程池原理与调优推导 execute 的分支,给队列和拒绝策略定边界03
并发08-JMM内存模型用 happens-before 解释可见性,写对双重检查锁03
IO 与框架基础06-IO与NIO区分 BIO、NIO、多路复用和零拷贝的边界01
IO 与框架基础07-反射注解泛型与SPI用反射读注解、用 ServiceLoader 做服务发现02
IO 与框架基础10-Attach机制与运行时注入用 jcmd 和 Attach API 给运行中的 JVM 加载 agent02、07
IO 与框架基础11-动态代理与CGLIB判断 JDK 代理和 CGLIB 各自能代理什么07
现代 Java09-Java新特性8-21按版本判断哪些特性可以进生产03、04
现代 Java12-GraalVM原生编译构建 native image,处理反射与资源注册01、09
现代 Java13-Reactor响应式编程写最小 Flux/Mono 管道,解释背压和线程切换04、06
现代 Java14-Java流式输出与SSE用 SseEmitter / WebFlux 输出 token,处理断连和代理超时04、13
现代 Java15-SSE父子流与流编排合并多模型/多分片输出,处理子流失败、取消链和慢客户端14、13
运行时增强16-Java Agent与字节码增强用 premain/agentmain 挂载 agent,按方法注入探针02、07、10
运行时增强17-代码覆盖率采集原理解释探针怎么插、行/分支覆盖率怎么算、增量覆盖率怎么落地16

四条阅读路径 ​

  • 排障优先:01 → 04 → 05 → 03。先能看内存、线程池和锁,再补类加载与 IO。
  • 框架底层:02 → 07 → 11 → 10。沿「类怎么进来 → 怎么读元数据 → 怎么增强 → 怎么在运行时挂载」走。
  • 新项目选型:09 → 04 → 13 → 12。先确认语言版本,再决定线程模型和交付形态。
  • AI 流式输出:14 → 15 → 13 → 04。先看 HTTP 帧和断连,再看父子流编排,最后看背压和线程池隔离。

读法约定 ​

  • 每篇先读「一句话」和「边界」,判断是否与当前问题相关,再进核心机制。
  • 命令默认在 Linux/macOS 的 bash 下执行;Windows 路径和换行差异在篇内单独说明。
  • 示例默认 JDK 17 或 JDK 21,涉及旧版本时会标注 JDK 8 等前提。
  • 代码块只保留关键分支,能直接编译的会给出 javac / java 命令。
  • 版本、默认值以文中标注为准;没有把握的数字会写「以官方文档为准」。
  • 交叉链接只指向本目录或已存在的相邻专题,发现失效链接先修索引再改正文。

与其他目录的关系 ​

环境核对 ​

bash
java -version
javac -version
jcmd -l          # 能列出本机 Java 进程,后面的排障命令才有对象

适用 JDK 17 / JDK 21 | 初稿 2026-10

把一门技术讲透到既懂也会用