Máquina virtual de Java (JVM)

Java es un lenguaje interpretado, como ya se ha comentado. Cuando se escribe un programa Java, bien en un entorno de desarrollo o bien en un editor de texto, necesita ser compilado, generando un conjunto de instrucciones optimizadas denominadas programa bytecode.

Este programa bytecode es independiente de la plataforma y no se puede ejecutar por el procesador. En su lugar, una Máquina Virtual Java (Java Virtual Machine, JVM) ejecuta (interpreta) los bytecode.

Máquina virtual de Java

Existen muchas JVM disponibles para cada plataformas, que permiten a los programas Java ser independientes de la plataforma. Por ejemplo un programa compilado en una estación de trabajo UNIX puede ser ejecutado en un Macintosh.

La clave que permite a Java resolver problemas de seguridad y portabilidad es que la salida de un compilador Java no es código ejecutable. En su lugar son bytecode. Los códigos de bytes son un conjunto de instrucciones muy optimizadas y diseñadas para ser ejecutadas por un sistema Java en tiempo de ejecución denominado JVM. Es decir, en su formato estándar JVM es un intérprete de códigos de bytes, aunque la mayoría de los lenguajes modernos están diseñados para ser compilados, no interpretados.

La razón de la estructura del lenguaje Java reside en que sólo se necesita implementar JVM para cada plataforma. Si un programa se compilara a código nativo, entonces las diferentes versiones del mismo programa tendrán que existir para cada tipo de CPU (Unidad Central de Proceso) conectada a Internet. Ésta, naturalmente, no es una solución factible. Por consiguiente, la interpretación de bytecodes es el medio más fácil de crear plataformas realmente portables.

El hecho deque un programa Java sea interpretado también ayuda para hacerlo más seguro, ya que la ejecución de cada programa está bajo el control de JVM y además previene de generar efectos laterales fuera del sistema.

Cuando se interpreta un programa normalmente corre de modo sustancialmente más lento que si se ejecuta de modo compilado a código ejecutable. Sin embargo, con Java la diferencia entre los dos no es tan grande. El uso de bytecode pennite al sistema ejecutar programas en tiempo de ejecución mucho más rápido de lo que era de esperar.

Otra fortaleza de Java proviene de sus bibliotecas incorporadas. Los paquetes que vienen con JDK (Java Development Kit) contienen muchos centenares de clases incorporadas con muchos millares de métodos. Estas clases y métodos contienen funcionalidad usada frecuentemente, significando que una gran cantidad de trabajo de programación ha sido hecho ya. Es responsabilidad del desarrollador integrar las clases incorporadas en su aplicación específica.

El Kit de Desarrollo de Software de Java (Software Development Kit) contiene todas las clases que se necesitan para desarrollar programas Java, herramientas de compilación, ejecución y depuración de código. Para desarrollar Java se necesita obtener un SDK, pero está disponible para su descarga gratuita del sitio Java de Sun.

La principal ventaja del SDK es su carácter gratuito, autorizado y actualizado. Su principal desventaja es que proporciona sólo herramientas de desarrollo estilo línea de órdenes en vez de un entorno gráfico de programación visual.

3 Comments