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
- Host: GitHub
- URL: https://github.com/c-rainstorm/jvm
- Owner: c-rainstorm
- License: mit
- Created: 2019-11-02T11:54:22.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2019-12-28T12:12:26.000Z (about 6 years ago)
- Last Synced: 2025-04-07T08:38:02.630Z (9 months ago)
- Topics: build-your-own-x, golang, java, jvm
- Language: Go
- Size: 211 KB
- Stars: 9
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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)