¿Qué es un compilador JIT? Deffinición | Programación

Un compilador JIT traduce un programa o partes de un programa al inicio o en tiempo de ejecución según sea necesario. El programa se compila justo a tiempo en lenguaje de máquina. El programa en sí está en un idioma que no es el lenguaje de la máquina.

La abreviatura JIT significa «Just in Time». Se trata de la traducción de un programa al lenguaje de máquina requerido. El factor decisivo es que el programa a traducir está en un idioma extranjero que no corresponde al del sistema ejecutor. Por tanto, existe la necesidad de traducir o compilar el programa.

El programa suele estar en un lenguaje de programación superior, por ejemplo, Java, C / C ++ o HTML. También puede suceder que un programa en un idioma intermedio (IL) tenga que ser traducido. Es tarea del compilador JIT realizar esta traducción. El compilador puede compilar el programa completo al principio o programar partes en tiempo de ejecución según sea necesario.

Compilación JIT para ejecutar programas: uso y proceso

La compilación JIT es una técnica utilizada por varios intérpretes y entornos de ejecución. Se utiliza para ejecutar programas que no están escritos en lenguaje máquina. Un ejemplo de estos entornos de ejecución es la máquina virtual Java (JVM).

Los compiladores JIT difieren de los compiladores que convierten el código fuente completo en programas ejecutables en una sola pasada. El compilador JIT no funciona de una vez, sino de acuerdo con su nombre justo a tiempo, es decir, según sea necesario. En la práctica, solo está activo en el proceso de ejecución del programa.

JIT como combinación de dos enfoques para la traducción de código automático

La compilación JIT puede entenderse como una combinación de dos enfoques tradicionales más antiguos para la traducción de código. Estos son los

  • AOT (compilación anticipada) y la
  • interpretación

Por tanto, el compilador JIT también combina las respectivas ventajas y debilidades de estos enfoques. La compilación JIT combina el ritmo del código compilado con una mayor flexibilidad de interpretación. Esto está asociado con un esfuerzo de compilación adicional. La compilación JIT puede entenderse como una variante de la compilación dinámica. El enfoque permite varias optimizaciones adaptativas. Esto incluye la recopilación dinámica.

Cómo funciona la compilación JIT

Cómo funciona la compilación JIT
Cómo funciona la compilación JIT

El compilador JIT traduce el código existente en lo que se conoce como código de máquina nativo. Este es un código que el procesador utilizado puede procesar de inmediato. La especialidad de la compilación JIT es que el compilador solo se activa durante el tiempo de ejecución. Entonces la compilación no se realiza de antemano.

Después de la compilación, se ejecuta el código de la máquina, que ahora puede ser procesado por el procesador. Este enfoque tiene ventajas de rendimiento sobre la compilación convencional. Los bloques de código completos se procesan durante la compilación. Esto también representa una ventaja de velocidad en comparación con el procesamiento línea por línea habitual.

Los compiladores JIT especialmente desarrollados son capaces de generar código más rápidamente, especialmente para lenguajes dinámicos. La compilación JIT también tiene la ventaja de que solo se compila una pequeña parte antes de que se inicie el programa. Esto reduce el problema de retrasos en el inicio del programa.

Además, existe una ventaja en la conservación de los recursos del sistema. Ciertas partes del programa que no se ejecutan tampoco se compilan. Con la compilación JIT, una vez que las partes del programa están completamente compiladas, todavía se guardan en una caché de software. Esto tiene la ventaja de que no es necesario volver a compilar las partes del programa para cada ejecución adicional.

Áreas de aplicación del compilador JIT

Los compiladores JIT se pueden usar con una variedad de programas, pero especialmente para capacidades dinámicas. Esto incluye expresiones regulares. Por ejemplo, un editor de texto puede compilar expresiones regulares que están disponibles para el código de máquina durante el tiempo de ejecución. De esta forma es posible una comparación más rápida. No es posible que esto suceda con anticipación, porque la muestra debe proporcionarse en tiempo de ejecución.

Muchos tiempos de ejecución modernos utilizan la compilación JIT como base cuando se trata de ejecutar su código a alta velocidad. Esto incluye la mayoría de las implementaciones de Java, junto con el marco NET de Microsoft.

Se pueden encontrar más ejemplos de compiladores JIT actuales en muchos navegadores web para sistemas operativos de escritorio. Aquí se utiliza un compilador JIT para acelerar la ejecución de JavaScript. Como parte de la máquina virtual, el compilador JIT complementa al intérprete (como Java Virtual Machine (JVM) para Java o CLR para .NET).

Del mismo modo, muchas bibliotecas que funcionan con expresiones regulares ofrecen compilación JIT. En estos casos, la compilación se realiza en código de bytes o en código de máquina. La compilación JIT también se utiliza en varios emuladores, por ejemplo, para transferir o traducir el código de máquina de una arquitectura de CPU a otra.

Los compiladores JIT también se utilizan después de que ya se haya realizado una compilación AOT en bytecode (el código de la VM o máquina virtual). La compilación del código de bytes es seguida por una compilación JIT posterior en código de máquina. Esta compilación dinámica evita que el código de bytes tenga que ser interpretado laboriosamente primero. El rendimiento en tiempo de ejecución mejora en comparación directa con la interpretación habitual.

Deja un comentario