Publicidad

viernes, 12 de septiembre de 2008

Máquina Virtual de Java (JVM)

Máquina Virtual de Java (JVM)

Una máquina física tiene su sistema operativo, lo que arranca código de máquina, y un procesador, lo que ejecuta el código. Para programas escritos en lenguages interpretados (in vez de compilados), un intérprete tambien es preciso, para convertir el código del fuente en instrucciones mientras el programa está ejecutando.

Una máquina virtual es un programa que desempeña estes pasos en el tiempo de ejecución con respecto a algo que se llama código de byte, en vez de operar directamente en el código máquina. Esta máquina convierte el código de byte en instrucciones especificas para la máquina física, por medio ó de un intérprete ó de un compilador “just in time”, lo que hace la compilación desde el código de byte hasta el código de máquina (física) en el tiempo de correr el programa.

El código de byte utilizado por Java es un byte stream (flujo de octetos) que contiene ó instancias de clases (tipos) primativas de Java (como int, float, etc.) ó op codes (códigos de operación) para manipular estas instancias de clases primativas.

Como un lenguaje orientado a objetos, Java habilita la construcción de objetos de clases compuestas de instancias de clases primativas, juntos con las operaciones usadas para manipular estes objetos. Un objeto de una clase compuesta puede tener instancias de clases primativas ó de otras clases compuestas, junto con los métodos usados para manipular estes objetos. (Los últimos, en su turno, son construidos de métodos para manipular las instancias de clases primativas.) Estes objetos de clases compuestas son, entonces, definidas últimamente, y compuestas por, instancias de clases primativas y las operaciones para manipularlas.

Porque las clases compuestas son compuestas usando tipos primativos y los métodos para manipular objetos construidos de ellos, es precisa una manera de interpretar el código byte en termas de los objetos de clases compuestas. O sea, los tipos primativos y sus operadores, contenidos en el código byte, deben ser interpretados para ejecutar en tal manera que las operaciones para estes tipos primativos sirven, en efecto, para manipular los objetos de clases compuestas, usando los métodos de estas clases. Esto es la función de la parte de la JVM que se llama un class loader (arrancador de clases). El arrancador de clases arranca las definiciones de clases compuestas conforme que sea necesário, junto con el código de byte preciso para implementar instancias de estas clases.

No hay comentarios: