¿Qué es la JVM?

JVM es una especificación donde se describe específicamente el funcionamiento de la máquina virtual Java. Sin embargo, el algoritmo es una identidad independiente que es elegida solo por el proveedor de implementación como Oracle y otras compañías de renombre. Como tal, JVM es una implementación conocida como Java Runtime Environment (JRE).

Definición

Se define como una descripción de un programa de software que ofrece un entorno de tiempo de ejecución para el código y su ejecución significativa. En otras palabras, así es como ejecutamos los Programas Java: configurando la configuración de la JVM y confiando en ella para hacer frente a los recursos del programa durante el proceso de ejecución.

Comprensión

Java se conoce como plataforma independiente debido a la máquina virtual Java. Cuando se realiza un envío a diferentes computadoras con un sistema operativo diferente que tiene JVM, JVM interpreta el código de bytes al lenguaje de nivel de máquina. Para ser precisos, los programas JVM están escritos en lenguaje de programación C, mientras que JVM es independiente del sistema operativo. Es un componente clave de la Arquitectura Java.

Además de todo esto, es responsable de asignar la memoria esencial requerida por un programa Java. También es responsable de prohibir el espacio de memoria.

¿Que hace?

Las operaciones cruciales que realiza JVM son las siguientes:

  • Carga de código
  • Verificación de código
  • Ejecución de código
  • Provisión de entorno de tiempo de ejecución

Además de todo esto, despliega clasificaciones para formato de archivo de clase, área de memoria, montón de basura recolectada, conjunto de registros, informes de errores fatales, etc.

Arquitectura JVM

Veamos algunas ideas clave sobre la arquitectura interna de JVM que se compone de:

1. Cargador de clases

Es un subsistema de JVM utilizado para cargar archivos de clase. Mientras ejecuta el programa Java, primero lo carga el cargador de clases. Los tres cargadores de clases que incluye Java son los siguientes:

a) Bootstrap ClassLoader

Es la superclase del cargador de clases de Extensión. Ayuda a cargar los archivos rt.jar que transportan todos los archivos de clase.

b) Extension ClassLoader

Es el cargador de clases padre del cargador de clases del sistema y el cargador de clases hijo de Bootstrap. Los archivos jar dentro del directorio $ JAVA_HOME / jre / lib / ext se pueden extraer a través de Extension ClassLoader.

C) Sistema / Cargador de clase de aplicación

Es el hijo del cargador de clases Extension, también conocido como Application classloader. Los archivos de clase del classpath se pueden extraer a través de él. Classpath, que se establece en el directorio actual, se puede cambiar de forma predeterminada mediante el uso del interruptor '-cp' o '-classpath'.

2. Área de clase (método)

Las estructuras previas a la clase, como los datos de campo y método, el grupo constante de tiempo de ejecución y el código para los métodos se almacenan en el Área de clase (método). Es una memoria que se crea en el inicio de JVM y se comparte entre todos los subprocesos como Heap.

3. Montón

Los objetos se asignan a través de esta útil área de datos de tiempo de ejecución. Es un lugar de memoria que almacena objetos junto con sus variables de instancia. Cada vez que se crea un objeto en Java, entra en el montón, el área de la memoria.

4. Pila

Junto con el almacenamiento de marcos, Java Stack contiene variables y resultados parciales. También juega un papel fundamental en el método, la invocación y el retorno. Cada subproceso individual consta de su pila JVM privada, creada al mismo tiempo que el subproceso. Cada vez que un método aumenta, se genera un nuevo marco y se rompe cuando se completa la invocación del método.

5. Registro del contador de programas (PC)

El registro de la PC contiene la dirección de la instrucción JVM en el momento de su ejecución. Al realizar un seguimiento de las instrucciones, tiene valor para cada instrucción que no está definida para los métodos nativos.

6. Pila de métodos nativos

Los procedimientos nativos utilizados en las aplicaciones son parte de la Pila de métodos nativos. Estos métodos están escritos en lenguajes distintos de Java. Asociadas con cada hilo, las implementaciones de JVM no pueden confiar en pilas convencionales y no pueden cargar métodos nativos. Para ser precisos, es similar a la pila pero se usa para métodos nativos.

7. motor

Siendo el aspecto clave de JVM, se comunica con sus diversas áreas de memoria. Esto incluye:

