El compilador Just-In-Time (JIT) es una parte esencial de JRE, es decir, Java Runtime Environment, que es responsable de la optimización del rendimiento de las aplicaciones basadas en Java en tiempo de ejecución. El compilador es uno de los aspectos clave a la hora de decidir el rendimiento de una aplicación para ambas partes, es decir, el usuario final y el desarrollador de la aplicación.
Compilador Java JIT: descripción general
Bytecode es una de las características más importantes de Java que ayuda en la ejecución multiplataforma. La forma de convertir bytecode a lenguaje de máquina nativo para su ejecución tiene un gran impacto en su velocidad. Estos Bytecode deben interpretarse o compilarse en las instrucciones de máquina adecuadas según la arquitectura del conjunto de instrucciones. Además, estos pueden ejecutarse directamente si la arquitectura de instrucciones está basada en código de bytes. Interpretar el bytecode afecta la velocidad de ejecución. Para mejorar el rendimiento, los compiladores JIT interactúan con la máquina virtual de Java (JVM) en tiempo de ejecución y compilan secuencias de código de bytes adecuadas en código de máquina nativo. Mientras usa un compilador JIT, el hardware puede ejecutar el código nativo, en comparación con hacer que la JVM interprete la misma secuencia de código de bytes repetidamente e incurra en una sobrecarga para el proceso de traducción. Esto conduce posteriormente a mejoras de rendimiento en la velocidad de ejecución, a menos que los métodos compilados se ejecuten con menos frecuencia. El compilador JIT puede realizar ciertas optimizaciones simples mientras compila una serie de código de bytes en lenguaje de máquina nativo. Algunas de estas optimizaciones realizadas por los compiladores JIT son análisis de datos, reducción de accesos a memoria por asignación de registros, traducción de operaciones de pila a operaciones de registro, eliminación de subexpresiones comunes, etc. Cuanto mayor es el grado de optimización realizado, más tiempo se El compilador JIT gasta en la etapa de ejecución. Por lo tanto, no puede darse el lujo de hacer todas las optimizaciones de las que es capaz un compilador estático,
Funcionamiento del compilador JIT
Java sigue un enfoque orientado a objetos, como resultado, consta de clases. Estos constituyen un código de bytes que es neutral para la plataforma y son ejecutados por la JVM en arquitecturas diversificadas.
- En tiempo de ejecución, la JVM carga los archivos de clase, se determina la semántica de cada uno y se realizan los cálculos apropiados. El uso adicional del procesador y la memoria durante la interpretación hace que una aplicación Java funcione lentamente en comparación con una aplicación nativa.
- El compilador JIT ayuda a mejorar el rendimiento de los programas Java al compilar bytecode en código de máquina nativo en tiempo de ejecución.
- El compilador JIT está habilitado en todo momento, mientras que se activa cuando se invoca un método. Para un método compilado, la JVM llama directamente al código compilado, en lugar de interpretarlo. En teoría, si la compilación no requiriera tiempo de procesador ni uso de memoria, la velocidad de un compilador nativo y la de un compilador de Java habrían sido las mismas.
- La compilación JIT requiere tiempo de procesador y uso de memoria. Cuando la máquina virtual Java se inicia por primera vez, se invocan miles de métodos. La compilación de todos estos métodos puede afectar significativamente el tiempo de inicio, incluso si el resultado final es una muy buena optimización del rendimiento.
Publicación traducida automáticamente
Artículo escrito por Shreyash Sharma 3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA