La JVM (Máquina Virtual Java) actúa como un motor de tiempo de ejecución para ejecutar aplicaciones Java. La JVM es la que realmente llama al método principal presente en el código java. JVM es una parte del JRE (Java Runtime Environment).

Las aplicaciones Java se llaman WORA (Write Once Run Anywhere). Esto significa que un programador puede desarrollar código Java en un sistema y puede esperar que se ejecute en cualquier otro sistema habilitado para Java sin ningún ajuste. Todo esto es posible gracias a JVM.

Cuando compilamos un archivo .java, el compilador de Java genera archivos .class (que contienen código de bytes) con los mismos nombres de clase presentes en el archivo .java. Este archivo .class entra en varios pasos cuando lo ejecutamos. Estos pasos juntos describen toda la JVM.

1) Classloader

El Classloader es un subsistema de la JVM que se utiliza para cargar los archivos de clase. Cada vez que ejecutamos el programa java, éste es cargado primero por el cargador de clases. Hay tres cargadores de clase incorporados en Java.

  1. Bootstrap ClassLoader: Es el primer cargador de clases, que se encarga de cargar los archivos de clase de rt.jar también llamado runtime jar.
  2. Extension ClassLoader: Es el responsable de cargar los archivos de clase adicionales de la carpeta jre lib ext (jre/lib/ext).
  3. Application ClassLoader: El cargador de clases de la aplicación es el que carga los archivos de clase del jar específico de la aplicación. Esto no es más que la aplicación que has creado. Una vez que su programa java se compila, la JVM crea archivos de clase. El cargador de clases de la aplicación carga estos archivos de clase en la zona de memoria.

Enlace: Realiza la verificación, la preparación y (opcionalmente) la resolución.

  1. Verificación: Asegura la corrección del bytecode.
  2. Preparación: La JVM asigna memoria para las variables de la clase e inicializa la memoria con valores por defecto.
  3. Resolución: Es el proceso de sustituir las referencias simbólicas de la clase por referencias directas.

Inicialización

En esta fase se asignan todas las variables estáticas con sus valores definidos en el código y el bloque estático

2) Área de datos en tiempo de ejecución

El segundo componente principal en la arquitectura de la JVM es el área de datos en tiempo de ejecución. Al igual que un coche necesita una carretera, o que un tren necesita una vía férrea para funcionar, de forma similar, JVM necesita un área de memoria para almacenar los archivos de clase y ejecutarlos. Hay 5 tipos de área de datos de memoria. Son el área de métodos, la memoria Heap, la memoria Stack, los Registros PC y las pilas de métodos nativos.

  1. Área de métodos: Todos los datos de la clase se almacenan en esta área de memoria.
  2. Área de Heap: Todos los objetos y variables de instancia se almacenan en esta área de memoria.
  3. Área de pila: Para cada hilo, JVM crea una pila de tiempo de ejecución que se almacena aquí.
  4. Registro PC: Almacena la dirección de la instrucción de ejecución actual de un hilo.
  5. Pila de métodos nativos: La pila de métodos nativos almacena la información de los métodos nativos.
    1. 3) Motor de ejecución

      El motor de ejecución ejecuta el .class (bytecode). Lee el código de bytes línea por línea, utiliza los datos y la información presente en varias zonas de memoria y ejecuta las instrucciones. Se puede clasificar en tres partes:-

      1. Interpretador: Compila el bytecode línea por línea y luego lo ejecuta. La desventaja aquí es que cuando un método es llamado varias veces, cada vez se requiere la interpretación.
      2. Compilador Just-In-Time(JIT): Se utiliza para aumentar la eficiencia del intérprete. Compila todo el bytecode y lo cambia a código nativo, de modo que cada vez que el intérprete ve llamadas repetidas a un método, el JIT proporciona código nativo directo para esa parte, de modo que no se requiere reinterpretación, por lo que se mejora la eficiencia.
      3. Colector de basura: Un objeto que ya no se utiliza es eliminado por el recolector de basura.

Categorías: Articles

0 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *