There is limitation of go routines that is worth mentioning. Because of go’s layer of the multiplexing; these routines cannot be assigned priority. The impact is that Go doesn’t work for hard real time systems.
While Java isn’t ideal for hard real time operations, the language makes it possible and there also chips like ARM supporting JVM on-chip.
yes there are projects like GoBot; but I believe the authors of these have re-developed the cross compiler and its not supported by core Go team yet.
Also, I second that the JVMs use of Green Threads is deprecated so that’s not accurate.
For those who are reading this to do performance comparisons; don’t just judge performance from a concurrency perspective or mechanical sympathy; but various other aspects in enterprise computing and stateless architectures across distributed systems that Java is still considered more mature than Go.