Saltar al contenido

¿Qué es la máquina virtual Java y su arquitectura?

¿Qué es JVM?

Máquina virtual Java (JVM) Es un motor que proporciona un entorno de ejecución para controlar el código o las aplicaciones Java. Convierte el código de bytes de Java a lenguaje de máquina. JVM es parte del Java Run Environment (JRE). En otros lenguajes de programación, el compilador produce código de máquina para un sistema en particular. Sin embargo, un compilador de Java produce código para una máquina virtual llamada Máquina virtual de Java.

Así es como funciona JVM

Primero, el código Java se ejecuta en bytecode. Este bytecode se interpreta en varias máquinas.

Entre el sistema host y la fuente Java, Bytecode es un lenguaje intermedio.

JVM en Java es responsable de asignar espacio de memoria.

Funcionamiento de la máquina virtual Java (JVM)

En este tutorial de JVM, aprenderá:

Arquitectura JVM

Ahora, en este tutorial de JVM, comprendamos la arquitectura de JVM. Java tiene un arquitecto JVM con cargador de clases, área de memoria, motor de ejecución, etc.

Arquitectura de la máquina virtual Java

1) cargador de clases

El cargador de clases es un subsistema que se utiliza para cargar archivos de clases. Realiza tres funciones principales a saber. Carga, vinculación y proyección.

2) Modo de campo

El área de modo de JVM almacena estructuras de clases como metadatos, el grupo de tiempo de ejecución actual y el código de los modos.

3) pila

Todas Objetos, sus variables relacionadas se almacenan, por ejemplo, y las matrices en el montón. Esta memoria es común y se comparte en numerosos subprocesos.

4) pilas de idiomas JVM

El lenguaje Java Stacks almacena variables locales y contiene resultados parciales. Cada subproceso tiene su propia pila de JVM, que se crea simultáneamente a medida que se crea el subproceso. Se crea un nuevo marco cada vez que se invoca un método y se elimina cuando se completa el proceso de invocación de métodos.

5) programas de PC

Un programa de computadora almacena la dirección del tutorial de la máquina virtual Java que se está ejecutando actualmente. En Java, cada hilo tiene su propio programa informático.

6) Pilas de métodos nativos

Pilas de código nativo La guía de código nativo depende de la biblioteca nativa. Está escrito en otro idioma en lugar de Java.

7) Motor de ejecución

Es un tipo de software que se utiliza para probar todo el hardware, software o sistemas. El motor de ejecución de pruebas nunca incluye información sobre el producto que se ha probado.

8) Interfaz de modo nativo

La interfaz de modo nativo es un marco de programación. Permite que las bibliotecas y aplicaciones nativas llamen al código Java que se ejecuta en JVM.

9) Bibliotecas de métodos nativos

Bibliotecas nativas es una colección de bibliotecas nativas (C, C ++) requeridas por el motor de ejecución.

Proceso de compilación y ejecución de código de software

Para escribir y ejecutar un programa de software, necesita lo siguiente

1) Editor – Para escribir su programa, se puede usar un cuaderno para este propósito

2) Compilador – Para convertir su programa de lenguaje avanzado a código de máquina nativo

3) Conector – Combine varios archivos de referencia de archivos juntos en su programa principal.

4) cargador – Para cargar los archivos desde su dispositivo de almacenamiento secundario como disco duro, unidad flash, CD en RAM para su ejecución. La carga se realiza automáticamente cuando ejecuta su código.

5) Ejecución – Ejecución real del código manejado por su sistema operativo y procesador.

Con estos antecedentes, mire el siguiente video y aprenda sobre el funcionamiento interno y la arquitectura de JVM JVM (Java Virtual Machine).

Hacer clic aquí si el video no es accesible

Proceso de compilación y ejecución de Code C

Comprender el proceso de compilación de Java en Java. Primero miramos el proceso de compilación y vinculación en C.

En su mayoría, tiene dos funciones llamadas f1 y f2. La función principal se almacena en el archivo a1.c.

La función f1 se almacena en el archivo a2.c

La función f2 se almacena en el archivo a3.c

Todos estos archivos, es decir, a1.c, a2.cy a3.c, se entregan al compilador. Quién genera los archivos objeto correspondientes que son el código de máquina.

El siguiente paso es integrar todos estos archivos de objeto en un archivo .exe con la ayuda del conector. El conector agrupará todos estos archivos y producirá el archivo .exe.

Durante la ejecución del programa, un programa de carga.exe se cargará en la RAM para su ejecución.

Compilación y ejecución de código Java en Java VM

Ahora, en este tutorial de JVM, echemos un vistazo al proceso para JAVA. Principalmente, tiene dos modos f1 y f2.

El compilador compilará los tres archivos y producirá 3 archivos .class correspondientes que consisten en código BYTE. A diferencia de C, no se realiza ninguna conexión.

La máquina virtual Java o la máquina virtual Java residen en la RAM. Durante la ejecución, utilizando el cargador de clases, los archivos de clase se denominan RAM. El código BYTE se verifica en busca de violaciones de seguridad.

A continuación, el motor de ejecución convertirá el Bytecode en código de máquina nativo. Esto es justo a tiempo para armarlo. Una de las principales razones por las que Java es relativamente lento.

NOTA: JIT o compilador Just-in-time de la parte Java Virtual Machine (JVM). Interpreta una parte del Código de Medidas que tiene una funcionalidad similar al mismo tiempo.

¿Por qué Java es un lenguaje interpretado y compilado?

Idiomas registrados clasificado como

  • Lenguaje de nivel superior Ej. C ++, Java
  • Idiomas intermedios Ej. C.
  • Ensamblaje de lenguaje de bajo nivel
  • finalmente el nivel más bajo como Lenguaje Máquina.

UNA. compilador Es un programa que cambia un programa de un nivel de idioma a otro. Convierta un ejemplo de un programa C ++ en código de máquina.

El compilador de Java convierte el código de Java de alto nivel en código de bytes (que también es un tipo de código de máquina).

Un Interprete Es un programa que convierte un programa en un nivel a otro lenguaje de programación en el mismo nivel. Ejemplo de conversión de programa Java a C ++

En Java, el generador de código Just In Time convierte el código de bytes en el código de máquina nativo que se encuentra en los mismos niveles de registro.

Por lo tanto, Java se compila además de un lenguaje de interpretación.

¿Por qué Java es lento?

Las dos razones principales de los retrasos de Java son

  1. Vinculación dinámica: A diferencia de C, se establece una conexión en tiempo de ejecución, cada vez que el programa se ejecuta en Java.
  2. Intérprete en tiempo de ejecución: El código de bytes se convierte en código de máquina nativo en tiempo de ejecución en Java, lo que ralentiza la velocidad

Sin embargo, la última versión de Java ha abordado significativamente los cuellos de botella de rendimiento.

Resumen: