Fundamentos de Java Applet
Un Applet es un programa Java. Generalmente se ejecuta dentro de un navegador web que admita Java. Debido a que tiene soporte completo de la API de Java, un Applet es una aplicación Java con todas las funciones.
Las siguientes son diferencias importantes entre una aplicación Java independiente y un programa applet:
- En Java, la clase Applet hereda de la clase java.applet.Applet.
- La clase Applet no define main(), por lo que un programa Applet no llama al método main().
- Un Applet está diseñado para incrustarse en una página HTML.
- Cuando un usuario navega por una página HTML que contiene un Applet, el código del Applet se descarga en la máquina del usuario.
- Para ver un Applet se necesita una JVM. La JVM puede ser un complemento del navegador web o un entorno de ejecución independiente.
- La JVM en la máquina del usuario crea una instancia de la clase Applet y llama a varios métodos durante el ciclo de vida del Applet.
- Los Applets tienen reglas de seguridad estrictas impuestas por el navegador web. El mecanismo de seguridad de los Applets se denomina seguridad de espacio aislado (sandbox).
- Las demás clases que necesita un Applet se pueden descargar en forma de archivo Java Archive (JAR).
Ciclo de vida de un Applet
Cuatro métodos de la clase Applet nos proporcionan un marco sobre el cual se pueden desarrollar applets:
- init: El propósito de este método es proporcionar cualquier inicialización necesaria para tu Applet. Se llama después de procesar las etiquetas param dentro de la etiqueta Applet.
- start:Después de que el navegador llame al método init, este método se llama automáticamente. Este método se llama cada vez que el usuario vuelve a la página que contiene el Applet desde otra página.
- stop:Cuando el usuario abandona la página que contiene el Applet, este método se llama automáticamente. Por lo tanto, este método puede llamarse repetidamente en el mismo Applet.
- destroy: Este método solo se llama cuando el navegador se cierra normalmente. Dado que un Applet solo es válido en una página HTML, no debes omitir la liberación de ningún recurso después de que el usuario abandone la página que contiene el Applet.
- paint:Este método se llama inmediatamente después del método start(), o cuando el Applet necesita redibujarse en el navegador. El método paint() en realidad se hereda de java.awt.
"Hello, World" Applet:
A continuación se muestra un programa Applet simple, HelloWorldApplet.java:
Código del archivo HelloWorldApplet.java:
Estas declaraciones import importan las siguientes clases a nuestra clase Applet:
Sin estas declaraciones import, el compilador de Java no podría reconocer las clases Applet y Graphics.
Clase Applet
Cada Applet es una subclase de la clase java.applet.Applet. La clase Applet base proporciona métodos que las clases derivadas pueden invocar para obtener información y servicios del contexto del navegador.
Estos métodos hacen lo siguiente:
- Obtener los parámetros del Applet
- Obtener la ubicación de red del archivo HTML que contiene el Applet
- Obtener la ubicación de red del directorio de la clase Applet
- Imprimir información de estado del navegador
- Obtener una imagen
- Obtener un clip de audio
- Reproducir un clip de audio
- Ajustar el tamaño de este Applet
Además, la clase Applet proporciona una interfaz que el visor (Viewer) o el navegador utiliza para obtener información del Applet y controlar la ejecución del Applet.
El visor puede:
- Solicitar información sobre el autor, la versión y los derechos de autor del Applet
- Solicitar la descripción de los parámetros reconocidos por el Applet
- Inicializar el Applet
- Destruir el Applet
- Comenzar la ejecución del Applet
- Finalizar la ejecución del Applet
La clase Applet proporciona implementaciones predeterminadas para estos métodos, que se pueden sobrescribir cuando sea necesario.
El applet "Hello, World" está escrito según el estándar. El único método sobrescrito es el método paint.
Invocación de Applet
Un Applet es un programa Java. Generalmente se ejecuta dentro de un navegador web que admita Java. Debido a que tiene soporte completo de la API de Java, un Applet es una aplicación Java con todas las funciones.
La etiqueta <applet> es la base para incrustar un Applet en un archivo HTML. A continuación se muestra un ejemplo de cómo invocar un applet "Hello World":
Código HTML:
Nota:Puedes consultar la etiqueta Applet de HTML para obtener más información sobre cómo invocar un applet desde HTML.
Los atributos de la etiqueta <applet> especifican la clase Applet que se va a ejecutar. width y height se utilizan para especificar el tamaño inicial del panel de ejecución del Applet. El Applet debe cerrarse con la etiqueta </applet>.
Si el Applet acepta parámetros, los valores de los parámetros deben agregarse en la etiqueta <param>, que se encuentra entre <applet> y </applet>. El navegador ignora el texto y otras etiquetas entre las etiquetas del applet.
Los navegadores que no admiten Java no pueden ejecutar <applet> y </applet>. Por lo tanto, cualquier cosa que se muestre entre las etiquetas y que no esté relacionada con el applet será visible en los navegadores que no admiten Java.
El visor o el navegador busca el código Java compilado en la ubicación del documento. Para especificar la ruta del documento, se debe utilizar el atributo codebase de la etiqueta <applet>.
Como se muestra a continuación:
<applet codebase="http://amrood.com/applets" code="HelloWorldApplet.class" width="320" height="120">
Si el Applet se encuentra en un paquete que no es el paquete predeterminado, ese paquete debe especificarse en el atributo code, por ejemplo:
<applet code="mypackage.subpackage.TestApplet.class"
width="320" height="120">
Obtener parámetros del applet
El siguiente ejemplo demuestra cómo utilizar un Applet para responder a los parámetros especificados en el archivo. Este Applet muestra un patrón de tablero de ajedrez negro y un segundo color.
El segundo color y el tamaño de cada columna se especifican mediante los parámetros del Applet en el documento.
CheckerApplet obtiene sus parámetros en el método init(). También puede obtener sus parámetros en el método paint(). Sin embargo, es conveniente y eficiente que el Applet obtenga los valores al inicio y guarde la configuración, en lugar de obtener los valores en cada actualización.
El visor de applets o el navegador llama al método init() cada vez que se ejecuta un Applet. Después de cargar el Applet, el visor llama inmediatamente al método init() (Applet.init() no hace nada). Sobrescribe la implementación predeterminada de este método y añade código de inicialización personalizado.
El método Applet.getParameter() obtiene el valor de un parámetro proporcionando el nombre del parámetro. Si el valor obtenido es un número u otro dato no carácter, debe analizarse (parsearse) a partir del tipo cadena.
El siguiente ejemplo es una modificación de CheckerApplet.java:
Código del archivo CheckerApplet.java:
A continuación se muestran el método init() y el método privado parseSquareSize() de la clase CheckerApplet:
Este Applet llama a parseSquareSize() para analizar el parámetro squareSize. parseSquareSize() llama al método de biblioteca Integer. parseInt(), que analiza una cadena como un entero; cuando el parámetro no es válido, Integer.parseInt() lanza una excepción.
Por lo tanto, el método parseSquareSize() también captura excepciones y no permite que el Applet acepte entradas no válidas.
El Applet llama al método parseColor() para analizar el parámetro de color como un valor Color. El método parseColor() realiza una serie de comparaciones de cadenas para hacer coincidir el valor del parámetro con los nombres de colores predefinidos. Necesitas implementar estos métodos para que el Applet funcione.
Especificar parámetros del applet
El siguiente ejemplo es un archivo HTML que incrusta la clase CheckerApplet. El archivo HTML especifica dos parámetros para el applet mediante el uso de la etiqueta <param>.
Nota:Los nombres de los parámetros no distinguen entre mayúsculas y minúsculas.
Convertir una aplicación en un Applet
Convertir una aplicación Java gráfica (es decir, una aplicación que utiliza AWT y que se inicia con el lanzador de programas java) en un applet incrustado en una página web es muy sencillo.
A continuación se presentan varios pasos para convertir una aplicación en un Applet:
- Escriba una página HTML que contenga una etiqueta que pueda cargar el código del applet.
- Escriba una subclase de la clase JApplet y defina esa clase como public. De lo contrario, el Applet no se puede cargar.
- Elimine el método main() de la aplicación. No construya una ventana de marco (frame) para la aplicación, porque su aplicación se mostrará en el navegador.
- Mueva el código de inicialización del constructor de la ventana de marco de la aplicación al método init() del Applet. No es necesario construir explícitamente el objeto Applet; el navegador instanciará un objeto llamando al método init().
- Elimine la llamada al método setSize(). Para el Applet, el tamaño ya está establecido mediante los parámetros width y height en el archivo HTML.
- Elimine la llamada al método setDefaultCloseOperation(). El Applet no se puede cerrar; termina cuando se sale del navegador.
- Si la aplicación llama al método setTitle(), elimine esa llamada. El applet no puede tener una barra de título. (Por supuesto, puede nombrar la página web mediante la etiqueta title del HTML).
- No llame a setVisible(true); el Applet se muestra automáticamente.
Manejo de eventos
La clase Applet hereda muchos métodos de manejo de eventos de la clase Container. La clase Container define varios métodos, como processKeyEvent() y processMouseEvent(), para manejar tipos específicos de eventos, y un método que captura todos los eventos llamado processEvent.
Para responder a un evento, el Applet debe sobrescribir el método de manejo de eventos adecuado.
Código del archivo ExampleEventHandling.java:
Invoque el Applet de la siguiente manera:
Al ejecutarse inicialmente, el Applet muestra "initializing the applet. Starting the applet.", y en cuanto haces clic en el rectángulo, se muestra "mouse clicked".
Mostrar imágenes
El Applet puede mostrar imágenes en formatos como GIF, JPEG, BMP, entre otros. Para mostrar una imagen en un Applet, necesitas utilizar el método drawImage() de la clase java.awt.Graphics.
El siguiente ejemplo demuestra todos los pasos para mostrar una imagen:
Código del archivo ImageDemo.java:
Invoque el applet de la siguiente manera:
Reproducir audio
El Applet puede reproducir audio mediante la interfaz AudioClip del paquete java.applet. La interfaz AudioClip define tres métodos:
- public void play():Reproduce un clip de audio una vez desde el principio.
- public void loop(): Reproduce el clip de audio en bucle.
- public void stop(): Detiene la reproducción del clip de audio.
Para obtener un objeto AudioClip, debes llamar al método getAudioClip() de la clase Applet. Este método devuelve un resultado inmediatamente, independientemente de si la URL apunta a un archivo de audio real.
El archivo de audio no se descarga hasta que se va a reproducir.
El siguiente ejemplo demuestra todos los pasos para reproducir audio:
Código del archivo AudioDemo.java:
Invoque el applet de la siguiente manera:
Puedes usar el archivo test.wav de tu computadora para probar el ejemplo anterior.
Otras extensiones