a. Recolector de basura

Esto juega un papel vital en el sistema de gestión de memoria dinámica de la JVM. La memoria que está ocupada y a la que ya no hace referencia ninguno de los objetos Java accesibles se libera a través del recolector de basura.

si. Interprete

Ejecuta las instrucciones después de leer la secuencia de bytecode.

C. Compilador Just-In-Time (JIT)

Habilitando la mejora del rendimiento, el compilador JIT compila partes del código de bytes con una funcionalidad similar al mismo tiempo. Ayuda a reducir la cantidad de tiempo necesario para el proceso de compilación.

8. Interfaz nativa de Java (JNI)

Las aplicaciones escritas en otros lenguajes, es decir, C, C ++, Assembly, etc., pueden conectarse a través de una interfaz entregada por JNI. Java utiliza el marco JNI para interactuar con las bibliotecas del sistema operativo o para enviar resultados a la consola.

¿Para qué sirve JVM?

La JVM tiene dos funciones principales: permitir que los programas Java se ejecuten en cualquier dispositivo o sistema operativo (conocido como el principio "Escribir una vez, ejecutar en cualquier lugar"), y administrar y optimizar la memoria del programa.

Ventajas y desventajas

Los programas Java se ejecutan adecuadamente a través de JVM. Bytecode: se utiliza un lenguaje intermedio para compilar programas Java y luego se ejecuta a través de JVM. Cada programa individual que se está compilando en bytecode puede ser ejecutado por cualquier plataforma impulsada por JVM. Esto permite que el software de Java sea más efectivo y compatible según las diversas plataformas informáticas. La JVM tiene algunas ventajas y desventajas notables que cualquier desarrollador debe sopesar cuidadosamente antes de invertir en el desarrollo de Java.

1. seguridad

A través de los trucos de seguridad de JVM, los programadores pueden escribir de manera efectiva programas Java seguros de alta gama. Da poder a los recursos del sistema operativo para identificar el software malicioso y también ayuda a prevenirlo en consecuencia.

2. Rendimiento

Es probable que los programas Java que se ejecutan en una JVM ofrezcan una ejecución más lenta en comparación con los programas escritos en C ++. Esto se debe a la optimización del código que se basa excesivamente en diferentes características específicas del sistema. Además, el código de bytes de Java no se puede optimizar para un conjunto de hardware específico, ya que es neutral para el sistema.

3. corrección

Correcto es el programa, que funciona de manera efectiva y cumple al máximo las expectativas del usuario. Las características integradas de JVM le permiten funcionar correctamente y sin errores.

¿Por qué deberíamos usar JVM?

A pesar de tener código sintáctico Java, JVM puede ejecutarse en varios programas de lenguaje diferentes. A continuación se enumeran algunas de las razones por las que se usa tanto y por qué usarlo en diferentes plataformas:

Utiliza memoria de almacenamiento dinámico: la memoria de almacenamiento dinámico es un componente central que se utiliza para la asignación de memoria dinámica para definir clases e inicialización de objetos y, dado que JVM admite memoria de almacenamiento dinámico, tiene una amplia aceptación.

Proporcionar seguridad para la ubicación del código remoto: el marco JVM está diseñado de tal manera que la aplicación remota se ejecute fácilmente. Esta teoría se sigue para ejecutar el Applet Java.

Conclusión

El hecho de que JVM funcione en múltiples sistemas operativos le da un pulgar hacia arriba en el dominio de la tecnología. Utilizándolo en Windows, Linux y otros sistemas operativos, está habilitado para transformar el código de bytes independientemente del hardware y el sistema operativo que se ejecutará. Además, su capacidad de ofrecer seguridad a la computadora host asegurando sus datos y su programa es otra razón por la cual JVM ha tenido tanto éxito en el pasado y continúa siendo dominante en el futuro.

Artículos recomendados

Esta ha sido una guía de Qué es una JVM (Máquina virtual Java). Aquí discutimos los conceptos básicos con la lista de Arquitectura y usos de JVM. También puede consultar nuestros otros artículos sugeridos para obtener más información:

  1. Mejores marcos de Javascript
  2. ¿Está Python orientado a objetos?
  3. Aplicaciones de C ++ en el mundo real
  4. Carrera en ASP.NET
  5. JRE vs JVM | Las 8 principales diferencias con (infografía)