El primer applet

prev.gif (997 bytes)chapter.gif (1105 bytes)home.gif (1054 bytes)next.gif (998 bytes)

Introducción

El primer applet

Insertando el applet en una página web

Comprensión de los archivos .class (deployment)


El lenguaje Java se puede usar para crear dos tipos de programas: los applets y las aplicaciones. Un applet es un elemento más de una página web, como una imagen o una porción de texto. Cuando el navegador carga la página web, el applet insertado en dicha página se carga y se ejecuta.

Mientras que un applet puede transmitirse por la red Internet una aplicación reside en el disco duro local. Una aplicación Java es como cualquier otra que está instalada en el ordenador. La otra diferencia es que un applet no está autorizado a acceder a archivos o directorios del ordenador cliente si no es un applet completamente fiable.

 

El primer applet

disco.gif (1035 bytes)applet1: Applet1.java

Para crear un applet tenemos que definir una clase denominada Applet1 derivada de Applet. La  primera sentencia import nos proporciona información acerca de las clases del paquete applet. Dicho paquete contiene las clases necesarias para crear applets que se ejecutan en la ventana del navegador, entre las cuales está la clase base Applet.

import java.applet.*;
public class Applet1 extends Applet {
}

El siguiente paso es dar funcionalidad a la clase, definir nuestras propias funciones miembro o redefinir funciones de la clase base Applet.

Definimos la función init para establecer el color de fondo del applet mediante setBackground. La función init se llama cuando se carga el applet.

public class Applet1 extends Applet {
    public void init(){
        setBackgroung(Color.white);
    }
//...
}

A continuación, vamos a mostrar un mensaje, para ello definimos el método paint. El método paint nos suministra el contexto gráfico g, un objeto de la clase Graphics con el cual podemos dibujar en el área de trabajo del componente llamando desde dicho objeto g a las funciones definidas en la clase Graphics.

Para mostrar un mensaje, llamamos desde el objeto g a la función miembro drawString, el primer argumento es el string que deseamos mostrar, y los dos números indican las coordendas de la línea base del primer carácter.

import java.applet.*;

public class Applet1 extends Applet {
    public void init(){
        setBackgroung(Color.white);
    }
    public void paint(Graphics g){
        g.drawString("Primer applet", 10, 10);
    }
}

Un applet, no es como una aplicación que tiene un método main. El applet está insertado en una página web que se muestra en la ventana del navegador. El navegador toma el control del applet llamando a algunos de sus métodos, uno de estos es el método paint que se llama cada vez que se necesita mostrar el applet en la ventana del navegador.

Cuando el applet se carga, el navegador llama a su método init. En este método el programador realiza tareas de inicialización, por ejemplo, establecer las propiedades de los controles, disponerlos en el applet, cargar imágenes, etc.

El método init se llama una sóla vez. Después, el navegador llama al método paint.

A continuación, se llama al método start. Este método se llama cada vez que se accede a la página que contiene el applet. Esto quiere decir, que cuando dejamos la página web que contiene el applet y regresamos de nuevo pulsando en el botón "hacia atrás" el método start vuelve a llamarse de nuevo, pero no se llama el método init.

Cuando dejamos la página web que contiene el applet, por ejemplo, pulsando en un enlace, se llama al método stop.

Finalmente, cuando salimos del navegador se llama al método destroy.

 

Insertando un applet en una página web

Las etiquetas HTML como <H1>, <TABLE>, <IMG>, etc. señalan el tamaño y la disposición del texto y las figuras en la ventana del navegador. Cuando Sun Microsystems desarrolló el lenguaje Java, se añadió la etiqueta que permite insertar applets en las páginas web. Como otras etiquetas tiene un comienzo <APPLET> y un final señalado por </APPLET>

En el Entorno Integrado de Desarrollo (IDE) de JBuilder creamos un proyecto nuevo, en este caso un applet. JBuilder genera la clase que describe el applet con algunos métodos y la guarda en un archivo cuyo nombre es el mismo que el de la clase y con extensión .java. Genera también, un archivo HTML para la documentación del proyecto, y el archivo HTML de la página que contiene el applet tal como se ve en el siguiente cuadro

