Categorygithub.com/yalue/bs_jvm
repositorypackage
0.0.0-20211221175346-4487aa3fe02b
Repository: https://github.com/yalue/bs_jvm.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# README

BS-JVM

About

The BS ("Blinding Speed") Java Virtual Machine is a work-in-progress JVM implementation in the Go programming language.

I'm just occasionally working on this for fun; don't expect anything big any time soon.

Usage

This still barely runs anything, due to some unimplemented instructions, little testing, and basically no standard library.

For the most part, nothing really "works" yet, but it is capable of running a simple test. To use the JVM:

# First, build the JVM executable
cd jvm/
go build .
cd ../class_file/test_data

# These two commands should produce identical output.
../../jvm/jvm RandomDotsSimple.class
java RandomDotsSimple

(The extremely basic RandomDotsSimple test doesn't rely on any standard library functionality apart from System.out.print(char). See the source code in the same directory.)

There is also a basic disassembler:

cd disassemble/
go build .

# This path can be replaced with a path to any valid class file.
./disassemble -filename ../class_file/test_data/RandomDotsSimple.class

At the moment, the JVM doesn't try to load classes outside of whichever standard classes are built in; trying to disassemble or run files depending on separate class files will encounter errors.