Tuesday, March 10, 2026

Jacobin JVM at the 4½ year mark

Jacobin just crossed over 5,000 commits! Woo, hoo!

We've done a lot of work in all that code. In the six months since our last update, we have:

  • Implemented threads using goroutines. main() now runs on its own thread and all the activities of the Jacobin JVM are now thread-aware. We have tested Jacobin with 64 simultaneously running threads. 
  • Made handling of JAR and zip files from the command line work identically to the OpenJDK HotSpot JVM.
  • Begun work on implementation of INVOKEDYNAMIC, which is the last bytecode instruction to be implemented. 

We have also greatly expanded our test coverage, which now totals more than 2,500 tests. Our goal is in the next six months to finally have an implementation of the JVM that interested users can alpha-test and let us know what issues they run into.

Jacobin by the Numbers

As of March 1, Jacobin consists of 69,991 lines of production code (includes code, comments, and blank lines).  

Separate from that, the test suites consist of 2,241 unit tests and 292 end-to-end tests. These comprise 68,210 lines for the unit tests and 44,378 lines in the Jacotest test suite. Putting it all together, testing code is 160.8% of the size of our production code. That ratio is down somewhat from earlier cycles and we'll look to boost it in this 6-month cycle (we'd say "sprint," but that's a long time to be sprinting!) 

Show your Support

If you'd like to show your support for Jacobin JVM, we'd love a  on GitHub. That helps keep our motivation high! 




 

No comments: