Skip to content

Motivation and Goals

Andrew Binstock edited this page Sep 23, 2024 · 3 revisions

Jacobin is a project to write a JVM in Go

The intent is to develop a JVM that is fairly capable: running classes and JARs correctly and quickly. It aims to support all the features of Java SE except for: the JIT, FFI (foreign function interface, which Oracles is rewriting entirely), and the security manager (which Oracle recently proposed to remove entirely from the JDK).

In its final form, Jacobin will have a UI component that will enable you to watch the bytecodes executing, along with the various variable, stacks, and other data structures updating with each instruction. We believe this UI will enable developers to watch exactly how their code is executed in real time. Because the principal motivation for this project is educational, the source code is heavily commented and should be useful to those interested in examining the mechanisms and operations of the JDK.

One question that might arise is: why use Go? In this blog post, I discuss my examination of suitable languages and why ultimately I chose Go. It also clarifies some of the rationale for the project.