Explicación de la arquitectura y los componentes de Java [2022]
Publicado: 2021-01-04Antes de convertirse en un programador de Java, debe comprender todos los aspectos de este lenguaje. Uno de los aspectos más cruciales de Java es la arquitectura de Java. Otro tema técnico al respecto es conocer los componentes de JVM. Por lo tanto, cubriremos estos dos temas críticos en este artículo.
Este artículo asume que tiene una comprensión general de los conceptos básicos de Java. Incluso si no está familiarizado con los fundamentos de Java, puede hacer cualquier pregunta que pueda tener en la sección de comentarios a continuación. Empecemos:
Tabla de contenido
Explicación de la arquitectura de Java
Java tiene dos procesos, compilación e interpretación. El compilador de Java convierte el código presente en Java en códigos de bytes. La máquina virtual de Java (JVM) convierte los códigos de byte en código de máquina que la máquina ejecuta directamente.
Podemos describir este proceso en los siguientes pasos:
- El código fuente va al compilador de Java
- El compilador de Java lo convierte en códigos de bytes.
- Los códigos de bytes van a la máquina virtual de Java
- Finalmente, va al OS (sistema operativo)
Ahora que estamos un poco familiarizados con el funcionamiento de la arquitectura Java, podemos echar un vistazo a sus diferentes componentes:
JVM (máquina virtual de Java)
Los creadores de Java querían que fuera WORA (Write Once Run Anywhere). Esto significa que puede ejecutar sus aplicaciones en cualquier plataforma, pero lo que le da a Java esta calidad es JVM. La JVM proporciona el entorno para ejecutar código Java. Interpreta el bytecode y lo convierte en código de máquina para que la máquina pueda ejecutar el programa Java.

Las cargas de JVM verifican y ejecutan el código. También proporciona el entorno de tiempo de ejecución al código para que pueda ejecutarse en la máquina.
JRE (Entorno de tiempo de ejecución de Java)
El JRE crea un entorno de tiempo de ejecución en el que puede ejecutar los programas Java. Toma el código Java y lo combina con las bibliotecas requeridas. El JRE también inicia la JVM para su ejecución. Java Runtime Environment tiene el software y las bibliotecas necesarios para que pueda ejecutar los programas.
JDK (Kit de desarrollo de Java)
Usaría el JDK para desarrollar aplicaciones y programas Java. Es un entorno de desarrollo de software y contiene múltiples herramientas de desarrollo, incluido el JRE, un compilador, un intérprete, un generador de documentación y un archivador con otros.
Componentes de JVM
Ahora que está familiarizado con la arquitectura de Java, echemos un vistazo a los componentes de JVM para que podamos entenderlo mejor. Como la JVM realiza una de las tareas más cruciales para Java, tiene muchas partes para ese propósito. Discutiremos cada elemento en detalle:
Subsistema ClassLoader
ClassLoader es un subsistema de Java Virtual Machine que carga archivos de clase. Es el primer componente de la arquitectura ya que carga el programa para que puedan llevarse a cabo otras tareas. También vincula e inicializa los archivos de clase. Podemos dividir su funcionamiento en los siguientes tres apartados:
Cargando
Este componente carga las clases. Tiene el cargador de clases BootStrap para cargar clases pertenecientes al classpath de arranque. La Extensión ClassLoader carga las clases situadas dentro de la carpeta ext, y la Aplicación ClassLoader carga la ruta mencionada Variable de entorno y archivos similares.
Enlace
Aquí, el subsistema tiene un verificador para verificar si el bytecode es correcto o no. Si el código de bytes no es el adecuado, generará el error de verificación. La sección de vinculación asigna toda la memoria de variables estáticas y asigna los valores predeterminados. También reemplaza las referencias simbólicas de la memoria por las originales.

Inicialización
En esta sección de ClassLoading, el sistema asigna las variables estáticas a los valores originales y ejecuta el bloque estático.
Área de datos de tiempo de ejecución
Esta sección de la JVM tiene los siguientes componentes:
Área de método
El área de método almacena todos los datos de nivel de clase. Cada JVM tiene solo un área de método.
Área de montón
El área del montón almacena todos los objetos y sus matrices y variables de instancia. Al igual que el área de métodos, una JVM solo tiene un área de almacenamiento dinámico.
Área de pila
Esta sección crea pilas de tiempo de ejecución únicas para cada amenaza y crea una entrada para cada llamada de método en la memoria de la pila (también conocida como marco de pila). Tiene un Array de Variables Locales que está relacionado con el método, la pila de operandos, que actúa como un espacio de trabajo para operaciones intermedias, y el marco de datos, donde quedan almacenados todos los símbolos relacionados con el método. Los datos del marco mantienen la información del bloque catch a menos que haya una excepción.
Registros de PC
Cada subproceso tiene registros de PC separados que contienen la dirección de las instrucciones en ejecución. Una vez que una instrucción ha completado la ejecución, el registro de la PC se actualiza con la siguiente.
Pilas de métodos nativos
Como sugiere el nombre, esta sección contiene información sobre el método nativo. Crea una pila de métodos nativos única para cada amenaza.
Debe tener en cuenta que los primeros dos componentes del Área de datos de tiempo de ejecución (área de método y área de montón) son recursos compartidos, mientras que el área de pila no lo es.
Motor de ejecución
El motor de ejecución ejecuta el código de bytes. Lo lee y lo ejecuta pieza por pieza. También tiene diferentes componentes:
Interprete
Este componente interpreta el código de bytes rápidamente pero su ejecución es un poco lenta. Tiene un inconveniente significativo cuando el sistema llama a un método varias veces y requiere una nueva interpretación cada vez. Este inconveniente del intérprete perjudica sustancialmente la eficiencia del proceso.
Compilador JIT
El compilador JIT no tiene el inconveniente que tiene el intérprete. Entonces, cuando el motor de ejecución encuentra código repetido, usa el compilador JIT en lugar del intérprete. El compilador JIT convierte el código de bytes en código nativo después de compilarlo. El sistema utiliza el código nativo directamente.
El compilador JIT tiene el generador de código intermedio para producir código intermedio y el optimizador de código para optimizar el mismo. También tiene un generador de código de destino que produce el doe nativo y un perfil que encuentra puntos de acceso.
Recolector de basura
El componente final del motor de ejecución es el recolector de elementos no utilizados que recopila y elimina los objetos sin referencia. Puede activarlo llamando a system.gc(), sin embargo, eso no garantiza su ejecución.

Además de estos componentes, la JVM también tiene JNI (interfaz nativa de Java) y las bibliotecas de métodos nativos. El primero interactúa con el segundo y proporciona las bibliotecas nativas necesarias para su ejecución.
Obtenga un curso de desarrollo de software de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.
Pensamientos finales
Hemos tratado de mantener este artículo conciso y útil, y estamos seguros de que lo encontró informativo. Si tiene alguna pregunta sobre los componentes de JVM o la arquitectura de Java, puede preguntarnos lo mismo poniéndose en contacto con nosotros a través de los comentarios.
Puede obtener más información sobre Java y sus aplicaciones en nuestro blog. Tenemos numerosas guías y artículos útiles que cubren varios aspectos de este sólido lenguaje de programación.
Si está interesado en obtener más información sobre Java, OOP y desarrollo de software de pila completa, consulte el programa Executive PG de upGrad & IIIT-B en desarrollo de software de pila completa, que está diseñado para profesionales que trabajan y ofrece más de 500 horas de formación rigurosa. Más de 9 proyectos y asignaciones, estado de exalumno de IIIT-B, proyectos finales prácticos prácticos y asistencia laboral con las mejores empresas.
