En el primer artículo de este curso de programación en Java habíamos tratado las bases de preparación del entorno de trabajo y lo fundamental de las herramientas de desarrollo —compilador, visor de bytecodes y semejantes—. También nos habíamos aproximado a las aplicaciones independientes en modo texto. Sin embargo, aun siendo Java un lenguaje de aplicación general, su razón de ser es la gran facilidad de programación gráfica multiplataforma y a eso vamos.

En este segundo artículo hablaremos de los applets para incluir en documentos HTML, de las aplicaciones independientes gráficas y de cómo programar lo más básico de exposición de textos y pase de parámetros desde documentos HTML a applets. También se muestran ejemplos de cómo gestionar los eventos más elementales para salir, elegantemente, de nuestras aplicaciones independientes Java, o de los applets visualizados mediante la utilidad AppletViewer de Sun Microsystems.

Los applets para Internet

Los applets de Java, como habíamos comentado en nuestro anterior artículo, son miniaplicaciones que se ejecutan dentro de una página HTML; de ahí sus peculiaridades. Primeramente, deberemos saber que comienzan cargando el constructor de la clase y, si está explícitamente definido, el método init(). Advierta que no es preciso que exista un método init() para que un applet sea plenamente funcional —ni por supuesto un main(), que al contrario que en una aplicación independiente no tiene significado alguno para él, véase nuestro anterior artículo en PC World nº 143, de mayo de 1998—.

Como una primera aproximación, observe el Listado 5, allí se recoge el código mínimo para un applet (recuerde que para poder utilizar los listados de los artículos anteriores, se sigue la numeración desde el primer artículo del curso). No tiene nada de extraordinario, tiempo habrá de ser más vistosos, sólo muestra un mensaje de bienvenida. Lo más peculiar es la presencia de dos líneas que importan clases estándar de Java:

import java.applet.Applet;

import java.awt.Graphics;

Advierta la sintaxis empleada, que comienza con la palabra reservada import y sigue con la clase a importar, refiriéndonos a ella con separaciones con un punto según el árbol jerárquico de directorios/subdirectorios del JDK; esto es, java.applet.Applet, se refiere a la clase Applet que se encuentra en directorio applet de las clases estándar java. También podría indicarse java.awt.*, para denotar todas las clase del subdirectorio Awt. La primera clase, carga los métodos necesarios para hacer funcionar el applet; la segunda los necesarios para poder dibujar el contenido en pantalla —en lo sucesivo, casi serán una constante en todos nuestros desarrollos—. El único método utilizado es paint() y note que la clase base deriva de Applet, declarándose de la forma:

public class NombreClase extends Applet

La clase debe ser pública y debe guardarse en un archivo con la denominación NombreClase.java. Con anterioridad hemos explicado los pasos para compilar un archivo Java y más abajo hablaremos de cómo visualizar un applet en un documento HTML.

Para centrarnos en cómo funciona la ejecución de un applet, deberemos saber que durante su inicialización, un applet comprueba la existencia de redefinición de los métodos siguientes, según el orden en que se exponen:

1) init(). Se suele utilizar para inicializar datos del programa y para fijar variables y elementos gráficos que incluirá. Este método se llama sólo la primera vez que se carga un applet en el sistema.

2) start(). Se ejecuta después de init() y cada vez que se vuelve a recargar la página HTML que contiene el applet.

3) paint() Es el método encargado de dibujar el applet y sus elementos gráficos; se llama cada vez que hay una modificación del applet en pantalla, por ejemplo porque se minimice o quede solapado por otra ventana.

4) update(). Actualiza el contenido de un applet; es un método que debe llamarse a petición del programador cuando se realicen cambios en el contenido, como puede ser la alteración de elementos, cambios de color, etc.

5) stop(). Es un método llamado cuando se abandona el applet; un lugar ideal para detener ejecuciones de código en trasfondo, por ejemplo en la programación multihilo (o multihebra), en la que se programan secuencias de ejecución paralelas de diversos procesos.

6) destroy(). Es el último paso de la destrucción de todo rastro del applet en el navegador; aquí se liberan todos los recursos de memoria reservados por el applet y tiene que ver directamente con el proceso de recolección de basura (garbage collection).

Para visualizar un applet precisaremos disponer de un documento HTML que lo cargue, mediante la etiqueta denominada <APPLET>. Esta consta de diversos parámetros, según la sintaxis:

<APPLET

CODE=”NombreClase.class”

[CODEBASE=”URL”]

[ALT=”texto”]

[NAME=”nombre”]

WIDTH=x

HEIGHT=y

[ALIGN=”tipo”]

[VSPACE=v]

[HSPACE=h]

>

[<PARAM NAME=”atributo”

VALUE=”valor”>]

[<PARAM…>]

[etiquetas opcionales HTML]

</APPLET>

La etiquetas, atributos y parámetros entre corchetes […] son opcionales y, en caso de incluirse, no se escribirán esos corchetes, sólo se ponen cómo orientación. Por tanto, estrictamente sólo es preciso indicar la referencia del archivo de clase Java (NombreClase.class) y las dimensiones del applet dentro del documento HTML.

El significado de los atributos de la etiqueta <APPLET> es el que sigue:

CODE. Toma la referencia de la clase Java que contiene el código a ejecutar. Recuerde que será un archivo compilado del tipo .class.

CODEBASE. Es opcional y se refiere a una dirección URL desde la que se obtendrá el archivo .class a que se refiere CODE. Naturalmente, se vuelve una referencia obligada si el archivo .class no se encuentra en la ruta de acceso del documento HTML.

ALT. Texto alternativo que se mostrará en los navegadores que no tengan la capacidad de mostrar applets, o que tengan esa opción desactivada.

NAME. Nombre identificador del applet; servirá para referenciarlo en la página HTML y permitir comunicarse con otros applets o con códigos en lenguaje script —JavaScript o VB Script—.

WIDTH y HEIGHT. Ancho y alto en puntos de pantalla —pixels— que ocupara el applet.

ALIGN. Modo de alinear el área ocupada por el applet. Las posibilidades son las mismas que con la etiqueta IMG, de imágenes insertadas en HTML (posicionamientos left, right, top, texttop, middle, absmiddle, baseline, bottom o absbottom).

VSPACE. Espacio libre encima y debajo del applet. Se especifica en pixels.

HSPACE. Espacio libre a izquierda y derecha del applet. Se especifica en pixels.

Una vez vistos los atributos, los parámetros, definidos mediante la etiqueta HTML anidada <PARAM>, son NAME (Nombre del parámetro que recoge el applet y lo interpretará en su código) y VALUE (valor del parámetro, que puede ser cualquier tipo de datos, como cadenas de caracteres o valores numéricos).

Estos parámetros también pueden escribirse en minúsculas y sirven para inicializar applets durante la carga de la página HTML, por ejemplo, para exponer un mensaje que pueda ser cambiado de p&#