<HTML>
<HEAD>
<TITLE>
HTML Test Page
</TITLE>
</HEAD>
<BODY>
applet1.Applet1 will appear below in a Java enabled browser.<BR>
<APPLET
  CODEBASE = "."
  CODE     = "applet1.Applet1.class"
  NAME     = "TestApplet"
  WIDTH    = 400
  HEIGHT   = 300
  HSPACE   = 0
  VSPACE   = 0
  ALIGN    = middle
>
</APPLET>
</BODY>
</HTML>

Cuado se compila el applet se producen archivos cuya extensión es .class. Uno de estos archivos es el que resulta de la compilación de la clase que describe el applet, en nuestro caso Applet1.class situado en el subdirectorio applet1.

Si queremos insertar un applet en una página web, la forma más segura es copiar la etiqueta <APPLET> ... </APPLET> desde la página web generada por JBuilder a nuestra página.

Dentro de la etiqueta applet el parámetro más importante es CODE que señala el nombre del archivo cuya extensión es .class, y cuyo nombre coincide con el de la clase que describe el applet.

Los valores de los parámetros WIDTH y HEIGHT determinan las dimensiones del applet. En este caso el applet tiene una anchura de 400 y una altura de 300.

El nombre del applet, parámetro NAME, es importante cuando se pretende comunicar los applets insertados en una página web.

 

Comprensión de los archivos .class (deployment)

Cuando el proyecto es complejo, al compilarlo se crean varios archivos .class en el mismo subdirectorio. Resulta engorroso trasladarlos desde nuestro ordenador al servidor cuando publicamos las páginas web. Se corre el peligro de mezclar los archivos o perder alguno por el camino. Para facilitar esta tarea, se puede comprimir todos los archivos .class resultantes del proceso de compilación de un proyecto en un único archivo cuya extensión es .jar, mediante un asistente denominado Deployment Wizard

deploy.gif (7750 bytes)

Excluímos del proceso (deployment) los archivos con extensión .html. Introducimos en el campo Archive Output Path el nombre del archivo comprimido cuya extensión es .jar. Normalmente, le daremos el mismo nombre que tiene el proyecto.

En las versiones anteriores a la 1.1, si un applet estaba formado por varias clases o tenía recursos como imágenes GIF o archivos de sonido, cada uno de los archivos se tenía que descargar individualmente del servidor. Esto suponía una carga extra para el servidor, y la necesidad de que el usuario tuviese que esperar hasta que todos los componenetes que forman el applet estuviesen disponibles.

Para solventar este problema Sun introdujo los archivos JAR, que son similares a los archivos ZIP, de hecho se pueden descomprimir con la misma herramienta WinZip. De este modo, todos los archivos que forman el applet están situados en un único archivo comprimido, con lo que disminuye el trabajo del servidor y el tiempo de descarga.

Los archivos JAR incluyen una archivo denominado MANIFEST.MF en el subdirectorio META-INF que contiene la lista de los componentes del archivo JAR y puede incluir firmas digitales.

intro1.gif (1518 bytes) Supongamos que colocamos el archivo applet1.jar en el mismo subdirectorio que documento HTML que contiene el applet, la etiqueta <APPLET>... </APPLET> se escribe de la forma que sigue. Fijarse que aparece un nuevo parámetro ARCHIVE que indica el nombre y la ubicación del archivo comprimido .jar.

 

<APPLET
  CODE     = "applet1.Applet1.class"
  ARCHIVE =  "applet1.jar"
  WIDTH    = 400
  HEIGHT   = 300
  HSPACE   = 0
  VSPACE   = 0
  ALIGN    = middle
>
</APPLET>

 

intro2.gif (1687 bytes) Si el archivo applet1.jar está en un subdirectorio denominado jars por debajo del documento HTML escribimos

 

<APPLET
  CODE     = "applet1.Applet1.class"
  ARCHIVE =  "jars/applet1.jar"
  WIDTH    = 400
  HEIGHT   = 300
  HSPACE   = 0
  VSPACE   = 0
  ALIGN    = middle
>
</APPLET>

 

intro3.gif (1669 bytes) Si el archivo applet1.jar está en un subdirectorio denominado jars al mismo nivel que el subdirectorio que contiene el documento HTML escribimos

 

<APPLET
  CODE     = "applet1.Applet1.class"
  ARCHIVE =  "../jars/applet1.jar"
  WIDTH    = 400
  HEIGHT   = 300
  HSPACE   = 0
  VSPACE   = 0
  ALIGN    = middle
>
</APPLET>