A toy JVM written in Go
Switch branches/tags
Nothing to show
Clone or download
zxh0 Merge pull request #52 from avelino/LICENSE
fixed typo on LICESE file name
Latest commit 528a986 Apr 9, 2018



A JVM written in Go. jvm.go Logo


jvm.go is a toy JVM (which is far from complete) programmed in Go. The main purpose of this project is learning Go and the JVM. So the number one goal of the project is readability of code. The basic idea is to just implement the core JVM, and use rt.jar (from OpenJDK) as its class library. The garbage collector is implemented by directly using Go’s GC.

My dev environment

  • Mac OS X 10.10.2
  • Java 1.8.0_31
  • Go 1.4

Build jvm.go

go get github.com/zxh0/jvm.go/jvmgo

Run jvm.go using your Java installation

Ensure your Java version is 1.8.0_32 and JAVA_HOME env was set

jvmgo -XuseJavaHome -cp path/to/jars:path/to/classes HelloWorld

Run jvm.go using Zulu

Download zulu1.8.0_31- (Zulu is a certified build of OpenJDK that is fully compliant with the Java SE standard.) and unzip it to somewhere, Copy jvmgo from $GOPATH/bin/ into unzipped folder

cd path/to/zulu1.8.0_31-
jvmgo -cp path/to/jars:path/to/classes HelloWorld