从“会用”到“懂运行”:补齐Java开发者最缺的底层认知
很多Java开发者卡在“能用Spring写业务,但优化时完全靠猜”的瓶颈。面试中被问JVM原理、线上出现OOM却无从下手,根源往往不是代码写得少,而是对虚拟机如何执行字节码缺乏直观理解。这门课不教语法,而是带你逆向拆解Java代码从文本到机器指令的全过程。它聚焦于JDK 24的最新特性,特别是Project Lilliput引入的虚拟线程同步机制、Class-File API对字节码的编程式编辑能力,以及模式匹配对性能的实际影响。这些内容在多数传统教材中是缺失的,却是当前高性能Java架构中最关键的盲区。
适合有基础但缺体系的学习者:建议先看这几块
本课程假设你已掌握Java基础语法和常用API,不需要你是JVM调优专家,但需要你愿意跳出业务代码看执行层。建议学习顺序如下:先通过开篇词建立学习动机,理解“为什么JVM值得深究”;然后进入模块一,重点攻克《Java代码是怎么运行的》《JVM是如何加载Java类的》《JVM是如何执行方法调用的》这三讲——这是理解后续所有高级话题的地基;接着学习异常处理与反射机制,明确JVM在这些动态特性中的角色;最后再切入JDK 24的新特性模块,如虚拟线程同步绑定问题的解决方案、Class-File API实践等。配套练习必须跟随每一讲的代码示例动手编写,尤其是字节码分析和反射应用场景,不能只看不练。资料包中提供的交互式实验环境可以帮助你实时观察类加载过程和方法调用栈的变化,这是理论无法替代的直观体验。
学完能独立做什么:能读懂JVM行为,而非背诵概念
完成课程后,你应该能够独立回答以下问题:Java源代码是如何被编译成字节码并逐步执行的?JVM在运行时如何决定方法的调用策略(静态分派 vs 动态分派)?面对大量并发场景,虚拟线程与普通线程在同步开销上有何本质差异?如何通过Class-File API在不重启应用的情况下动态修改字节码?模式匹配等新语法特性是否真的带来性能收益?这些能力直接对应着架构设计、性能调优、故障排查等高阶开发工作。课程的价值不在于让你成为JVM厂商,而是让你具备“看透Java程序运行本质”的自信,从而在复杂项目中做出更合理的架构决策。
课程目录
开篇词 (1讲)
- 开篇词 _ 为什么我们要学习Java虚拟机?
课程迭代 (5讲)
- JDK 24 如何解决虚拟线程的同步绑定难题?
- Project Lilliput 如何降低 JVM 内存开销?
- 使用Java的模式匹配会影响程序性能吗?
- 再次前行|聚焦JDK 24 新特性
- 如何使用Class-File API编辑Java字节码?
模块一:Java虚拟机基本原理 (12讲)
- 01 _ Java代码是怎么运行的?
- 02 _ Java的基本类型
- 03 _ Java虚拟机是如何加载Java类的_
- 04 _ JVM是如何执行方法调用的?(上)
- 05 _ JVM是如何执行方法调用的?(下)
- 06 _ JVM是如何处理异常的?
- 07 _ JVM是如何实现反射的?
- 08 _ JVM是怎么实现invokedynamic的?(上)
- 09 _ JVM是怎么实现invokedynamic的?(下)
- 10 _ Java对象的内存布局
- 11 _ 垃圾回收(上)
- 12 _ 垃圾回收(下)
模块二:高效编译 (12讲)
- 13 _ Java内存模型
- 14 _ Java虚拟机是怎么实现synchronized的?
- 15 _ Java语法糖与Java编译器
- 16 _ 即时编译(上)
- 17 _ 即时编译(下)
- 18 _ 即时编译器的中间表达形式
- 19 _ Java字节码(基础篇)
- 20 _ 方法内联(上)
- 21 _ 方法内联(下)
- 22 _ HotSpot虚拟机的intrinsic
- 23 _ 逃逸分析
- 【工具篇】 常用工具介绍
模块三:代码优化 (10讲)
- 24 _ 字段访问相关优化
- 25 _ 循环优化
- 26 _ 向量化
- 27 _ 注解处理器
- 28 _ 基准测试框架JMH(上)
- 29 _ 基准测试框架JMH(下)
- 30 _ Java虚拟机的监控及诊断工具(命令行篇)
- 31 _ Java虚拟机的监控及诊断工具(GUI篇)
- 32 _ JNI的运行机制
- 33 _ Java Agent与字节码注入
模块四:黑科技 (3讲)
- 34 _ Graal:用Java编译Java
- 35 _ Truffle:语言实现框架
- 36 _ SubstrateVM:AOT编译框架
尾声 (2讲)
- 尾声 _ 道阻且长,努力加餐
- 结课测试 _ 这些Java虚拟机的知识你都掌握了吗?





