Inicio › Tecnología › Compilación Just-in-time
Técnica de ejecución qué compila fragmentos de bytecode o código intermedio a código máquina nativo en el momento en qué el programa se está ejecutando, en lugar de compilarlo todo por adelantado o interpretarlo instrucción a instrucción cada vez. Los motores JIT identifican qué partes del código se ejecutan con más frecuencia, los llamados puntos calientes, y las compilan a código nativo optimizado sobre la marcha, combinando la portabilidad del bytecode con un rendimiento cercano al de un programa compilado de forma tradicional. Es el enfoque qué usan la máquina virtual de Java, los motores modernos de JavaScript de los navegadores y el runtime de .NET.
Es un truco qué usan algunos programas para ir más rápido: en lugar de traducir todo el código a lenguaje de la máquina antes de arrancar, van traduciendo solo las partes qué se usan mucho, justo cuando se están ejecutando, y las guardan ya optimizadas para las próximas veces.
Cuando abres una página web con JavaScript pesado, el motor del navegador empieza interpretando el código para arrancar rápido, pero si detecta qué una función se llama miles de veces en un bucle, la compila a código máquina optimizado sobre la marcha, lo qué explica por qué una página puede notarse algo lenta al cargar y luego ganar fluidez a medida qué el motor calienta las partes más usadas.
El código interpretado se traduce instrucción a instrucción cada vez qué se ejecuta, lo qué es más lento; el JIT convierte las partes más usadas en código máquina real una sola vez y reutiliza esa versión compilada, acercándose al rendimiento de un programa compilado por adelantado.
Porque al principio el motor está interpretando o compilando código sobre la marcha sin haber identificado aún qué partes conviene optimizar; ese periodo inicial se conoce coloquialmente como warm-up y va desapareciendo con el tiempo de ejecución.
No, son enfoques con ventajas distintas: la compilación ahead-of-time genera el ejecutable final antes de distribuirlo, con arranque más rápido, mientras qué el JIT puede optimizar según el comportamiento real observado durante la ejecución.