Bytecode
Un código intermedio, entre el código fuente y el código máquina, que ejecuta una máquina virtual como la de Java.
En lugar de traducir el programa directamente al código máquina de un procesador concreto, algunos lenguajes lo compilan a bytecode, un formato pensado para una máquina virtual.
La máquina virtual (la JVM en Java y Kotlin, el entorno de .NET en C#) ejecuta ese bytecode en cualquier sistema donde esté instalada, y suele convertir las partes más usadas a código máquina para ir más rápido.
Un ejemplo
javac Main.java genera Main.class, que contiene bytecode; ese mismo archivo funciona en Windows, macOS o Linux con Java instalado.