Java 知识图谱

一、一句话结论

把 Java 技术体系分成七层——语言核心、JVM、集合框架、并发编程、IO 与网络、生态框架、工程与工具——每层记住少数关键主题,排查与学习时先定层再下钻;JDK 版本格局以 8 / 11 / 17 / 21 / 25 五个 LTS 为锚点。

二、原理与来由(分层依据)

分层按「一段 Java 代码从写出来到跑起来、再到被工程化」的依赖链划分:语言核心是最小写代码单元 → 编译成字节码交给 JVM 执行 → 执行中用的数据结构是集合框架、调度靠并发机制、出入靠 IO 与网络 → 长期实践沉淀出生态框架 → 工程与工具贯穿始终。层的顺序即下钻的顺序:语言层的行为异常查语法与语义,性能异常查 JVM,数据结构异常查集合,时序异常查并发,交互异常查 IO/网络,架构异常查框架选型。

三、细节与用法

每层一张表:主题、一句话要点、检索关键词(供索引跳转,细分条目建立后在此登记)。

① 语言核心

主题 一句话要点 检索关键词
OOP 四大特性 封装、继承、多态、抽象;接口与抽象类的取舍是默认设计题 面向对象、接口、抽象类、多态
泛型 编译期类型检查,运行时类型擦除(List<Integer> 与 List<String> 的 Class 是同一个);通配符 ? extends / ? super 与 PECS 原则 泛型、类型擦除、通配符、PECS
反射与注解 运行期检视类与对象,是 Spring、MyBatis 等一切「魔法」的底层;注解本身只是标记,靠反射或 APT 生效 反射、注解、 Retention、动态代理
Lambda 与 Stream 行为参数化 + 声明式数据处理流水线;延迟执行、短路、并行流(并行流默认走 ForkJoinPool.commonPool) Lambda、函数式接口、Stream、Optional
异常体系 Throwable 分 Error / Exception,RuntimeException 以外都是受检异常;try-with-resources 自动关资源 异常、受检异常、try-with-resources
新语法演进 Records(不可变数据载体,16 正式)、Sealed 类(17 正式)、Switch 模式匹配与 Record Patterns(21 正式) Record、Sealed、模式匹配

② JVM

主题 一句话要点 检索关键词
运行时内存 线程私有:程序计数器、虚拟机栈、本地方法栈;线程共享:堆、方法区(JDK 8 起由元空间实现,替代永久代) JVM 内存、堆、栈、元空间
类加载 加载 → 验证 → 准备 → 解析 → 初始化;双亲委派可被打破(SPI、热部署都靠这一点) 类加载器、双亲委派、ClassLoader
垃圾回收 分代假说是多数收集器的地基;CMS 已在 14 移除,G1 是 9+ 默认,ZGC/Shenandoah 走低停顿路线(ZGC 23 起默认分代) GC、G1、ZGC、Shenandoah、Minor/Full GC
JIT 编译 解释执行 + 热点代码 JIT(C1/C2)混合模式;逃逸分析、栈上分配、锁消除都发生在 C2 JIT、热点探测、逃逸分析
诊断工具链 JDK 自带:jps / jstat / jmap / jstack / jcmd / JFR;第三方:Arthas(在线诊断)、MAT(堆转储分析) jstack、jmap、JFR、Arthas、OOM 排查

③ 集合框架

主题 一句话要点 检索关键词
接口层次 Collection(List / Set / Queue)与 Map 两棵树;选型先问「要不要有序、可重复、键值、并发」 List、Set、Map、Queue
ArrayList / LinkedList 前者随机访问 O(1) 尾插均摊 O(1)、扩容 1.5 倍;后者仅头尾操作占优,绝大多数场景选 ArrayList ArrayList、LinkedList、扩容
HashMap 原理 数组 + 链表 + 红黑树;链长 ≥ 8 且容量 ≥ 64 树化、树节点 ≤ 6 退化;扩容翻倍重哈希;容量恒为 2 的幂 HashMap、树化、哈希冲突、负载因子
ConcurrentHashMap 1.8 起 CAS + synchronized 锁单桶;size() 是估值不是精确值 ConcurrentHashMap、CAS
fail-fast / fail-safe 迭代中结构性改动抛 ConcurrentModificationException;CopyOnWriteArrayList 等并发容器是 fail-safe 的复制底牌 CME、迭代器、CopyOnWrite

④ 并发编程

主题 一句话要点 检索关键词
线程与线程池 ThreadPoolExecutor 七参数(核心数、最大数、存活、单位、队列、工厂、拒绝策略); Executors 的快捷工厂隐藏队列上限,生产慎用 线程池、ThreadPoolExecutor、拒绝策略
JMM 与 happens-before volatile 保证可见性与有序性、不保证原子性;happens-before 是判断可见性的唯一准绳 JMM、volatile、happens-before、指令重排
锁 synchronized(管程,锁升级:偏向 → 轻量 → 重量)与 Lock 系(基于 AQS:state + CLH 队列)两条路线 synchronized、锁升级、AQS、ReentrantLock
异步编排 CompletableFuture(8+)是异步流水线的主力;ForkJoinTask 是并行流与并发计算的地基 CompletableFuture、Future、ForkJoin
虚拟线程 JDK 21 正式:廉价海量线程,阻塞即让渡载体;与管程(synchronized)的 pin 问题在 24 的 JEP 491 解决 虚拟线程、Loom、结构化并发

