Skip to content
main
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.

Go version Workflow Go_report_card GitHub

jacobin

A more-than-minimal JVM written in Go.

Status

Intended feature set:

  • Java 11 functionality, but...
  • No JNI (Oracle intends to replace it; see JEP 389)
  • No security manager (Oracle intends to remove it; see JEP 411)
  • No JIT
  • Somewhat less stringent bytecode verification

What we've done so far and what we need to do:

Command-line parsing

  • Gets options from the three environment variables. Details here
  • Parses the command line; identify JVM options and application options
  • Responds to most options listed in the java -help output

To do:

  • Handling JAR files
  • Handling @files (which contain command-line options)
  • Parsing the classpath

Class loading

  • Correctly reads and parses basic classes
  • Extracts bytecode and params needed for execution

To do:

  • Handle more-complex classes
  • Handle interfaces
  • Handle arrays
  • Handle inner classes
  • Automate loading of core Java classes (Object, etc.)

Verification, Linking, Preparation, Initialization

  • Performs integrity check bytecode is correct. ✏️ This is the focus of current coding work

To do:

  • Linking and verification
  • Preparation
  • Initialization

Execution

Not started yet

Garbage Collection

GC is handled by the golang runtime, which has its own GC

Thanks

The overview page carries a right-side panel that expresses our thanks to vendors and programmers who have made the Jacobin project possible. They are many and we are deeply grateful to them.

About

A more than minimal JVM written in Go and capable of running Java 11 bytecode.

Topics

Resources

License

Releases

No releases published

Packages

No packages published

Languages