Java Virtual Machine (JVM) se utiliza en el entorno de tiempo de ejecución de Java (JRE). La JVM original fue concebida como un intérprete de bytecode. Esto puede resultar un poco sorprendente debido a problemas de rendimiento. Muchos lenguajes modernos están destinados a ser compilados en un código ejecutable específico de la CPU. Sin embargo, el hecho de que la JVM ejecute un programa Java ayuda a abordar los principales problemas asociados con las aplicaciones basadas en web.
El hecho de que la JVM ejecute un programa Java también ayuda a que sea estable. Dado que la JVM está a cargo, la ejecución del programa está controlada por ella. Por lo tanto, es posible que la JVM construya un área de ejecución limitada llamada sandbox que contiene el software, evitando que el sistema obtenga acceso ilimitado. La protección también se ve mejorada por algunas limitaciones en el lenguaje Java que existe. La arquitectura JVM de Java incluye un cargador de clases, un motor de ejecución, un campo de memoria, etc.
Para comprender las diferencias, profundicemos en los componentes ilustrando el funcionamiento de JVM al lado.
- ClassLoader : El cargador de clases tiene el propósito de cargar archivos de clase. Ayuda a cumplir tres funciones principales: carga, inicialización y vinculación.
- Pilas de lenguaje JVM : la memoria Java almacena variables locales y resultados parciales de un cálculo. Cada subproceso tiene su propia pila de JVM, creada a medida que se crea el subproceso. Cuando se invoca el método, se crea un nuevo marco y luego se elimina.
- Área de métodos: el área de métodos de JVM se especializa en almacenar metadatos y archivos de código subyacente para aplicaciones Java.
- Registros de PC: la dirección de la instrucción de máquina virtual de Java que se está ejecutando actualmente se guarda en los registros de PC. Cada subproceso en Java tiene su propio registro de PC separado.
- Montón: en un montón se guardan todos los objetos, arrays y variables de instancia. Esta memoria se comparte entre varios hilos.
- Motor de ejecución: es una forma de software que se utiliza para probar software, hardware o sistemas completos. El motor de ejecución de pruebas nunca lleva ninguna información sobre el producto que se está probando.
- Las bibliotecas de métodos nativos, que son el motor de ejecución, necesitan bibliotecas nativas (C, C++) y la interfaz de métodos nativos, que es un marco para la programación, es la interfaz de métodos nativos. Esto permite que el código Java que se ejecuta en una JVM llame a bibliotecas y aplicaciones nativas. Además, las pilas de métodos nativos tienen un comando de código nativo que depende de la biblioteca nativa. Asigna almacenamiento a montones nativos o utiliza cualquier tipo de pila.
Si bien Java se desarrolló como un lenguaje interpretado, para mejorar el rendimiento, no hay nada en Java que impida el código de bytes.compilación en código nativo sobre la marcha. Por esa razón, no mucho después del lanzamiento inicial de Java, se lanzó HotSpot JVM. HotSpot incluye un compilador de código de bytes justo a tiempo (JIT). Un compilador Just In Time (JIT) es parte de la JVM y, pieza por pieza, las partes seleccionadas del código de bytes se compilan en código ejecutable en tiempo real. Es decir, como es necesario durante la ejecución, un compilador JIT compila código. Además, no se compilan todas las secuencias de código de bytes, solo aquellas que se beneficiarán de la compilación. Sin embargo, el método justo a tiempo todavía produce un gran impulso en la ineficiencia. La función de portabilidad y seguridad todavía existe aunque la compilación dinámica se aplica al código de bytes, ya que la JVM todavía tiene el control del entorno de ejecución.
Para comprender las diferencias, profundicemos en los componentes ilustrando el funcionamiento de JIT al lado.
Al interpretar el bytecode, la implementación estándar de la JVM ralentiza la ejecución de los programas. Los compiladores JIT interactúan con JVM en tiempo de ejecución para mejorar el rendimiento y compilar secuencias de código de bytes apropiadas en código de máquina nativo.
El hardware está interpretando el código en lugar de JVM (Java Virtual Machine). Esto puede conducir a mejoras de rendimiento en la velocidad de ejecución. Esto se puede hacer por archivo, por función o tal vez en cualquier fragmento de código arbitrario; el código a menudo se compila cuando está a punto de ejecutarse (de ahí el nombre «justo a tiempo»), y luego se almacena en caché y se reutiliza más tarde sin tener que volver a compilarlo. Realiza muchas optimizaciones: análisis de datos, traducción de operaciones de pila a operaciones de registro, reducción del acceso a la memoria por asignación de registros, eliminación de subexpresiones comunes.
Por lo tanto, a partir del conocimiento anterior, llegamos a las diferencias concluyentes entre ellos, como se menciona en la siguiente tabla:
JVM |
JAT |
---|---|
JVM significa Máquina Virtual de Java. | JIT significa compilación justo a tiempo. |
JVM se introdujo para administrar la memoria del sistema y proporcionar un entorno de ejecución transportable para aplicaciones basadas en Java. | JIT se inventó para mejorar el rendimiento de JVM después de muchos años de su lanzamiento inicial. |
JVM consta de muchos otros componentes como el área de pila, el área de montón, etc. | JIT es uno de los componentes de JVM. |
JVM compila el código de bytes completo en código de máquina. | JIT compila solo el código de bytes reutilizable en código de máquina. |
JVM proporciona independencia de plataforma. | JIT mejora el rendimiento de JVM. |
Publicación traducida automáticamente
Artículo escrito por priyavermaa1198 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA