Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

JVM | ¿Qué es Java Virtual Machine y su arquitectura?

¿Qué es JVM?

Máquina Virtual Java (JVM) es un motor que proporciona un entorno de tiempo de ejecución para impulsar el código Java o las aplicaciones. Convierte el código de bytes de Java en lenguaje de máquinas. JVM es una parte de Java Runtime Environment (JRE). En otros lenguajes de programación, el compilador produce código de máquina para un sistema en particular. Sin embargo, el compilador de Java produce código para una Máquina Virtual conocida como Máquina Virtual de Java.

Así es como funciona JVM

Primero, el código Java se compila en código de bytes. Este código de bytes se interpreta en diferentes máquinas

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

JVM en Java es responsable de asignar espacio de memoria.

En este tutorial de JVM, aprenderá-

Arquitectura JVM

Ahora, en este tutorial de JVM, comprendamos la Arquitectura de JVM. La arquitectura 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 utilizado para cargar archivos de clases. Realiza tres funciones principales a saber. Carga, vinculación e inicialización.

2) Área de método

El área de métodos de JVM almacena estructuras de clase 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 las matrices se almacenan en el montón. Esta memoria es común y se comparte en varios subprocesos.

4) Pilas de lenguaje JVM

Las pilas del lenguaje Java almacenan variables locales y son resultados parciales. Cada subproceso tiene su propia pila de JVM, creada 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 de PC almacena la dirección de la instrucción de la máquina virtual Java que se está ejecutando actualmente. En Java, cada subproceso tiene su registro de PC separado.

6) Pilas de métodos nativos

Las pilas de métodos nativos contienen la instrucción del código nativo que depende de la biblioteca nativa. Está escrito en otro idioma en lugar de Java.

7) Motor de ejecución

Es un tipo de software utilizado para probar hardware, software o sistemas completos. El motor de ejecución de pruebas nunca lleva ninguna información sobre el producto probado.

8) Interfaz de método nativo

La interfaz de método nativo es un marco de programación. Permite que el código Java que se ejecuta en una JVM sea llamado por bibliotecas y aplicaciones nativas.

9) Bibliotecas de métodos nativos

Bibliotecas nativas es una colección de bibliotecas nativas (C, C++) que necesita 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 podría 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 referencias de archivos de programa 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 que es manejado por su sistema operativo y procesador.

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

Haga clic aquí si no se puede acceder al video

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

Entender el proceso de compilación de Java en Java. Primero echemos un vistazo rápido al proceso de compilación y enlace en C.

Supongamos que, en general, ha llamado a dos funciones f1 y f2. La función principal se almacena 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 objetos correspondientes que son el código de máquina.

El siguiente paso es integrar todos estos archivos de objetos en un solo archivo .exe con la ayuda del enlazador. El enlazador juntará todos estos archivos y producirá el archivo .exe.

Durante la ejecución del programa, un programa cargador cargará un.exe en la RAM para la ejecución.

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

Ahora, en este tutorial de JVM, veamos el proceso para JAVA. En su principal, tiene dos métodos 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 ningún enlace .

La Java VM o Java Virtual Machine reside en la RAM. Durante la ejecución, utilizando el cargador de clases, los archivos de clase se llevan a la 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 de compilar. Es una de las razones principales por las que Java es comparativamente lento.

NOTA: JIT o El compilador Just-in-time es la parte de Java Virtual Machine (JVM). Interpreta parte del Byte Code que tiene una funcionalidad similar al mismo tiempo.

¿Por qué Java es un lenguaje tanto interpretado como compilado?

Los lenguajes de programación se clasifican como

Un compilador es un programa que convierte un programa de un nivel de lenguaje a otro. Ejemplo de conversión de programa C++ a código máquina.

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

Un intérprete 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 un 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 programación.

Por lo tanto, Java es un lenguaje tanto compilado como interpretado.

¿Por qué Java es lento?

Las dos razones principales detrás de la lentitud de Java son

  1. Enlace dinámico: A diferencia de C, la vinculación se realiza en tiempo de ejecución, cada vez que se ejecuta el programa en Java.
  2. 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 reduce aún más la velocidad

Sin embargo, la última versión de Java solucionó en gran medida los cuellos de botella de rendimiento.

Resumen :


Java

  1. ¿Qué es un tornillo de máquina?
  2. ¿Qué es el CNC?
  3. Java 10 - Apretón de manos local de subprocesos
  4. ¿Qué es el torneado mecánico?
  5. ¿Qué es el diseño arquitectónico?
  6. ¿Qué es un perno de máquina?
  7. ¿Qué es una máquina giratoria?
  8. ¿Qué es una máquina expendedora de leche?
  9. ¿Qué es una máquina perforadora horizontal?
  10. ¿Qué es una máquina de prensa automática?
  11. ¿Qué es la atención de máquinas?