La máquina virtual Java o JVM se puede visualizar como una máquina virtual que reside en la computadora que proporciona un entorno para que se ejecute el código. Java Runtime Environment o JRE es una implementación de JVM. Para ejecutar el código, se utiliza un motor de ejecución. En este artículo, comprendamos el motor de ejecución y los diferentes componentes que contiene.
El motor de ejecución es el componente central de la máquina virtual Java (JVM). Se comunica con varias áreas de memoria de la JVM. Cada subproceso de una aplicación en ejecución es una instancia distinta del motor de ejecución de la máquina virtual. El motor de ejecución ejecuta el código de bytes que se asigna a las áreas de datos de tiempo de ejecución en JVM a través del cargador de clases. Los archivos de clase Java son ejecutados por el motor de ejecución.
Execution Engine contiene tres componentes principales para ejecutar clases Java. Están:
- Intérprete: lee el código de bytes e interpreta (convierte) en el código de máquina (código nativo) y los ejecuta de manera secuencial. Este componente ejecuta la aplicación desde la línea de comandos al aceptar un argumento de nombre de archivo. El problema con el intérprete es que interpreta cada vez, incluso el mismo método varias veces, lo que reduce el rendimiento del sistema. Para superar este problema, se introduce JIT Compilers en la versión 1.1.
- Compilador JIT : el compilador JIT compensa la desventaja del intérprete de ejecución lenta y mejora el rendimiento.
- 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. Teóricamente hablando, si la compilación no requiriera tiempo de procesador o 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.
Profiler: esta es una herramienta que forma parte de JIT Compiler y es responsable de monitorear las construcciones y operaciones de bytecode de Java a nivel de JVM.
- Garbage Collector : Este es un programa en java que administra la memoria automáticamente. Es un subproceso daemon que siempre se ejecuta en segundo plano. Básicamente, esto libera la memoria del montón al destruir métodos inalcanzables.
Interfaz nativa de Java (JNI): JNI actúa como un puente (mediador) entre las llamadas al método de Java y las bibliotecas nativas correspondientes. Eso es:
Publicación traducida automáticamente
Artículo escrito por gauravmoney26 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA