Java - JVM
Concepto
-
JVM (Java Virtual Machine)
-
Motor en tiempo de ejecución
-
Se utiliza para ejecutar aplicaciones Java
-
Actua como maquina virtual que permite que el código
Java
se ejecute en cualquier sistema paraJava
WORA
( White Once Run EveryWhere)
-
Funcionamiento
-
Cuando el compilador compila un archivo
.java
genera un archivo.class
que contienebyte-code
-
Byte-code
-
Lenguaje intermedio
más abstracto que ellenguaje máquina
-
Utilizado como
archivo binario
el cual contiene unprograma ejecutable
similar a un módulo objeto -
Es un
archivo binario
producido por elcompilador
cuyo contenido es elcódigo objeto
ocódigo máquina
-
-
Ejemplo de Byte-code
- Ejemplo visual simplificado del bytecode de Java
Compiled from "Example.java"
public class Example {
public static void main(java.lang.String[]);
Code:
0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3 // String Hola, mundo!
5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
}
-
Muestra el bytecode para una clase llamada “Example” con un método estático “main” que imprime “Hola, mundo!” en la consola
-
Cada línea de código bytecode comienza con un número y una instrucción
-
Ejemplo
-
“0: getstatic” indica que la instrucción en la posición 0 es “getstatic”
- Se pueden incluir referencias a constantes o etiquetas como “#2” y “#3” que se resuelven durante la ejecución
-
Esto es un ejemplo simplificado , el bytecode real generado por el compilador de Java más complejo
Ejemplo de Byte-code en formato Hexadecimal
- Cuando se compila este código el
compilador Java
genera el siguientebyte-code
( formato hexadecimal )
CA FE BA BE 00 00 00 34 00 1D 0A 00 06 00 0F 09
00 10 00 11 08 00 12 0A 00 13 00 14 07 00 15 07
00 16 01 00 06 3C 69 6E 69 74 3E 01 00 03 28 29
56 ...
-
Este
byte-code
se almacena en un archivo.class
y puede ser ejecutado por laJVM
-
Este archivo
.class
pasa por varios pasos cuando se ejecuta- Estos pasos describen la
arquitectura
de laJVM
- Estos pasos describen la
-
JVM
tiene varios subsistemas como elJava Class Loader
el cual es responsable de cargar, enlazar e inicializar el archivo.class
-
Durante la incorporación del
cargador de clases
, lee el archivo.class
que genera losdatos binarios
y los guarda en el área de métodos -
Por cada archivo
.class
elJVM
almacena la información como el nombre calificado de la clase cargada y su clase primaria inmediata-
El archivo
.class
está relacionado con-
Class
-
Interface
-
Enum
-
Con información sobre
modificadores
,variables
ymétodos
-
-
-
-
Después de cargar el archivo
.class
laJVM
crea un objeto de tipoClass
para representar este archivo en lamemoria heap
-
Este
objeto Class
puede ser utilizado por el programador para obtener información de nivel de clase como nombre de clase , nombre principal, métodos e información de variable- Tiene un motor de ejecución
(Execution Engine)
que ejecuta elbyte-code
- Tiene un motor de ejecución
Deja un comentario