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