An open API service indexing awesome lists of open source software.

https://github.com/c-rainstorm/jvm

参照《自己动手写Java虚拟机》,一步一步构建小型JVM
https://github.com/c-rainstorm/jvm

build-your-own-x golang java jvm

Last synced: 6 months ago
JSON representation

参照《自己动手写Java虚拟机》,一步一步构建小型JVM

Awesome Lists containing this project

README

          

# 自己动手写 JVM

## 项目规范

1. 项目结构规范遵循 [golang-standards/project-layout](https://github.com/golang-standards/project-layout)
2. 日志输出统一使用 [logrus](https://github.com/sirupsen/logrus)

## 实现计划

- [x] 确定项目结构
- [x] 命令行参数解析
- [x] 实现类路径,获取指定类的 `class` 字节流
- [x] 实现 `class` 字节流的解析
- [x] 实现线程私有运行时数据区
- [x] 实现解释器及部分JVM指令
- [x] 实现类加载器、方法区、部分引用类类指令
- [x] 实现方法调用和返回指令
- [x] 实现数组相关指令和字符串池
- [x] 实现本地方法,如 `Objec.hashCode()`
- [x] 实现 `athrow` 指令进行异常处理
- [ ] ~~实现 `System.out.println()`,并成功输出 `Hello world!`~~

## 下载

```bash
go get github.com/c-rainstorm/jvm
```

## 协议声明

MIT

## 参考

- 《自己动手写Java虚拟机》
- 《深入理解Java虚拟机》
- [《OpenJDK - jdk8u/jdk8u》](https://github.com/unofficial-openjdk/openjdk/tree/jdk8u/jdk8u)