Home » Java » Java Development Kit (J2SE JDK 5.0)

Java Development Kit (J2SE JDK 5.0)

En este artículo damos los primeros pasos para empezar a desarrollar aplicaciones con el lenguaje Java. La obtención del JDK y su instalación en nuestro equipo fue el primer paso fundamental. Junto con el JDK podemos instalar un IDE, NetBeans,  Eclipse u otro IDE. No habrá ningún problema, el IDE es prácticamente una elección personal y se podrán seguir los ejemplos utilizando cualquier IDE.
Después de instalar el JDK veremos distintas maneras de compilar un código fuente, desde la línea de comandos, desde un editor de textos habilitado para hacerlo y desde un IDE. Luego vimos los procedimientos de ejecución con el intérprete de bytecode java. 
Después ya estaremos en condiciones de empezar a trabajar realmente con el lenguaje.  
Veremos lo siguiente:
 

Instalación del JDK

Para desarrollar applets y aplicaciones Java es necesario instalar el kit de desarrollo Java de Sun que encontraremos en uno de los sitios Web de Sun (http://java.sun.com/j2se). La distribución vigente del JDK incluye opcionalmente un entorno de desarrollo integrado (IDE) gratuito que se denomina NetBeans.
El paquete es multiplataforma lo que nos permite instalarlo en distintos entornos (Windows, Solaris (versión SPARC),Solaris (versión x86), Linux).
Según la plataforma elegida tendremos que descargar el instalador correspondiente:
  • Windows
  • Linux
  • Solaris (SPARC)
  • Solaris (x86)
Los tamaños de los archivos de instalación varían en la versión actual entre 120 MB y 132 MB según la plataforma.

Instalación en Windows

Los requerimientos mínimos de hardware para esta versión (J2SE JDK 5.0) son los siguientes:
  • Procesador: Pentium III 500 MHz
  • Memoria: 512 MB
  • Disco libre: 415 MB (235 MB permanentes y 180 MB temporales para la instalación)  
Después que hayamos descargado el paquete JDK + NetBeans su instalación es muy simple ya que se suministra con un instalador y solamente tendremos que:
  • Tener privilegios de administrador 
  • Estar de acuerdo con la licencia 
  • Elegir la carpeta en donde se instalará el paquete de componentes 
  • Pulsar el botón Next (Siguiente) para iniciar el proceso de instalación 
 
El proceso de instalación incluye la instalación del J2SE JDK 5.0, del IDE NetBeans 5.0 y del entorno de ejecución J2SE RE (runtime environment). Si luego observamos la lista de software instalado en nuestro Panel de control podremos comprobar que el proceso de desinstalación permite quitar estos paquetes por separado. 
El IDE que utilicemos puede ser cualquiera de una amplia variedad disponible, por lo que podríamos reemplazar NetBeans por Eclipse u cualquier otro de nuestra preferencia.  
Si decidimos desinstalar el JDK tendremos que modificar un parámetro de NetBeans para que pase a apuntar a una instalación alternativa del JDK. El parámetro es  -jdkhome en el archivo netbeans.conf.

Instalación en Solaris (SPARC)

Los requerimientos mínimos de hardware son los siguientes:
  • Procesador: Ultra 10 workstation, 450 MHz
  • Memoria: 512 MB
  • Disco libre: 415 MB (235 MB permanentes y 180 MB temporales para la instalación)  
Después que hayamos descargado el paquete JDK + NetBeans la instalación es similar a lo ya explicado para el sistema Windows, salvo que sólo es necesario ser usuario root si se realiza la instalación en una ubicación para todo el sistema. 
Navegar hasta el archivo descargado y cambiarle los permisos:
  • Teclear: chmod 755 jdk-1_5_0_06-nb-5_0-solsparc.bin
Luego ejecutar el archivo de instalación:
./jdk-1_5_0_06-nb-5_0-solsparc.bin

Instalación en Solaris (x86)

Los requerimientos mínimos de hardware son los siguientes:
  • Procesador: Pentium III 500 MHz
  • Memoria: 512 MB
  • Disco libre: 415 MB (235 MB permanentes y 180 MB temporales para la instalación)  
Después que hayamos descargado el paquete JDK + NetBeans la instalación es similar a lo ya explicado para el sistema Windows, salvo que sólo es necesario ser usuario root si se realiza la instalación en una ubicación para todo el sistema. 
Navegar hasta el archivo descargado y cambiarle los permisos:
  • Teclear: chmod 755 jdk-1_5_0_06-nb-5_0-solx86.bin
Luego ejecutar el archivo de instalación:
./jdk-1_5_0_06-nb-5_0-solx86.bin

Instalación en Linux

Los requerimientos mínimos de hardware son los siguientes:
  • Procesador: Pentium III 500 MHz
  • Memoria: 512 MB
  • Disco libre: 415 MB (235 MB permanentes y 180 MB temporales para la instalación)  
Después que hayamos descargado el paquete JDK + NetBeans la instalación es similar a lo ya explicado para el sistema Windows, salvo que sólo es necesario ser usuario root si se realiza la instalación en una ubicación para todo el sistema. 
Navegar hasta el archivo descargado y cambiarle los permisos:
  • Teclear: chmod 755 jdk-1_5_0_06-nb-5_0-linux.bin
Luego ejecutar el archivo de instalación:
./jdk-1_5_0_06-nb-5_0-linux.bin

Documentación del JDK 

La documentación del JDK no forma parte del archivo de instalación, por lo que se debe descargar independientemente (44 MB) y está formado por un amplio conjunto de archivos HTML que se puede desempaquetar en cualquier carpeta del equipo. Para visualizar la documentación se utiliza cualquier navegador.

Herramientas básicas del JDK

Al instalar JDK nos encontraremos con un grupo básico de herramientas:
  • javac: Compilador del lenguaje Java. Convierte código fuente en bytecode.
  • java: Lanzador de aplicaciones Java. Es el intérprete que sabe procesar bytecode.
  • javadoc: Generador de documentación Java a partir del fuente Java.
  • apt: Herramienta de procesamiento de anotaciones.
  • appletviewer: Ejecuta y depura applets sin necesidad de un navegador web que sepa procesar Java.
  • jar: Crea y gestiona archivos JAR, que permiten combinar múltiples archivos en un único archivo JAR.
  • jdb: Depurador Java para la línea de comandos.
  • javah: Generador de cabeceras C y archivos fuente. Usado para codificar métodos nativos.
  • javap: Desemsamblador de archivos de clases (de bytecode a texto).
  • extcheck: Usado para detectar conflictos Jar.
 

Compilación de Java

En primera instancia no utilizaremos el IDE y haremos las tareas de compilación y ejecución utilizando la línea de comandos; aunque resulte una tarea pesada es preciso que los programadores dominen también el uso de los comandos.
Cuando hayamos instalado el lenguaje Java veremos que en la carpeta principal aparece una carpeta bin en la que encontraremos los distintos ejecutables de Java. En esta fase del estudio nos interesa presentar los tres siguientes:
  • java.exe Ejecuta aplicaciones Java.
  • javac.exe Compilador de Java.
  • javaw.exe Ejecuta aplicaciones gráficas en Windows.
A modo de comprobación, y simultáneamente para empezar a conocer el kit de desarrollo JDK, realizaremos la primera compilación con el compilador javac. Éste es un compilador desarrollado en lenguaje Java y por lo tanto, al interpretarse en tiempo de compilación, no es especialmente rápido. El comando para compilar en la línea de comandos es javac y el comando para ejecutar es java. 
Antes de compilar es preciso que tengamos algo de código, para ello desarrollaremos un programa mínimo.  

Edición del código fuente

Podemos utilizar cualquier editor de texto para crear este código fuente:
 
public class HolaJava
{
// primer programa Java
public static void main(String argv[])
{
/* instrucción ejecutable
método println */
System.out.println("Hola, Java");
}
}

 
La extensión del archivo de código fuente debe ser java y el formato debe ser ASCII. Se guarda este archivo con el nombre HolaJava.java (tener en cuenta que se hacen diferencias entre mayúsculas y minúsculas) y ahora podremos comprobar el entorno Java compilando y ejecutando. 
Aprovechemos este código fuente para tomar un primer contacto con la estructura de un programa Java, La primera línea define el nombre de la clase que estamos creando (Java es un lenguaje POO, por lo que un programa también es un objeto). La segunda línea de instrucciones define el procedimiento main, que es el punto de entrada del la aplicación. Los bloques de ejecución se encierran entre llaves y estos bloques también, tal como aprenderemos más adelante, determinan el alcance o visibilidad de las variables. Las instrucciones ejecutables se finalizan con punto y coma, en este programa hay una única instrucción ejecutable que es la que imprime el texto "Hola, Java" utilizando el método println de la clase System.out. 
El nombre del archivo de la clase (HolaJava.java) debe coincidir exactamente con el nombre de la clase (HolaJava) definida en el código fuente cuando se trate de una clase public (tal como sucede en este ejemplo). 
Tal como se puede observar en este código, por razones de legibilidad se pueden utilizar sangrías o indentado. Los comentarios pueden tomar tres formatos diferentes y en el ejemplo hemos utilizado dos, el restante es el que se emplea para documentación:
 
/**
Autor: ED
Versión: xx
*/ 

 
Todos los IDE incorporan su editor de texto para introducir el código fuente pero también existen editores que, sin pertenecer a un IDE, brindan ciertas funcionalidades que nos ayudan en la tarea de codificación. Un editor realmente interesante que reconoce el formato Java es TextPad (www.textpad.com), que si bien no es gratuito es de coste muy reducido. Al reconocer los elementos del lenguaje, TextPad utiliza diversos colores para indicar las palabras clave, los comentarios, etc. TextPad incluso incluye la posibilidad de ejecutar comandos, lo que nos permite iniciar compilaciones desde el propio editor.

Compilación y ejecución desde la línea de comandos

c:\javadir>javac HolaJava.java

c:\javadir>java HolaJava 
Hola, Java

c:\javadir> 

La compilación con javac sigue la premisa de no informar nada cuando todo ha ido bien. El compilador tiene un parámetro opcional CLASSPATH que permite indicar el lugar en donde Java buscará las clases.
Tal como hemos mencionado, javac es sólo uno de los muchos compiladores Java, existen otros compiladores escritos en C/C++ que son más rápidos, al no requerir interpretación. Entre estos compiladores destaca Jikes, que está disponible para Linux y Windows, con un mejor sistema de mensajes que javac. 

Opciones del compilador

La sintaxis del comando de compilación es la siguiente:
 
javac [opciones] [fuente.java] [@archivoargs] 

 
Siendo:
  • opciones: opciones de la línea de comandos.
  • fuente: uno o más archivos fuente para compilar. Los sufijos de los archivos de código fuente deben ser java y para los archivos de  clases debe ser class. se
  • @archivoargs uno o más archivos que listan las opciones. 
 
Cuando se quieren compilar varios archivos fuente se utiliza un archivo para incluir los nombres de archivo, separando los nombres por espacios o fin de línea y luego se utiliza el archivo en el comando javac, precedido con un carácter @.
De modo predeterminado, el compilador coloca la salida compilada en la misma carpeta que el código fuente. Esto se puede modificar con el parámetro –d.
Veamos ahora las principales opciones del comando javac.
Podemos pasar parámetros en la línea de comandos, pero eso no significa que el programa los utilizará con seguridad. Si la aplicación no contempla el uso de parámetros, los datos que pasemos desde la línea de comandos no tendrán ningún efecto.   
 

-classpath  rutaacceso

La opción classpath especifica en dónde debe buscar javac las clases que no son extensiones de Java y que están referenciadas en el código fuente que se quiere compilar. Las clases pueden estar en carpetas o en archivos zip dentro de la ruta de acceso especificada. En el parámetro rutaacceso se pueden especificar varias carpetas; en Unix separadas por dos puntos y en Windows por punto y coma. En la opción classpath colocada en el comando javac se superpone a lo especificado en la variable de entorno CLASSPATH. 
Lo normal es que si se especifica  classpath entre las rutas de acceso indicadas en el parámetro se incluya la carpeta predeterminada de clases, además de las rutas de acceso que se quieran añadir. Si se omite esta opción se utiliza el valor de la variable de entorno CLASSPATH y si ésta no se especificó se utiliza la carpeta vigente.
Cuando en la opción -classpath o en la variable de entorno CLASSPATH se especifican varias rutas de acceso, la búsqueda comienza con la primera ruta de acceso especificada y después sigue en orden; cuando se encuentra lo buscado, se interrumpe la búsqueda secuencial, por lo que el orden de codificación es importante.
 

-d carpeta  

La opción –d especifica la carpeta raíz en la que javac colocará los archivos compilados. Esta opción se utiliza cuando se quiere colocar los archivos compilados en una carpeta diferente que la del código fuente.
 

-encoding nombre

Especifica el nombre de la codificación del archivo fuente, por ejemplo, UTF-8. Si no se especifica se usa el convertidor predeterminado de la plataforma.
 

-g

La opción –g añade información de depuración, incluyendo variables locales. De manera predeterminada, sólo se genera información de los números de línea y del archivo fuente.
También admite el formato –g:(palabraClave): siendo palabraClave uno de estos valores:
  • none: No genera ninguna información de depuración.
  • source: Información de depuración del archivo fuente.
  • lines: Información de depuración del número de línea.
  • vars:   Información de depuración de las variables locales.
 

-nowarn

Desactiva los mensajes de advertencia.  
 

-source versión 

Especifica la versión del código que se debe aceptar. Los valores del parámetro versión son los siguientes:
  • 1.3: El compilador no acepta aserciones y otras funcionalidades del
  • lenguaje incluidas después de la versión JDK 1.3.
  • 1.4: El compilador acepta aserciones, las que se incluyeron en el JDK 1.4.
  • 1.5: El compilador acepta genéricos y otras funcionalidades incluidas en la versión 1.5. Es el valor predeterminado.
  • 5: Otro modo de indicar 1.5.
 
-jopción-java
Javac pasa al intérprete la cadena opción-java. Esta opción no se puede incluir en los archivos de argumentos.  
 

Ejemplos de compilación

Ya hemos visto cómo se compila un único programa. Ahora veremos cómo realizar una compilación múltiple. Primero los haremos con un comando javac con dos parámetros (los nombres de los programas) y después haremos la misma compilación pero utilizando un archivo de argumentos. El resultado es el mismo en ambos casos.
 
C:>javac Hola1.java Hola2.java

Si esos dos programas fuesen los únicos en la carpeta podríamos utilizar este comando:
 
C:>javac *.java
 
Utilizando un archivo de argumentos:
 
C:>javac @archivo1

El contenido del archivo archivo1 es el siguiente:
Hola1.java
Hola2.java

 
Si quisiéramos definir opciones podríamos hacer lo siguiente:
 
C:>javac @opciones1 @archivo1

El contenido del archivo opciones1 puede ser el siguiente:
-g:source
-d c:\misclases
-nowarn

 
El contenido del archivo archivo1 puede ser el siguiente:
Hola1.java
Hola2.java

 

Variable de entorno Classpath

La ruta de acceso a las clases se puede establecer de dos maneras:
  • Con la opción –classpath del compilador.
  • Con la variable de entorno classpath.
El resultado de ambas alternativas es equivalente pero la opción del compilador permite una mejor personalización, ya que la segunda alternativa actúa de modo general.
Para asignar la variable de entorno se utiliza:
 
C:>set CLASSPATH=rutaacceso1;rutaacceso2...

 
Las rutas de acceso corresponden a archivos .jar, .zip o .class. 
En el caso de archivo .jar o .zip que contienen archivos de clases, la ruta de acceso corresponde al archivo contenedor. 
En el caso de archivo .class pueden presentarse dos alternativas:
  • Si las clases se encuentran en un paquete con nombre, la ruta de acceso corresponde a la carpeta que contiene el paquete raíz (el primer paquete en el nombre completo del paquete).
  • Se indica directamente la carpeta en donde se encuentran las clases.
Para limpiar la variable de entorno CLASSPATH:
C:>set CLASSPATH= 

 
En Windows también se puede asignar o desasignar la variable CLASSPATH desde el Panel de control.
La variable de entorno Classpath tiene menor prioridad que la opción en el propio comando. Por otra parte, el orden de búsqueda de las clases es el siguiente: 
1. Clases de la plataforma Java
2. Clases de extensión Java
3. Classpath.

Compilación con un IDE 

Un entorno de desarrollo integrado (IDE, del inglés Integrated Development Environment) incorpora en un único programa las herramientas básicas para realizar todo el proceso de desarrollo: como mínimo, el editor de texto, el compilador, el ejecutor y el depurador. Todo el conjunto de herramientas en una única interfaz. 
En la actualidad existen muchos IDE para Java que incorporan no sólo un grupo básico de herramientas sino que incluyen muchas extensiones de diverso nivel de utilidad. El programador Java ya muy acostumbrado a la línea de comandos a veces no incrementa su productividad mediante el uso del IDE, pero por lo general permiten un desarrollo más organizado y se logra un mejor rendimiento general.
NetBeans es un IDE que se descarga junto con el JDK y tiene la ventaja de ser bueno, gratuito e utilizable en Unix y Windows.   
Eclipse es otro IDE para Java, y otros lenguajes, utilizable en varias plataformas, desarrollado originalmente por IBM y es la base de un producto comercial denominado WebSphere.
La elección del IDE es muchas veces una cuestión de preferencias personales; Eclipse tiende a poseer más funciones que NetBeans pero ése no es el único factor de elección. Para la plataforma Windows existen numerosos IDE para Java, además de los mencionados (JBuilder, Visual Cafe, Sun Studio, etc.).
La tarea de compilación utilizando un IDE se reduce a abrir un archivo fuente y buscar el botón de compilación. Ningún parecido al uso de la línea de comandos y cuesta creer que siga habiendo programadores que prefieren la línea de comandos a un buen IDE.
Ésta es la interfaz de NetBeans en el momento de compilar un programa, en la parte inferior se pueden observar los mensajes producidos por el compilador:
 
librophp008

Ejecución de aplicaciones Java desde la línea de comandos

Las sintaxis posibles son las siguientes:
 
java [ opciones ] clase [ argumento ... ]
java [opciones] -jar archivo.jar [ argumento ... ]

 
Si no se quiere asociar una ventana de consola de comandos se usan los siguientes comandos:
 
javaw [opciones] clase [ argumento ... ]
javaw [opciones] -jar archivo.jar [ argumento ... ]

Siendo:
  • opciones: Opciones de la línea de comandos
  • clase: Nombre de la clase que se ejecutará.
  • archivo.jar: Nombre del archivo .jar que se invocará.
  • argumento: argumentos que se pasan opcionalmente a la función main.
 
La ejecución de aplicaciones Java se realiza mediante el comando java o javaw, que se encarga de iniciar el entorno de ejecución Java (jre), cargando la clase invocada y pasando el control a la función main de la clase.
El método main se debe declarar como público y estático y recibe una matriz de cadena como parámetros. La sintaxis estándar de la función main es la siguiente:
 
Public static void main (String args[])

 
Tal como se puede observar la función no devuelve ningún valor (void). 
Si en el uso del comando se utiliza un archivo .jar, entonces es obligatorio el uso de la opción –jar. El jre (runtime de Java) busca la clase de inicio y el resto de las clases usadas en las siguientes ubicaciones y en este orden: en las clases Java (bootstrap), en las extensiones Java instaladas y en la ruta de acceso del usuario.
A continuación veremos las principales opciones del comando.

-client

Selecciona el cliente VM JavaHotSpot, que es la máquina virtual predeterminada con un mejor rendimiento que la máquina virtual clásica VM que mantiene la misma implementación desde la versión 1.2 del Java 2 SDK. 

-server

Selecciona el servidor VM JavaHotSpot.

-classpath o -cp

Estas opciones son equivalentes entre sí. Funcionan igual a lo explicado para el comando javac.

-Dpropiedad=valor

Asigna un valor de propiedad. Si el valor es una cadena, se utilizan comillas dobles.

-enableassertions[:"…"|:]

-ea[:"…"|:]

De manera predeterminada, las aserciones están deshabilitadas. Para habilitarlas se utiliza una de estas dos opciones que son equivalentes. Si no hay argumentos habilita aserciones en todos los paquetes. Si sólo se incluye "…" habilita las aserciones en los paquetes de la carpeta actual. También es posible habilitar aserciones para una clase.

-disableassertions[:"…"|:]

-da[:"…"|:]

De manera predeterminada, las aserciones están deshabilitadas. Para deshabilitarlas se utiliza una de estas dos opciones que son equivalentes. Si no hay argumentos deshabilita aserciones en todos los paquetes. Si sólo se incluye "…" deshabilita las aserciones en los paquetes de la carpeta actual. También es posible deshabilitar aserciones para una clase.

-enablesystemassertions o -esa

Habilita aserciones en todas las clases del sistema.

-disablesystemassertions o -dsa

Deshabilita aserciones en todas las clases del sistema.

-jar

Ejecuta un programa almacenado en un archivo de tipo JAR. Para que esta opción funcione, el manifiesto del archivo JAR debe contener una línea con el formato Main-Class: nombreclase (que será la clase de inicio, y que posee una función main pública, estática y con argumentos). Cuando se usa un archivo JAR, este archivo será la fuente de todas las clases de usuario y no se toman en cuenta los valores de rutas de acceso.

-verbose o -verbose:class

Visualiza la información acerca de cada clase cargada.

-verbose:gc

Visualiza información acerca del proceso de recolección de elementos no utilizados (basura).

-version

Visualiza la información de versión y finaliza.

-showversion

Visualiza la información de versión y continua.

-? o -help

Información de ayuda y finaliza.

-X

Muestra información acerca de opciones no estándar y finaliza.
 

Ejecución de applets con el visor de applets

Las aplicaciones Java son aplicaciones completas que se ejecutan fuera del entorno de un navegador. En cambio, los applets se ejecutan dentro de un entorno de un navegador que procese Java y sólo necesitan el entorno del tiempo de ejecución de Java.      
Para las pruebas de los applets que desarrollaremos podríamos utilizar Internet Explorer, Opera, o cualquier navegador que admita Java, pero en tiempo de pruebas eso puede resultar sumamente pesado en lo que se refiere a carga de procesador y de memoria, por esas razones  JDK incluye en su conjunto básico de herramientas un visualizador de applets denominado appletviewer. Esta herramienta no requiere el uso de un navegador y como resultado tendremos unas pruebas más ágiles. La sintaxis es la siguiente:
 
appletviewer [opciones] urls...

Suponiendo que tenemos un archivo html que contiene un applet podríamos ejecutarlo con este comando:
 
>appletviewer test.html

El visualizador de applets abrirá el archivo test.html y buscará la etiqueta <APPLET> que especifica el programa, lo ejecutará y lo mostrará en su propia ventana. Todo este proceso es mucho más rápido que si utilizáramos un navegador clásico.  
Tal como se puede ver en la sintaxis, la herramienta también permite el uso de algunas opciones.

-debug

Inicia el applet en el depurador de Java, jdb.

-encoding nombrecodificación

Especifica el nombre de la codificación del archivo .html.

-Jopciónjava

Pasa la cadena opciónjava como un argumento al intérprete java que ejecuta al appletviewer. El argumento no puede contener espacios. Si hay múltiples argumentos, todos deben comenzar con el prefijo -J.

 
izq sup der

Deja un comentario