Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Applets de Java explicados: Conceptos básicos y diferencias clave

Un applet es un programa Java que se ejecuta en un navegador web. Un applet puede ser una aplicación Java totalmente funcional porque tiene a su disposición toda la API de Java.

Existen diferencias importantes entre un applet y una aplicación Java independiente:

Ciclo de vida de un applet

Cuatro métodos en la clase Applet proporcionan el marco para construir cualquier applet serio:

Applet "Hola, Mundo"

Applet simple llamado HelloWorldApplet.java:

import java.applet.*;
import java.awt.*;
public class HelloWorldApplet extends Applet {
    public void paint(Graphics g) {
        g.drawString("Hola Mundo", 25, 50);
    }
}

Estas importaciones ponen las clases en el ámbito de nuestra clase applet:

Sin ellas, el compilador no reconocería las clases Applet y Graphics.

La clase Applet

Cada applet extiende java.applet.Applet. La clase base proporciona métodos que una clase derivada puede llamar para obtener información y servicios del contexto del navegador:

Además, la clase Applet proporciona una interfaz para que el visor o navegador obtenga información y controle la ejecución:

La clase Applet proporciona implementaciones por defecto que pueden sobrescribirse según sea necesario. El applet "Hola, Mundo" solo sobrescribe el método paint.

Invocando un applet

Un applet se invoca incrustando directivas en un archivo HTML y viéndolo a través de un visor de applets o navegador con Java habilitado.

La etiqueta <applet> es la base para incrustar un applet. Ejemplo que invoca el applet "Hola, Mundo":

<html> <title>El applet Hola, Mundo</title> <hr>
<applet code="HelloWorldApplet.class" width="320" height="120">
Si tu navegador tuviera Java habilitado, aparecería un mensaje "Hola, Mundo" aquí.
</applet> <hr> </html>

Nota – Consulta la etiqueta HTML Applet para más detalles sobre cómo llamar applets desde HTML.

El atributo code es obligatorio y especifica la clase Applet a ejecutar. width y height también son obligatorios para el tamaño inicial del panel. La directiva debe cerrarse con </applet>.

Si un applet toma parámetros, los valores se pasan con etiquetas <param> entre <applet> y </applet>. El navegador ignora texto y otras etiquetas entre las etiquetas applet.

Los navegadores sin Java no procesan <applet> y </applet>; por tanto, cualquier cosa entre las etiquetas no relacionada con el applet es visible en esos navegadores.

El visor busca el código Java compilado en la ubicación del documento. Para especificar otra ubicación, usa el atributo codebase:

<applet codebase="https://amrood.com/applets" code="HelloWorldApplet.class" width="320" height="120">

Si un applet reside en un paquete distinto al predeterminado, el paquete contenedor debe especificarse en el atributo code usando punto (.) para separar componentes:

<applet code="mipaquete.subpaquete.TestApplet.class" width="320" height="120">

Obteniendo parámetros del applet

Ejemplo que muestra cómo hacer que un applet responda a parámetros de configuración en el documento. Este applet muestra un patrón de tablero de ajedrez en negro y un segundo color.

El segundo color y el tamaño de cada cuadro pueden especificarse como parámetros.

CheckerApplet obtiene sus parámetros en init(). También podría obtenerlos en paint(), pero obtener los valores una vez al inicio es más eficiente.

El visor llama a init() una vez, inmediatamente después de cargar el applet. Applet.getParameter() obtiene un parámetro dado su nombre (el valor siempre es una cadena). Si el valor es numérico u otro dato no caracter, la cadena debe parsearse.

Esqueleto de CheckerApplet.java:

import java.applet.*;
import java.awt.*;
public class CheckerApplet extends Applet {
    int squareSize = 50;
    public void init() {}
    private void parseSquareSize(String param) {}
    private Color parseColor(String param) {}
    public void paint(Graphics g) {}
}

Métodos init() y parseSquareSize():

public void init() {
    String squareSizeParam = getParameter("squareSize");
    parseSquareSize(squareSizeParam);
    String colorParam = getParameter("color");
    Color fg = parseColor(colorParam);
    setBackground(Color.black);
    setForeground(fg);
}
private void parseSquareSize(String param) {
    if (param == null) return;
    try { squareSize = Integer.parseInt(param); }
    catch (Exception e) { /* mantener valor por defecto */ }
}

parseSquareSize() llama a Integer.parseInt(), que lanza excepción si el argumento es inválido; se captura para no fallar por mala entrada.

parseColor() compara cadenas para coincidir con nombres de colores predefinidos. Debes implementar estos métodos para que el applet funcione.

Especificando parámetros del applet

Ejemplo de archivo HTML con CheckerApplet incrustado, especificando ambos parámetros mediante <param>:

<html> <title>Applet Tablero</title> <hr>
<applet code="CheckerApplet.class" width="480" height="320">
<param name="color" value="blue">
<param name="squaresize" value="30">
</applet> <hr> </html>

