¿Qué es la JVM? Explique la JVM. Architectura
⚡ Resumen inteligente
Java La máquina virtual (JVM) es el motor que proporciona un entorno de ejecución para impulsar Java código, que convierte el código de bytes independiente de la plataforma en lenguaje de máquina nativo. Forma parte del Java Entorno de ejecución y habilita JavaSu portabilidad permite escribir el código una vez y ejecutarlo en cualquier lugar.

¿Qué es JVM? Java?
Java Máquina virtual (JVM) es un motor que proporciona un entorno de ejecución para impulsar el Java código o aplicaciones. Convierte Java código de bytes al lenguaje de máquina. JVM es parte del Java Entorno de ejecución (JRE). En otros lenguajes de programación, el compilador produce código máquina para un sistema en particular. Sin embargo, el Java El compilador produce código para una máquina virtual conocida como Java Máquina virtual.
¿Cómo funciona la JVM?
en primer lugar, Java El código se compila en bytecode. Este bytecode se interpreta en diferentes máquinas. Entre el sistema anfitrión y el Java El código fuente, el bytecode es un lenguaje intermedio. JVM en Java es responsable de asignar espacio de memoria.
Trabajo de Java Máquina virtual (JVM)
Architectura de JVM (Java Máquina virtual)
Ahora, entendamos la arquitectura de la JVM. Arquitectura de la JVM en Java Contiene un cargador de clases, un área de memoria, un motor de ejecución y más.
Java Virtual Machine Architectura
1) Cargador de clases
El cargador de clases es un subsistema que se utiliza para cargar archivos de clase. Realiza tres funciones principales: carga, enlace e inicialización.
2) Área del método
El área de métodos de la JVM almacena estructuras de clase como metadatos, el grupo de constantes en tiempo de ejecución y el código de los métodos.
3) montón
Todos los Objetos, sus variables de instancia relacionadas y sus matrices se almacenan en el montón. Esta memoria es común y compartida entre varios subprocesos.
4) Pilas de lenguajes de la JVM
Java Las pilas de lenguaje almacenan variables locales y sus resultados parciales. Cada hilo tiene su propia pila de JVM, que se crea simultáneamente con el hilo. Se crea un nuevo marco cada vez que se invoca un método, y se elimina cuando finaliza el proceso de invocación del método.
5) Registros de PC
El registro de la PC almacena la dirección del Java instrucción de máquina virtual que se está ejecutando actualmente. JavaCada hilo tiene su propio registro PC independiente.
6) Pilas de métodos nativos
Las pilas de métodos nativos contienen las instrucciones del código nativo que dependen de la biblioteca nativa. Está escrito en otro lenguaje en lugar de Java.
7) Motor de ejecución
El motor de ejecución lee el código de bytes y lo ejecuta fragmento a fragmento. Utiliza un intérprete y un compilador Just-In-Time (JIT) para convertir el código de bytes en código máquina nativo y ejecutarlo.
8) Interfaz de método nativo
La interfaz del método nativo es un marco de programación. permite Java código que se ejecuta en una JVM para llamar a aplicaciones y bibliotecas nativas, y ser llamado por ellas.
9) Bibliotecas de métodos nativos
Native Libraries es una colección de las bibliotecas nativas (C, C++) que son necesarios para el motor de ejecución.
Software Code Proceso de compilación y ejecución
Para escribir y ejecutar un programa informático, necesitas lo siguiente:
- 1) redactor – Para escribir tu programa, puedes usar un bloc de notas.
- 2) Compilador – Para convertir su programa en lenguaje de alto nivel a código máquina nativo.
- 3) Enlazador – Para combinar las diferentes referencias a archivos de programa en su programa principal.
- 4) Cargador – Para cargar los archivos desde tu dispositivo de almacenamiento secundario, como un disco duro, una unidad flash o un CD, en la memoria RAM para su ejecución. La carga se realiza automáticamente al ejecutar el código.
- 5) Ejecución – La ejecución real del código, que es gestionada por su sistema operativo y procesador.
Con estos antecedentes, consulte el siguiente video y aprenda el funcionamiento interno y la arquitectura de la JVM (Java Máquina virtual).
Haga clic en aquí si el video no es accesible
Proceso de compilación y ejecución de código C.
Para entender el Java Para empezar, echemos un vistazo rápido al proceso de compilación y enlace en C.
Supongamos que en la función principal has llamado a dos funciones, f1 y f2. La función principal está almacenada en el archivo a1.c.
La función f1 está almacenada en un archivo a2.c.
La función f2 está almacenada en un archivo a3.c.
Todos estos archivos, es decir, a1.c, a2.c y a3.c, se envían al compilador, cuya salida son los archivos objeto correspondientes, que son el código máquina.
El siguiente paso consiste en integrar todos estos archivos objeto en un único archivo .exe con la ayuda de un enlazador. El enlazador agrupará todos estos archivos y generará el archivo .exe.
Durante la ejecución del programa, un programa de carga cargará un archivo a.exe en el RAM para su ejecución.
Java Compilación y ejecución de código en Java VM
Ahora, veamos el proceso para Java. En tu método principal, tienes dos métodos, f1 y f2.
- El método principal se encuentra en el archivo a1.java.
- f1 se almacena en un archivo como a2.java
- f2 se almacena en un archivo como a3.java
El compilador compilará los tres archivos y producirá tres archivos .class correspondientes, que consisten en código BYTE. A diferencia de C, no se realiza ningún enlace.
El Java VM, o Java La máquina virtual reside en la memoria RAM. Durante la ejecución, mediante el cargador de clases, los archivos de clase se cargan en la RAM. El código de bytes se verifica para detectar posibles fallos de seguridad.
A continuación, el motor de ejecución convertirá el código de bytes en código máquina nativo. Esto es compilación justo a tiempo. Es una de las principales razones por las que Java es comparativamente lento.
NOTA: JIT, o compilador Just-in-time, es parte del Java Máquina virtual de Java (JVM). Interpreta simultáneamente partes del código de bytes que tienen una funcionalidad similar.
¿Por qué es Java ¿Lenguaje interpretado y compilado?
Lenguajes de programación Se clasifican en:
- Lenguaje de nivel superior, por ejemplo, C++, Java
- Lenguajes de nivel intermedio, por ejemplo, C
- Lenguaje de bajo nivel, por ejemplo, Assembly
- Finalmente, el nivel más bajo como lenguaje de máquina.
A compilador es un programa que convierte un programa de un nivel de lenguaje a otro. Por ejemplo, la conversión de un C++ programar en código máquina. El Java El compilador convierte archivos de alto nivel. Java convertir el código en código de bytes (que también es un tipo de código máquina).
An Interprete es un programa que convierte un programa de un nivel a otro lenguaje de programación en el mismo nivel. Por ejemplo, la conversión de un Java programar en C++.
In Java, el generador de código Just-In-Time convierte el código de bytes en código máquina nativo, que se encuentran en los mismos niveles de programación. Por lo tanto, Java Es un lenguaje tanto compilado como interpretado.
¿Por qué es Java ¿lento?
Las dos razones principales detrás de la lentitud de Java son:
- Enlace dinámico: A diferencia de C, el enlace se realiza en tiempo de ejecución, cada vez que se ejecuta el programa. Java.
- Intérprete en tiempo de ejecución: La conversión de código de bytes en código de máquina nativo se realiza en tiempo de ejecución en Javalo que reduce aún más la velocidad.
Sin embargo, las versiones más recientes de Java Hemos abordado en gran medida estos cuellos de botella en el rendimiento.











