¿Qué es JVM? Java Virtual Machine Architectura
¿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. Se convierte Java código de bytes al lenguaje de máquina. JVM es parte de Java Entorno de ejecución (JRE). En otros lenguajes de programación, el compilador produce código de máquina para un sistema en particular. Sin embargo, 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 código de bytes. Este código de bytes se interpreta en diferentes máquinas. Entre el sistema host y Java Fuente, Bytecode es un lenguaje intermediario. JVM en Java es responsable de asignar espacio de memoria.

En este tutorial de JVM, aprenderá:
Architectura de JVM (Java Máquina virtual)
Ahora, en este tutorial de JVM, comprendamos el ArchiArquitectura de JVM. Arquitectura de JVM en Java Contiene cargador de clases, área de memoria, motor de ejecución, etc.
1) Cargador de clases
El cargador de clases es un subsistema que se utiliza para cargar archivos de clases. Realiza tres funciones principales: carga, vinculación e inicialización.
2) Área del método
El área de métodos JVM almacena estructuras de clases como metadatos, el grupo de tiempo de ejecución constante 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 lenguaje JVM
Java Las pilas de lenguaje almacenan variables locales y sus resultados parciales. Cada subproceso tiene su propia pila 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 del método.
5) Registros de PC
El registro del PC almacena la dirección del Java instrucción de la máquina virtual que se está ejecutando actualmente. En Java, cada hilo tiene su registro de PC independiente.
6) Pilas de métodos nativos
Las pilas de métodos nativos contienen instrucciones de código nativo que dependen 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 hardware, software o sistemas completos. El motor de ejecución de pruebas nunca contiene información sobre el producto probado.
8) Interfaz del 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 mediante bibliotecas y aplicaciones nativas.
9) Bibliotecas de métodos nativos
Bibliotecas Nativas es una colección de Bibliotecas Nativas (C, C++) que son necesarios para 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) redactor – Para escribir su programa, se puede usar un bloc de notas para esto
2) Compilador – Para convertir su programa de alto lenguaje en código de máquina nativo
3) Enlazador – Para combinar diferentes archivos de programa de referencia en su programa principal.
4) Cargador – Para cargar los archivos desde su dispositivo de almacenamiento secundario como disco duro, unidad flash o CD en la 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, consulte el siguiente video y aprenda el funcionamiento interno y la arquitectura de JVM (Java Máquina virtual).
Haga clic aquí si el video no es accesible
Proceso de compilación y ejecución de código C.
Para entender el Java proceso de compilación en JavaPrimero echemos un vistazo rápido al proceso de compilación y vinculación 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 se almacena en un archivo a2.c
La función f2 se almacena 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 de objeto correspondientes, que son el código de máquina.
El siguiente paso es integrar todos estos archivos objeto en un único archivo .exe con la ayuda del vinculador. El vinculador agrupará todos estos archivos y producirá el archivo .exe.
Durante la ejecución del programa, un programa de carga cargará un.exe en el RAM para la ejecución.
Java Compilación y ejecución de código en Java VM
Ahora, en este tutorial de JVM, veamos el proceso de JAVA. En tu main, tienes dos métodos f1 y f2.
- El método principal se almacena 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á 3 archivos .class correspondientes que consisten en código BYTE. A diferencia de C, no se realiza ningún enlace..
La Java máquina virtual o Java La máquina virtual reside en la RAM. Durante la ejecución, mediante el cargador de clases, los archivos de clase se trasladan a la RAM. El código BYTE se verifica para detectar posibles infracciones de seguridad.
A continuación, el motor de ejecución convertirá el código de bytes en código de máquina nativo. Esta es la compilación en tiempo real. Es una de las principales razones por las que Java es comparativamente lento.
NOTA: JIT o Compilador justo a tiempo es la parte del Java Máquina Virtual (JVM). Interpreta parte del Byte Code que tiene una funcionalidad similar al mismo tiempo.
¿Por qué es Java ¿Lenguaje interpretado y compilado?
Lenguajes de programación se clasifican como
- Idioma de nivel superior Ej. C++, Java
- Idiomas de nivel medio Ej. C
- Lenguaje de bajo nivel Ex 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. Ejemplo de conversión de C++ programa en código de máquina. El compilador de Java convierte el código Java de alto nivel en código de bytes (que también es un tipo de código de máquina).
An Interprete es un programa que convierte un programa de un nivel a otro lenguaje de programación. mismo nivel. Ejemplo de conversión de Java programar en C++
In JavaEl generador de código Just In Time convierte el código de bytes en código de máquina nativo que se encuentra 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 están
- 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 Java lo que disminuye aún más la velocidad
Sin embargo, la última versión de Java ha abordado en gran medida los cuellos de botella en el desempeño.
Resumen:
- La forma completa de JVM es Java Máquina virtual. JVM en Java es el motor que impulsa el Java Código. Se convierte Java código de bytes al lenguaje de máquina.
- Arquitectura JVM en Java Contiene cargador de clases, área de memoria, motor de ejecución, etc.
- En JVM, Java El código se compila en código de bytes. Este código de bytes se interpreta en diferentes máquinas.
- JIT significa compilador justo a tiempo. JIT es la parte del Java Máquina virtual (JVM). Se utiliza para acelerar el tiempo de ejecución.
- En comparación con otras máquinas compiladoras, JVM en Java puede ser lento en ejecución.