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
Javase ejecute en cualquier sistema paraJavaWORA( White Once Run EveryWhere)
-
Funcionamiento
-
Cuando el compilador compila un archivo
.javagenera un archivo.classque contienebyte-code-
Byte-code-
Lenguaje intermediomás abstracto que ellenguaje máquina -
Utilizado como
archivo binarioel cual contiene unprograma ejecutablesimilar a un módulo objeto -
Es un
archivo binarioproducido por elcompiladorcuyo contenido es elcódigo objetoocó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 Javagenera 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-codese almacena en un archivo.classy puede ser ejecutado por laJVM -
Este archivo
.classpasa por varios pasos cuando se ejecuta- Estos pasos describen la
arquitecturade laJVM
- Estos pasos describen la
-
JVMtiene varios subsistemas como elJava Class Loaderel cual es responsable de cargar, enlazar e inicializar el archivo.class-
Durante la incorporación del
cargador de clases, lee el archivo.classque genera losdatos binariosy los guarda en el área de métodos -
Por cada archivo
.classelJVMalmacena la información como el nombre calificado de la clase cargada y su clase primaria inmediata-
El archivo
.classestá relacionado con-
Class -
Interface -
Enum -
Con información sobre
modificadores,variablesymétodos
-
-
-
-
Después de cargar el archivo
.classlaJVMcrea un objeto de tipoClasspara representar este archivo en lamemoria heap -
Este
objeto Classpuede 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