JVM executes versioned class files rather than Java source directly
A Java compiler emits bytecode into class files, and the virtual machine loads those files at runtime. Developers ship the compiled artifact, never the source text, to execution environments.
I treat the class file as the real delivery vehicle, with source language as authoring convenience. Any language that emits valid class files can ride the same runtime and tooling.
The virtual machine specification states the JVM knows only the class format, plus versioned major numbers.
When emitted code defines runtime behavior, class files form the shared runtime contract for JVM languages.
Target a class file version the runtime accepts, then verify behavior on that runtime.