Máquina virtual que ejecuta aplicaciones Java interpretando el bytecode generado.
Ofrece portabilidad y seguridad independiente del hardware. También ejecuta otros lenguajes como Kotlin y Scala.
// Flujo de ejecución en JVM // 1. Código fuente (.java) public class HolaMundo { public static void main(String[] args) { System.out.println("¡Hola Mundo!"); } } // 2. Compilar a bytecode // javac HolaMundo.java // Genera: HolaMundo.class (bytecode) // 3. JVM ejecuta el bytecode // java HolaMundo // Kotlin también compila a bytecode JVM fun main() { println("¡Hola desde Kotlin!") } // Beneficios de la JVM: // - "Write once, run anywhere" // - Garbage Collection automático // - JIT compilation para rendimiento // - Seguridad (sandbox) // - Gran ecosistema de librerías // Configurar memoria JVM // java -Xms512m -Xmx2g MiApp // -Xms: memoria inicial // -Xmx: memoria máxima