Cool! How far are you planning to take it? Interpreted mode only? Or do you plan on going the whole HotSpot nine yards with compiling bytecode down to native code?
We want to complete the interpreter and then decide what to do moving forward. The two principal options (and both might be followed) are 1) performance and 2) a separate UI that connects to Jacobin via Websocket or other protocol and enables display/observation of JVM instructions as they're being executed (and of course many of the other observable events).
The biggest hurdle we've faced is the vast number of native methods called by the HotSpot JVM, which need to be reproduced in go for a go-only JVM. I think we've spent as much time working on the native methods in the various libraries as we have on the JVM proper. By our analysis, the JVM calls a total of 1800 native methods. Many won't be needed by us b/c we use go's garbage collector and we don't implement the security manager (which Oracle is deprecating)--but that still leaves quite a few.
Website: https://jacobin.org
GitHub: https://github.com/platypusguy/jacobin