Se encuentra usted aquí

La Máquina Virtual de Java

Guía

En esta lección presentaremos los conceptos básicos sobre cómo funciona una aplicación Java y las diferencias entre JRE, JDK, JSE y JEE. Igualmente haremos un pequeño ejercicio usando la línea de comandos para comprender mejor el concepto de compilación en java.

La Máquina Virtual

java100PuroJava no genera código ejecutable sino que, en su forma normal, utiliza una máquina virtual denominada la Java Virtual Machine (JVM), lo que implica que el código generado tiene una representación intermedia llamada Java bytecode. Por este motivo, para ejecutar un programa escrito en Java es necesario instalar una aplicación especial llamada el “Runtime”. Esta arquitectura permite que las aplicaciones de Java no estén obligatoriamente atadas al sistema operativo en el que se construyen y así un programa desarrollado en Windows puede ser ejecutado en Linux, Mac o Unix y viceversa, siempre y cuando la aplicación no utilice APIs o ubicaciones de archivos específicas del sistema operativo. Esto es lo que se llama “100% Java Puro”.

Esta forma de hacer las cosas no hace de Java un lenguaje lento, de hecho las implementaciones de la JVM incluyen compiladores Just in Time (JIT) que se encargan de optimizar el código para la plataforma en la que se está ejecutando. La JVM es una especificación por cuanto pueden existir varias implementaciones. La más utilizada es la oficial distribuida por ORACLE aunque existen otras como el OpenJDK, Apache Harmony, entre otras. En el mismo equipo pueden convivir varias JVM y ser ejecutadas al mismo tiempo.

JRE y JDK

El Java Runtime Enviroment (JRE) incluye una implementación de la JVM, librerías y el conjunto de software necesario para ejecutar las aplicaciones cliente de Java, al igual que el plugin para que los navegadores de internet (browser) ejecuten código especial de Java llamado “applet”.

El Java Development Kit (JDK) está dirigido a desarrolladores, incluye el JRE y el conjunto de herramientas de línea de comandos necesario para compilar el código, empaquetarlo en archivos con extensión “JAR”, generar documentación, entre otros. Es por esta razón por la que las herramientas de desarrollo requieren que el JDK se encuentre instalado.

En la página oficial de ORACLE http://java.sun.com/javase/downloads/index.jsp, encontrará dos botones: Download JDK y Download JRE. Debido a que vamos a escribir código para luego compilarlo, es necesario descargar el JDK porque, como vimos, el JRE no incluye las herramientas necesarias. Para descargar el JDK, siga las instrucciones en los pasos 1 y 2 de El Primer Ejemplo.

La imagen a continuación, tomada de la Documentación de Java SE 6, muestra cómo la JVM es el elemento básico y hace parte del JRE que, a su vez, está incluido en el JDK.

JREJDK

JSE y JEE

Java Platform Stardard Edition o Java SE (JSE) se refiere a la plataforma de ejecución de aplicaciones java por fuera del servidor de aplicaciones, es decir, cuando se ejecuta una aplicación en la consola del sistema operativo, un cliente enriquecido o un applet en el navegador web, decimos que estamos utilizando JSE.

Java Enterprise Edition (JEE) es un estándar para la publicación de aplicaciones a nivel empresarial. En otras palabras, define la especificación para el servidor de aplicaciones en el que se publicarán los componentes de software a nivel empresarial, al igual que las aplicaciones web.

Java Platform Micro Edition (J2ME) es una versión especial de la especificación dirigida a sistemas empotrados entre los que se cuentan los teléfonos móviles.

Existen también referencias a J2SE y J2EE, esta era la convención desde la versión 1.2 hasta la 1.5 del JDK. A partir de la versión 6, los nombres son JSE y JEE. El nombre para la plataforma omite el uno inicial a partir de Java 5, es decir pasó de 1.4 a 5, aunque en el JDK se mantenga. Esto se puede verificar ejecutando el comando “java -version” en la consola del sistema.

Este libro está enfocado a las aplicaciones JEE aunque en este capítulo estamos recorriendo las bases de la plataforma independiente al servidor de aplicaciones, es decir, JSE.

Ejemplo de Compilación en Java

Con el propósito de ver en la práctica una clase compilada en Java, haremos un ejercicio con la línea de comandos. Advertimos que en el próximo capítulo utilizaremos Eclipse como IDE para los ejercicios, pero en este momento resulta útil hacer el ejercicio en forma manual.

Paso 1 La clase Java

En un archivo de texto escriba las siguientes instrucciones y guarde el archivo como HolaMundo.java, la mayúscula inicial es importante.

class HolaMundo {
    public static void main(String[] args) {
        System.out.println("Hola Mundo!");
    }
}

Java es completamente orientado a objetos y es por esto que el método main debe encontrarse dentro de la definición de una clase. El método main recibe los parámetros de ejecución y finalmente muestra el mensaje Hola Mundo en la consola.

Paso 2 Compilar

Todavía no se puede ejecutar la aplicación. Como vimos antes, es necesario compilar para verificar posibles errores y generar un nuevo archivo con extensión .class que contiene la representación binaria entendida por la JVM. Esto se logra con el comando “javac”. Abra la línea de comandos ubicándose en la carpeta en la que almacenó HolaMundo.java y ejecute la siguiente instrucción:

javac HolaMundo.java

Al verificar el contenido de la carpeta encontraremos un nuevo archivo “HolaMundo.class”. Este es el código binario que entiende la JVM y que es portable entre diferentes sistemas operativos.

Paso 3 Hola Mundo

Finalmente, ejecutamos la aplicación utilizando el comando “java”:

java HolaMundo

No se debe especificar la extensión .class. El resultado es el esperado.

Hola Mundo!

El comando “java” se encarga de procesar el archivo binario .class utilizando la JVM. En las siguientes lecciones veremos ejemplos más avanzados profundizando en el lenguaje.

Resumen

Hemos visto los conceptos de JVM, JRE, JDK, JSE y JEE, muchos acrónimos por cierto, pero resulta clave para comprender el enfoque de la plataforma. En la siguiente lección utilizaremos Eclipse como IDE y haremos algunos ejercicios para familiarizarnos con el lenguaje de programación.

IT Agil S.A.S. © 2011 | Bogotá D.C., Colombia