Mostrando entradas con la etiqueta intérprete. Mostrar todas las entradas
Mostrando entradas con la etiqueta intérprete. Mostrar todas las entradas

abril 16, 2010

Compilador JIT.

En las primeras versiones de Java, la JVM era tan sólo un intérprete de códigos de byte de Java. Esto hacía que la mayoría de los programas se ejecutaran con lentitud, ya que la JVM tenía que interpretar y ejecutar un código de bytes a la vez. Por lo general, las JVMs actuales ejecutan códigos de bytes usando una combinación de la interpretación y la denominada compilación justo a tiempo (JIT). En este proceso, la JVM analiza los códigos de bytes a medida que se interpretan, buscando puntos activos: partes de los códigos de bytes que se ejecutan con frecuencia.


Para estas partes, un compilador justo a tiempo (JIT y conocido como compilador HotSpot de Java) traduce los códigos de bytes al lenguaje máquina correspondiente a la computadora. Cuando la JVM encuentra estas partes compiladas nuevamente, se ejecuta el código en lenguaje máquina, que es más rápido. En consecuencia, los programas en Java en realidad pasan por dos fases de compilación: una en la cual el código fuente se traduce a código de bytes (para tener portabilidad a través de las JVMs en distintas plataformas computacionales) y otra en la que, durante la ejecución, los códigos de bytes se traducen en lenguaje máquina para la computadora actual en la que se ejecuta el programa.


Bibliografía consultada:
  • Como programar en Java, Deitel & Deitel, pág. 13, Séptima Edición 2008, Editorial Pearson Education. 

abril 06, 2010

Intérprete Java.

La Máquina Virtual ejecuta los códigos de bytes para ello utilizamos el comando java seguido del nombre del archivo que contiene los códigos de bytes.


Por ejemplo para ejecutar una Aplicación Java de nombre MiPrograma.class tendríamos que invocar el comando java para iniciar la Máquina Virtual Java: java MiPrograma


Observa que no es necesario utilizar la extensión .class. Una vez que hemos iniciado el proceso la Máquina Virtual utiliza un cargador de clases para colocar en memoria principal los archivos .class. A medida que se cargan las clases, un verificador de códigos de bytes examina los códigos para asegurar que sean válidos y que no violen las restricciones de seguridad de Java. Luego entonces, la Máquina Virtual ejecuta los códigos de bytes del programa.

Intérprete.

Los intérpretes no producen un programa objeto (como en el caso de los compiladores), más bien ejecutan directamente el programa fuente. Un intérprete traduce una sola instrucción de código fuente en su equivalente a código objeto, la ejecuta y luego pasa a la siguiente instrucción en código fuente, la traduce y ejecuta, y así sucesivamente.


Los programas interpretados tienden a ser de ejecución más lenta, porque se debe analizar, traducir y ejecutar cada instrucción.

Compilador Java.

La función de un compilador es convertir un programa escrito un en lenguaje como Java a un lenguaje que la computadora pueda entender. Los programas en Java se convierten en códigos de bytes. El comando para llamar al compilador es: javac MiPrograma.java

Donde el nombre del compilador es javac y MiPrograma.java es el nombre del archivo que contiene el código de nuestro programa.

Al compilar el programa, el compilador verifica que éste obedezca las reglas de programación en Java, y si algo sale mal, muestra los mensajes de error apropiados. El compilador crea un archivo con el sufijo .class. Este contiene el código de bytes equivalente a su programa en Java.


Pero el archivo .class que produce el compilador no está listo todavía para ejecutarse ya que requiere vincularse con las bibliotecas de clases Java proceso que se realizará cuando el programa se ejecute.

Lenguaje de programación.

Lenguaje artificial, compuesto por un vocabulario fijo y un conjunto de reglas (llamadas sintaxis), que se usan para crear instrucciones que la computadora debe seguir. Casi todos los programas se escriben con un editor de texto para crear un código fuente, que se interpreta o compila después a un lenguaje máquina que la computadora puede ejecutar.


Véase: