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