- 项目结构规范遵循 golang-standards/project-layout
- 日志输出统一使用 logrus
- 确定项目结构
- 命令行参数解析
- 实现类路径,获取指定类的
class
字节流 - 实现
class
字节流的解析 - 实现线程私有运行时数据区
- 实现解释器及部分JVM指令
- 实现类加载器、方法区、部分引用类类指令
- 实现方法调用和返回指令
- 实现数组相关指令和字符串池
- 实现本地方法,如
Objec.hashCode()
- 实现
athrow
指令进行异常处理 -
实现System.out.println()
,并成功输出Hello world!
go get github.com/c-rainstorm/jvm
MIT
- 《自己动手写Java虚拟机》
- 《深入理解Java虚拟机》
- 《OpenJDK - jdk8u/jdk8u》