javajvm icon indicating copy to clipboard operation
javajvm copied to clipboard

A toy JVM written in Java

Java JVM

Build Status

使用Java 8来实现一个纯解释执行的Java虚拟机。

代码偏向于可读性,忽略性能。

项目的目的在于更加深入的学习和理解Java虚拟机。

怎么跑起来?

hello, world

release中下载最新的版本的压缩包,解压后,你会看到2个文件

  • HelloWorld.java:未编译的Java代码,里面的内容即将运行在实现的JVM上
  • javajvm-xxx.jar:JVM的实现,本质上是一个jar包,里面放着编译好的Java代码。

xxx代表版本号,不要在Shell中真的输入xxx,请将javajvm-xxx.jar自行换成对应的文件。

javajvm-xxx.jar所在的目录下,命令行中执行

java -jar javajvm-xxx.jar

运行上面的命令后,你会看到一些提示信息。

现在,将HelloWorld.java编译成HelloWorld.class,然后用JVM运行。

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

自己动手写Java虚拟机