Ejemplo sencillo de Applet

De ChuWiki
Saltar a: navegación, buscar

Un Applet no es más que un programa java al que se referencia desde una página html y se ejecuta en el navegador. Dicho de otra forma, si visitamos con nuestro navegador esa página, veremos en ella ejecutarse el programa java, el Applet.

Vamos a hacer aquí un pequeño ejemplo tonto, para ver cómo se hace un Applet.


Contenido

Hacer el código de nuestro Applet

En primer lugar, tenemos que hacer una clase Java que herede de JApplet. Esta clase será la que tenga nuestro código en java. Tenemos dos posibles métodos que podemos sobreescribir de la clase padre: el método init() y el método start(). Al primero se le llamará una única vez cuando nuestro applet se cargue en el navegador para ejecutarse. Al método start() se le llamará cada vez que se revisite con el navegador la página que tiene nuestro Applet. A nosotros, de momento, nos bastará con el métod init() del Applet.

Puesto que un JApplet es un JComponent más de java, podemos usarlo para añadir en él los componentes gráficos de nuestra ventana: JLabel, JButton, JTextField, etc. Nosotros, como es un ejemplo simple, añadiremos nada más un JLabel con el texto "Applet hola mundo".

El código de nuestro Applet puede quedar así

package com.chuidiang.ejemplos.applet;

import javax.swing.JApplet;
import javax.swing.JLabel;

/**
 * Ejemplo sencillo de applet
 * @author Chuidiang
 *
 */
public class EjemploApplet extends JApplet {
	/**
	 * Pone un JLabel con el texto "Applet hola mundo" en el JApplet, de
	 * forma que es lo que se visualizará en el navegador.
	 */
	public void init() {
		JLabel etiqueta = new JLabel("Applet hola mundo");
		add(etiqueta);
	}
}

El programa, por supuesto, debemos compilarlo y generar el .class

Hacer la página de nuestro Applet

Como hemos comentado, el Applet debe ser referenciado por una página html, que es la que se visualizará en el navegador. Así que nos hacemos una página html. Para referencia el Applet, usamos el tag html <applet>. En este tag debemos indicar como mínimo el nombre de nuestra clase y el ancho y alto con el que queremos que se visualice nuestro Applet. La página html puede quedar como esta

<html>
   <head>
      <title>Ejemplo de Applet</title>
   </head>
   <body>
      <applet code="com.chuidiang.ejemplos.applet.EjemploApplet"
         width="500" height="200">
      Debes tener instalado java
      </applet>
   </body>
</html>


Situación de la página html y del .class

Para que el navegador sea capaz de encontrar el .class del Applet a partir de la página html, debemos colocarlos juntos, en el mismo directorio. Sin embargo, tal cual indica java y al tener nuestro Applet un package en el código, debemos hacer una estructura de directorios similar a la del package y meter el .class dentro. De esta forma, la página html y el .class del Applet deberían estar ubicados así

+-- ejemplo-applet.html
+-- com
    +-- chuidiang
        +--- ejemplos
             +---- applet
                   +---- EjemploApplet.class

es decir, el directorio com en paralelo con el fichero ejemplo-applet.html y debajo de com toda la estructura chuidiang/ejemplos/applet/EjemploApplet.class

En el tag <applet> de la página html hemos puesto en el atributo code el nombre de nuestra clase, con todos sus package delante.

Listo. Visualizando en el navegador la página ejemplo-applet.html, deberíamos ver el applet funcionando.


El Applet y los jar

Si nuestro Applet es más complejo y requiere varias clases, lo normal es que hagamos un jar con todas esas clases. También es posible, si nuestro Applet es lo suficientemente complejo, que incluso necesitemos otros jar de herramientas de terceros que usemos.

Para indicar al navegador que debe cargar todos estos jar, tanto el nuestro como los de los demás, existe el atributo archive del tag <applet>. En este archive podemos poner todos los jar que necesitemos separados por comas.

<applet code="com.chuidiang.ejemplo.applet.EjemploApplet" archive="un.jar, otro.jar, mas.jar" ...

Eso sí, todos estos jar deben estar subidos junto a nuestra página html.

Restricciones en los Applet

Un Applet es un programa que se ejecuta en el navegador del usuario que visita la página web, es decir, se ejecuta en SU ordenador. Por ello, sería mala idea dejar que un Applet pudiera hacer cualquier cosa. Yo podría hacer un Applet que borrara el disco duro y símplemente visitando la página donde yo lo ponga, se borraría el disco duro del visitante.

Por ello, el navegador restringe severamente las cosas que un Applet puede hacer. Un Applet no puede acceder a NINGÚN recurso del ordenador donde se está ejecutando. No puede leer ni escribir en el disco duro, manejar la impresora, etc, etc, etc. Tampoco puede establecer conexiones de ningún tipo con otros ordenadores, con la única excepción del servidor web donde se alberga el Applet.

Si quieres que un Applet pueda hacer más cosas, hay que firmarlo digitalmente. Al hacer esto, cuando se visualize el Applet en el navegador, este sacará un aviso al usuario, indicando que el Applet está firmado digitalmente por tal persona o entidad, y le pregunta al usuario si confía en dicha persona o entidad. Si el usuario dice que confía, el Applet tendrá entonces los permisos para hacer lo que necesite. Si el usuario no confía, el Applet sigue igual de restringido que antes.


Acceso a recursos

Como hemos comentado, el Applet sólo puede acceder a recursos que estén en el servidor web donde está alojado. Sin embargo, tampoco puede acceder a esos ficheros, iconos o lo que sea como si fueran ficheros normales, puesto que el disco duro del servidor no está directamente accesible. Cualquier acceso del Applet debe hacerse a través del servidor web, usando el protocolo http.

Para facilitar este acceso, la clase JApplet tiene métodos que nos facilitan estos accesos al servidor web a través de http. Algunos de estos métodos son play() y getAudioClip() para acceso a ficheros de sonido, getImage() para acceso a imágenes, etc.

Al ser a través de servidor web, NO podemos escribir en el servidor. Así que no podemos abrir un fichero del servidor y escribir en él.

En cuanto a conexiones a base de datos, podemos acceder a una base de datos que esté alojada en el mismo servidor web que nuestro Applet, pero NO podemos abrir conexiones con ningún otro sitio.


AppletViewer

Java viene con una aplicación llamada appletviewer ubicada en el directorio bin de donde tenemos instalado java. Esta aplicación sirve para arrancar y ver la página html del applet sin necesidad de abrir el navegador. Nos sirve como herramienta de pruebas mientras estamos desarrollando nuestro Applet.

appletviewer ejemplo-applet.html