你将学到的
  • 构建解释器核心
  • ClassFile 解析
  • 运行时数据、Frame、MetaSpace 与 Heap
  • 实现基本指令集
  • 类初始化与静态字段的存取
  • 继承,多态与接口默认方法
  • 异常处理和反射机制
  • 扩展解释器核心
  • 类加载器
  • 解释器与运行时集成
  • 静态方法调用与本地方法调用
  • 实例,实例化与实例字段的存取
  • 数组,字符串与命令行参数
  • 虚拟机的初始化与 System.out

本课程的目标是以 Java 代码实战的方式从零编写 Java 虚拟机,从 while 循环开始,构建基本的解释器,逐步的添加虚拟机功能,运行愈加复杂的 Java 代码,通过这种循序渐进的实践方式,将深刻的领悟到 Java 虚拟机的工作原理。

在课程的内容组织上,并非代码的逐步堆砌,不但讲述了怎么实现,同样讲述了作者的实现思路,通过观察了什么结果,推理了什么结论,基于结论如何实现的全过程。

在编写代码的过程中,力求代码简洁,可读,可测,最终实现的代码大约 6000 多行,模块划分清晰,除了 JDK 没有其他依赖,对于想了解 Java 虚拟机的基本原理的同学是个不错的入门项目。

课程学习结束后,应该能很好的回答下面的一些问题。

  • Class 文件的组成结构,Java 的单继承在 Class 文件结构里是如何体现的。
  • 反射机制是如何实现的,通过类名创建类的实例在虚拟机里是如何操作的。
  • 反编译的字节码指令在虚拟机里是如何实现的,ldc 与 ldc_w 有何区别。
  • 如何区分特性是语法糖还是虚拟机的实现,如何识别 try-with-resources, foreach 循环等语法糖。
  • 方法调用的实现,静态方法调用,私有方法调用,接口方法调用,重载方法调用在实现上的异同点。
  • 栈帧的操作数栈和本地变量表是什么,指令又是如何操作栈帧的数据的。

课程篇幅有限,内容足够了解虚拟机的基本原理,但实验成果仍有进化空间,比如下方的一些特性。

  • 函数式编程的支持,lambda 表达式,invokedynamic 指令的实现。
  • 多线程的支持。
  • 垃圾回收,在虚拟机规范里并没有写一定要实现垃圾回收,但主流的商业虚拟机都实现了。
  • 用户自定义类加载器。
  • 更完善的反射支持。
  • 元循环,用实现的虚拟机运行实现的虚拟机。

若有课程上的疑问,可通过 build-jvm-from-scratch 开源项目联系作者。

适用人群

  • 对 Java 虚拟机原理和实现感兴趣的开发者。
  • 对解释器原理和实现感兴趣的开发者。
  • 想找中小型项目练手的 Java 初学者或初中级开发者。
  • 想阅读 Java 虚拟机规范但觉得内容枯燥的开发者。

先学课程

课程信息

  • 学习周期:课程有效期 2 个月,2 个月后无法进行在线实验,但可查看文档内容。高级会员有效期内可一直学习,到期后课程失效,且无法查看文档。部分云主机实验环境因成本较高,存在开启次数限制。关于课程退款等相关注意事项说明,请阅读 用户付费协议
  • 版权说明:课程内容为蓝桥云课原创或蓝桥云课在原作者授权下制作。未经书面同意,擅自爬取、转载和再分发课程内容,均将受到严肃追责。
  • 企业团报:企业购买,请点击 企业用户咨询
课程教师

guxingke 资深工程师 某创业公司 共发布过 1 门课程

我是 guxingke,vim 党,命令行中毒患者。从事 Java 开发多年,现在深耕后台开发,在一家创业公司做后台支撑。

查看老师的所有课程 >
会员
开通会员,即刻开始学习