go-jdk icon indicating copy to clipboard operation
go-jdk copied to clipboard

Run JVM-based code in Go efficiently

go-jdk

Logo

go-jdk is OpenJDK-like implementation written in Go with a goal to deliver a great embeddable JVM for Go applications without CGo.

Key features:

  • JVM bytecode converted to register-based form
  • Loaded code is JIT-compiled right away, no run-time tracing involved
  • Efficient Go->JVM calls
  • Efficient JVM->Go calls
  • native Java methods can be written in Go

Note: this project is in its early state.

# Run Java class method (main or any other static method):
go-jdk run -class Foo.class -method helloWorld

# Disassemble Java class file with go-jdk:
go-jdk javap Foo.class

# Print IR representation instead of JVM bytecode:
go-jdk javap -format=ir Foo.class

# Print Java class dependencies:
go-jdk jdeps Foo.class