Construcción de Applets
Un applet es un panel que va dentro de una página Web.
- Un applet no necesita definir main(String[]).
- Es el browser el que crea el applet.
- Un applet puede incluir botones, áreas de texto, listas, etc. tal
como si fuese una aplicación normal.
- Un applet no puede accesar el disco, la impresora o la red
(a no ser de que haya sido firmado digitalmente).
- Un applet sí puede comunicarse con el servidor Web que almacena
el applet.
El desarrollo de un applets contempla dos etapas:
- La definición del applet.
Esta etapa es la más compleja y consiste en definir una subclase de
Applet. En esta subclase se redefinen algunos métodos de Applet como init.
- Escribir la o lás páginas Web (en html) que referencian el
applet.
Consiste simplemente en agregar la etiqueta <applet ...> a alguna
página Web. Esta etapa no presenta mayores complicaciones.
Definición de un applet
import java.applet.*; // Contiene la clase Applet
import java.awt.*; // Las clases de la AWT
public class MyApplet extends Applet {
...
public void init() { // redefinición
... // construcción de los widgets
}
}
- Los widgets del applet se construyen en el método init.
- El browser invoca el método init en el momento de mostrar
la página Web que lo contiene.
- En seguida el applet interactúa con el usuario por medio de eventos.
Ejemplo: La misma interfaz de antes como applet.
import java.applet.*; // agregar
import java.awt.*;
import java.awt.event.*;
public class GuiApplet extends Applet { // cambiar
Button boton; // Se crean variables de instancia
Label etiq; // para cada widget
...
public void init() { // Cambiar el constructor de Gui por init
setLayout(new BorderLayout()); // asigna el layout
...
// Lo mismo que el constructor de la clase Gui
}
// No lleva main
// public static void main(String[] args) { ... }
}
...
El applet responde a los eventos de interacción de la misma forma
que lo hace una aplicación.
public class GuiApplet extends Applet {
...
public void init() {
...
texto.addActionListener(new IngresoDeTexto());
}
public class IngresoDeTexto implements ActionListener {
public void actionPerformed(ActionEvent e) {
lista.add(texto.getText()); // Agrega el ítem a la lista
texto.setText(""); // Borra el campo de texto
} } }
Este código requiere la versión 1.1 de Java, por lo que no funciona
en la mayoría de los browsers instalados, los cuales sólo implementan
la versión 1.0.2.
Escritura de la página Web
- Para mostrar el applet en una página Web se utiliza la
directiva <applet ...>:
<applet code="GuiApplet.class" codebase="Awt"
width=250 height=150>
Este es el texto que aparece en caso de que
el browser Web no tenga un intérprete de Java
</applet>
- code indica el nombre del archivo que contiene la clase
compilada.
- codebase es el directorio del servidor que contiene la
clase GuiApplet (.class) y cualquier otra clase (.class) que se
necesite para ejecutarla.
- width y height es el tamaño del rectángulo
que ocupará el applet en la página Web.
En la página Web se pueden especificar parámetros:
<applet code="GuiApplet.class" codebase="Awt"
width=250 height=150>
<param name="etiqueta" value="Hello World">
<param name="item0" value="Primer item">
</applet>
Estos parámetros se reciben en el applet por medio del método
getParameter:
String paramEtiqueta= getParameter("etiqueta");
String paramItem0= getParameter("item0");
getParameter retorna null si el parámetro demandado
no fue especificado desde la página Web.
Ejemplo: Un applet con una interfaz gráfica.
Consejos útiles sobre el desarrollo de applets para la versión 1.02:
- Muchos RAD no generan código para la versión 1.02.
- Si Ud. necesita desarrollar un applet para ser consultado hoy
mismo, debe prescindir entonces de las herramientas de ayuda
para la construcción de interfaces.
- Para determinar si una clase o un método existe o no en la
versión 1.02 consulte la API versión 1.0 (disponible en java.sun.com).
- Pruebe sus applets con el appletviewer que viene con el
kit de desarrollo para Java (JDK) versión 1.02.
Consejos útiles sobre el desarrollo de applets en general:
- En la fase de depuración, utilice appletviewer para probar
su código.
- Cuando pruebe sus applets con Netscape, tenga en cuenta que
el botón reload de Netscape sirve para cargar de nuevo
el texto en HTML. No vuelve a cargar los applets o imágenes.
Utilice shift-reload para volver a cargar applets e imágenes.
- Los mensajes de error que se produzcan durante la ejecución de un
applet serán desplegados en la consola de Java, la que se obtiene
por medio de los menús Communicator -> Tools -> Java Console.
- Los mensajes que Ud. despliegue en la salida estándar o de errores,
aparecen en la consola de Java.
- Un applet puede funcionar correctamente con appletviewer y arrojar
SecurityException en Netscape, porque Netscape es menos permisivo que
appletviewer.
Desarrollar applets debería ser sencillo, pero en la práctica no
los es debido a:
- Problemas de versiones: los browsers instalados no proveen la
última versión de Java (la que proveen los RAD y JDK).
Solución no trivial: Sun ha implementado
Java Plug-in. Se trata
de un mecanismo que actualiza semi-automáticamente el browser del cliente
a la última versión de Java. Esto ocurre cuando el usuario visita
uno de los applets que Ud. desarrolló.
- Problemas de seguridad: los browsers son muy estrictos cuando
se realiza una operación que podría comprometer la seguridad del
cliente.
Solución no trivial: firme digitalmente sus applets. Obtener la firma
y mantenerla en un lugar seguro, requiere un esfuerzo adicional.