https://github.com/anilople/javajvm
A toy JVM written in Java
https://github.com/anilople/javajvm
java java-jvm jvm
Last synced: 26 days ago
JSON representation
A toy JVM written in Java
- Host: GitHub
- URL: https://github.com/anilople/javajvm
- Owner: Anilople
- License: mit
- Created: 2019-10-28T11:20:16.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-12-05T22:22:53.000Z (about 2 years ago)
- Last Synced: 2025-10-08T23:52:48.301Z (4 months ago)
- Topics: java, java-jvm, jvm
- Language: Java
- Homepage:
- Size: 562 KB
- Stars: 40
- Watchers: 1
- Forks: 8
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Java JVM
[](https://travis-ci.com/Anilople/javajvm)
使用`Java 8`来实现一个纯解释执行的Java虚拟机。
代码偏向于可读性,忽略性能。
项目的目的在于更加深入的学习和理解Java虚拟机。
# 怎么跑起来?
## hello, world
从[release](https://github.com/Anilople/javajvm/releases)中下载最新的版本的压缩包,解压后,你会看到2个文件
* `HelloWorld.java`:未编译的Java代码,里面的内容即将运行在实现的JVM上
* `javajvm-xxx.jar`:JVM的实现,本质上是一个jar包,里面放着编译好的Java代码。
`xxx`代表版本号,不要在Shell中真的输入`xxx`,请将`javajvm-xxx.jar`自行换成对应的文件。
在`javajvm-xxx.jar`所在的目录下,命令行中执行
```shell
java -jar javajvm-xxx.jar
```
运行上面的命令后,你会看到一些提示信息。
现在,将`HelloWorld.java`编译成`HelloWorld.class`,然后用JVM运行。
```shell
javac HelloWorld.java # 编译,会生成文件 HelloWorld.java
java -jar javajvm-xxx.jar HelloWorld # 运行刚刚编译出来的文件
```
## 如何用这个`JVM`跑自己的代码?
修改上述中的文件`HelloWorld.java`,加入自己写的代码,再重复一次上述的流程即可。
# 这个JVM是如何实现的?
文档地址 https://anilople.github.io/javajvm/
# 我的开发环境
Windows 10 1903
IntelliJ IDEA
Apache Maven 3.6.1
java version "1.8.0_231"
# 引用
[java specification](https://docs.oracle.com/javase/specs/)
[自己动手写Java虚拟机](https://book.douban.com/subject/26802084/)