It’s not that the “bytecode” is different.
Bruno Santos

If the binary was not compatible it couldn’t be executed by the JVM. Groovy, Scala, you name it, all generate fully compatible JVM bytecode.

Either a language runs on top of the Java virtual machine or it does not. There is no inbetween.

Or are you referring to additional code being generated by a language, in order to support a certain language feature? That would be still fully compatible JVM bytecode.