⑤ IO 与网络

主题 一句话要点 检索关键词
BIO / NIO / AIO BIO 一连接一线程;NIO(Channel + Buffer + Selector)多路复用;AIO 事件回调,Linux 上实用性有限 BIO、NIO、Selector、多路复用
Netty 事件循环(EventLoopGroup)+ ChannelPipeline 责任链;零拷贝(FileRegion、CompositeByteBuf)是它的招牌 Netty、EventLoop、零拷贝、ByteBuf
网络编程 Socket / ServerSocket(BIO 教材)与 SocketChannel(NIO 实战);HttpClient(11 标准)替代老旧 HttpURLConnection Socket、HttpClient、TCP

⑥ 生态框架(后端主线)

主题 一句话要点 检索关键词
Spring IoC / AOP 控制反转管对象生命周期,动态代理织入横切逻辑;三件套排查入口:Bean 生命周期、循环依赖三级缓存、代理失效场景 Spring、IoC、AOP、循环依赖
Spring Boot 约定优于配置 + 自动装配(@EnableAutoConfiguration + spring.factories / AutoConfiguration.imports) Spring Boot、自动装配、Starter
事务 @Transactional 的传播行为与失效清单(自调用、非 public、异常类型不匹配)是高频坑位 事务、传播行为、失效
持久层 MyBatis(SQL 可控、动态 SQL)与 JPA(面向对象映射)两条路线;连接池 HikariCP 是 Boot 默认 MyBatis、JPA、HikariCP
微服务组件 注册发现、配置中心、网关、熔断限流(Sentinel / Resilience4j)、链路追踪;组件可换,模式不变 微服务、网关、熔断、链路追踪
消息队列 Kafka(日志型、高吞吐)与 RocketMQ(业务型、事务消息)为代表;选型看顺序、事务、堆积三个维度 Kafka、RocketMQ、消息队列

⑦ 工程与工具

主题 一句话要点 检索关键词
构建 Maven(约定式、XML)与 Gradle(脚本式、增量构建);依赖冲突的排查入口是依赖树 Maven、Gradle、依赖冲突
模块化 JPMS(9+,module-info.java);17 起强封装 JDK 内部 API,直接反射 sun.misc.* 会告警 / 失败 JPMS、模块化、强封装
测试 JUnit 5 + Mockito 是单测标配;性能结论用 JMH 出,不用裸 main 方法计时 JUnit、Mockito、JMH
日志 门面 SLF4J + 实现 Logback(Boot 默认);日志框架冲突的排查入口是桥接包冲突 SLF4J、Logback、日志冲突

JDK 版本演进速查(锚点:LTS)

版本 年份 定位 代表特性
8 2014 LTS Lambda、Stream、java.time、接口默认方法、元空间
11 2018 LTS var、HTTP Client 标准、单文件直接运行
17 2021 LTS Records 与 Sealed 正式、强封装内部 API、Switch 模式匹配预览
21 2023 LTS 虚拟线程正式、Switch 模式匹配与 Record Patterns 正式、分代 ZGC(预览)
25 2025 LTS 模块导入声明、紧凑源文件与实例 main(详见 JEP 索引;完整清单待核实)

8 → 11 → 17 → 21 → 25 每两个 LTS 间隔两年;非 LTS 版本只当新特性的预览窗口。

四、流程图(图谱一页图)

flowchart TD
    subgraph S1["① 语言核心"]
        A1["语法与 OOP"]
        A2["泛型 · 反射 · 注解"]
        A3["Lambda · Stream"]
        A4["异常体系"]
    end
    subgraph S2["② JVM"]
        B1["内存与 GC"]
        B2["类加载 · 字节码"]
        B3["JIT 优化"]
        B4["诊断工具链"]
    end
    subgraph S3["③ 集合框架"]
        C1["List / Set / Queue"]
        C2["Map 与 HashMap 原理"]
        C3["并发容器"]
    end
    subgraph S4["④ 并发编程"]
        D1["线程与线程池"]
        D2["JMM · volatile · 锁"]
        D3["异步编排"]
        D4["虚拟线程"]
    end
    subgraph S5["⑤ IO 与网络"]
        E1["BIO / NIO / AIO"]
        E2["Netty"]
    end
    subgraph S6["⑥ 生态框架"]
        F1["Spring 全家桶"]
        F2["持久层"]
        F3["微服务组件"]
        F4["消息队列"]
    end
    subgraph S7["⑦ 工程与工具"]
        G1["Maven / Gradle"]
        G2["测试 · 日志"]
    end
    S1 -->|"编译为字节码"| S2
    S2 ~~~ S3
    S3 ~~~ S4
    S4 ~~~ S5
    S5 ~~~ S6
    S6 ~~~ S7

层间竖排是阅读顺序(依赖关系见「二、原理与来由」),唯一实线箭头是源码到运行的编译关系;⑦ 层贯穿全程。

五、边界与关联

六、出处

来源 位置 核实日期
Oracle 官方文档(JDK API、Java 语言规范) docs.oracle.com 2026-10-08
OpenJDK JEP 索引(版本特性以 JEP 为准) openjdk.org/jeps/0 2026-10-08
个人实践(长期 Java 后端开发与排查经验) 各层一句话要点为经验浓缩 2026-10-08

七、存疑与待办