Nota – Los nombres de parámetros no distinguen mayúsculas/minúsculas.

Conversión de aplicación a applet

Es fácil convertir una aplicación Java gráfica (que usa AWT y se inicia con el lanzador Java) en un applet para incrustar en una web.

Pasos específicos:

Manejo de eventos

Los applets heredan métodos de manejo de eventos de la clase Container. Para reaccionar a un evento, un applet debe sobrescribir el método específico apropiado.

import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.applet.Applet;
import java.awt.Graphics;
public class ExampleEventHandling extends Applet implements MouseListener {
    StringBuffer strBuffer;
    public void init() {
        addMouseListener(this);
        strBuffer = new StringBuffer();
        addItem("inicializando el applet ");
    }
    public void start() { addItem("iniciando el applet "); }
    public void stop() { addItem("deteniendo el applet "); }
    public void destroy() { addItem("descargando el applet"); }
    void addItem(String word) {
        System.out.println(word);
        strBuffer.append(word);
        repaint();
    }
    public void paint(Graphics g) {
        g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
        g.drawString(strBuffer.toString(), 10, 20);
    }
    public void mouseEntered(MouseEvent event) {}
    public void mouseExited(MouseEvent event) {}
    public void mousePressed(MouseEvent event) {}
    public void mouseReleased(MouseEvent event) {}
    public void mouseClicked(MouseEvent event) { addItem("clic del ratón! "); }
}

Invocación del applet:

<html> <title>Manejo de Eventos</title> <hr>
<applet code="ExampleEventHandling.class" width="300" height="300">
</applet> <hr> </html>

Inicialmente muestra "inicializando el applet. Iniciando el applet." Al hacer clic dentro del rectángulo, aparece "clic del ratón".

Visualización de imágenes

Un applet puede mostrar imágenes GIF, JPEG, BMP, etc. Usa drawImage() de java.awt.Graphics.

import java.applet.*;
import java.awt.*;
import java.net.*;
public class ImageDemo extends Applet {
    private Image image;
    private AppletContext context;
    public void init() {
        context = this.getAppletContext();
        String imageURL = this.getParameter("image");
        if(imageURL == null) imageURL = "java.jpg";
        try {
            URL url = new URL(this.getDocumentBase(), imageURL);
            image = context.getImage(url);
        } catch (MalformedURLException e) {
            e.printStackTrace();
            context.showStatus("¡No se pudo cargar la imagen!");
        }
    }
    public void paint(Graphics g) {
        context.showStatus("Mostrando imagen");
        g.drawImage(image, 0, 0, 200, 84, null);
        g.drawString("www.javalicense.com", 35, 100);
    }
}

Invocación:

<html> <title>Applet ImageDemo</title> <hr>
<applet code="ImageDemo.class" width="300" height="200">
<param name="image" value="java.jpg">
</applet> <hr> </html>

Reproducción de audio

Un applet puede reproducir audio mediante la interfaz AudioClip en java.applet. Tres métodos:

Para obtener un AudioClip, invoca getAudioClip() de la clase Applet. El archivo no se descarga hasta que se intenta reproducir.

import java.applet.*;
import java.awt.*;
import java.net.*;
public class AudioDemo extends Applet {
    private AudioClip clip;
    private AppletContext context;
    public void init() {
        context = this.getAppletContext();
        String audioURL = this.getParameter("audio");
        if(audioURL == null) audioURL = "default.au";
        try {
            URL url = new URL(this.getDocumentBase(), audioURL);
            clip = context.getAudioClip(url);
        } catch (MalformedURLException e) {
            e.printStackTrace();
            context.showStatus("¡No se pudo cargar el archivo de audio!");
        }
    }
    public void start() { if(clip != null) clip.loop(); }
    public void stop() { if(clip != null) clip.stop(); }
}

Invocación:

<html> <title>Applet AudioDemo</title> <hr>
<applet code="AudioDemo.class" width="0" height="0">
<param name="audio" value="test.wav">
</applet> <hr> </html>

Puedes usar test.wav en tu PC para probar.

Java

  1. Dominar Operadores en Java: Tipos, Sintaxis y Ejemplos Prácticos
  2. Comentarios en Java: Tipos, Uso y Mejores Prácticas
  3. Dominar el Bucle for Mejorado en Java: Sintaxis, Ejemplos y Mejores Prácticas
  4. Dominar Strings en Java: Creación, Métodos y Mejores Prácticas
  5. Dominando interfaces en Java: Conceptos, implementación y mejores prácticas
  6. Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
  7. Dominando Try‑with‑Resources en Java: Gestión automática de recursos explicada
  8. Anotaciones en Java explicadas: Tipos, ubicación y ejemplos prácticos
  9. Aserciones en Java: Guía práctica para detectar bugs y asegurar fiabilidad del código
  10. Entendiendo Java Vector: Uso, Características y Comparación con ArrayList
  11. Applets de Java explicados: Conceptos básicos y diferencias clave