programacion - que es la maquina virtual de java
¿Cuál es el uso de JVM si JIT está realizando la conversión de bytecode a las instrucciones de la máquina? (4)
El JIT es solo parte de la JVM. Otras partes incluyen el intérprete de bytecode, la verificación de carga de clase y los mecanismos de enlace, y el soporte de código nativo para cosas como reflexión, I / O, etc.
En ese sentido, el JIT no hace que la JVM se ejecute más rápido. En su lugar, hace que el código Java se ejecute más rápido ... de lo que lo haría si la JVM lo interpretara.
En realidad, la JVM comienza interpretando los códigos de byte. Después de un período, la JVM luego utiliza su compilador JIT para compilar los métodos más utilizados para el código nativo, utilizando estadísticas que se recopilaron al interpretar para ajustar el código del problema en cuestión.
Por cierto, esta parte del texto que citó es torpe y técnicamente inexacta:
Un compilador Just-In-Time (JIT) es una característica del intérprete de tiempo de ejecución ... (contexto)
De hecho, el JIT no es una característica del intérprete. Más bien, el JIT es una funcionalidad de la JVM que funciona junto con el intérprete.
Estoy realmente luchando para entender lo siguiente
Anteriormente lo sé:
Cuando se compile un programa Java, se generará un archivo .class
. En ese código está en forma de bytes. Luego, la JVM
traducirá ese código de byte a un formato comprensible para la máquina.
Ahora veo en una de las preguntas en TAN
Un compilador Just-In-Time (JIT) es una característica del intérprete de tiempo de ejecución, que en lugar de interpretar el código de bytes cada vez que se invoca un método, compilará el código de bytes en las instrucciones de código de máquina de la máquina en ejecución
Así que aquí JIT está convirtiendo el bytecode a las instrucciones de la máquina. Entonces, ¿cuál es el uso de JVM. Podemos hacer esto con JIT. En mi conocimiento, JIT es solo para mejorar el rendimiento de JVM.
La máquina virtual de Java (JVM) proporciona todo el entorno para ejecutar un programa Java. Se integra con el sistema operativo, carga las clases y ejecuta programas. El compilador Just-In-Time (JIT) es solo una pequeña parte que se puede desactivar (-Xint) pero cuando está habilitado, proporciona una mejora útil en el rendimiento. Ha habido implementaciones de JVM que no incluían un JIT, e implementaciones que funcionaron compilando previamente Java para codificar a máquina de la misma manera que los lenguajes tradicionales, como C o C ++.
Lo compila justo a tiempo para la JVM con optimizaciones.
Para ser claro :
JVM realiza todo como:
Se mantiene en la parte superior del sistema operativo y proporciona una abstracción entre el programa java compilado y el sistema operativo. De esta manera, el programa compilado Java no tiene que preocuparse por qué plataforma tiene que funcionar. El programa Java compila código en códigos de bytes que JVM puede entender y ejecutar.
JIT
Cuando JVM compila el archivo de clase, no completa el archivo de clase completo; compila solo una parte de ella en base a necesidad. Esto evita el pesado análisis del código fuente completo. Este tipo de compilación se denomina JIT o compilación Just-In-Time. La JVM depende de la plataforma (OS). El JIT de generación está orientado a la plataforma, genera el código de byte nativo, por lo que es más rápido que JVM :)