"Write once, run anywhere" en Java es posible principalmente porque:
Opciones
- El código Java se traduce al código máquina de cada sistema operativo en cada edición
- El compilador genera bytecode y cada sistema operativo tiene una JVM que lo ejecuta (Opción correcta)
- Los programas Java solo funcionan en Windows, que oculta las diferencias
- Java no depende en absoluto del sistema operativo, así que no hace falta nada
Respuesta
El compilador produce bytecode, y cada sistema operativo tiene su propia JVM capaz de ejecutar ese mismo bytecode
Por qué
javac compila tu código a bytecode, un conjunto de instrucciones neutro. El mismo archivo .class o .jar se puede copiar a Windows, Linux o macOS.
Cada plataforma tiene su propia JVM, que traduce el bytecode a lo que esa computadora entiende.
Así que compilas una vez y la JVM se ocupa de las diferencias entre máquinas.
Recuerda
El bytecode es portable; la JVM es específica de cada plataforma.