Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java Applets erklärt: Grundlagen & wichtige Unterschiede

Ein Applet ist ein Java-Programm, das in einem Webbrowser ausgeführt wird. Ein Applet kann eine voll funktionsfähige Java-Anwendung sein, da es die gesamte Java-API zur Verfügung hat.

Es gibt wichtige Unterschiede zwischen einem Applet und einer eigenständigen Java-Anwendung:

Lebenszyklus eines Applets

Vier Methoden in der Applet-Klasse geben Ihnen das Framework, auf dem Sie jedes ernsthafte Applet aufbauen:

Ein „Hallo Welt“-Applet

import java.applet.*;
import java.awt.*;

public class HelloWorldApplet extends Applet {
    public void paint(Graphics g) {
        g.drawString("Hello World", 25, 50);
    }
}

Diese Import-Statements bringen die Klassen in den Gültigkeitsbereich:

Die Applet-Klasse

Jedes Applet erweitert die java.applet.Applet-Klasse. Die Basisklasse stellt Methoden bereit, um Informationen und Dienste vom Browser-Kontext zu erhalten:

Zusätzlich bietet die Applet-Klasse eine Schnittstelle, über die der Viewer/Browser Informationen über das Applet erhält und dessen Ausführung steuert.

Ein Applet aufrufen

Ein Applet wird durch Einbetten von Direktiven in eine HTML-Datei aufgerufen und durch einen Applet-Viewer oder Java-fähigen Browser angezeigt.

Das <applet>-Tag ist die Basis für die Einbettung:

<html>
<title>Das Hallo-Welt-Applet</title>
<hr>
<applet code="HelloWorldApplet.class" width="320" height="120">
Falls Ihr Browser Java-fähig wäre, würde hier „Hallo Welt“ erscheinen.
</applet>
<hr>
</html>

Hinweis: Das code-Attribut ist erforderlich. width und height geben die Anfangsgröße an. Der Tag muss mit </applet> geschlossen werden.

Parameter werden über <param>-Tags zwischen <applet> und </applet> übergeben. Nicht-Java-Browser ignorieren den Inhalt zwischen den Tags.

Mit dem codebase-Attribut kann ein anderer Speicherort für den kompilierten Code angegeben werden:

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

Applet-Parameter abrufen

Das folgende Beispiel zeigt, wie ein Applet auf Setup-Parameter reagiert. Ein Schachbrettmuster in Schwarz und einer zweiten Farbe wird angezeigt.

import java.applet.*;
import java.awt.*;

public class CheckerApplet extends Applet {
    int squareSize = 50;

    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) { /* Standardwert beibehalten */ }
    }

    private Color parseColor(String param) {
        // String-Vergleiche für vordefinierte Farben
        return Color.blue; // vereinfacht
    }

    public void paint(Graphics g) {
        // Zeichne Schachbrett...
    }
}

Applet-Parameter festlegen

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

Hinweis: Parameternamen sind nicht case-sensitive.

Anwendung in Applet konvertieren

Eine grafische Java-Anwendung (AWT-basiert) lässt sich leicht in ein Applet umwandeln:

  1. HTML-Seite mit passendem Tag erstellen
  2. Unterklasse von JApplet bereitstellen (public)
  3. main()-Methode entfernen, kein Frame-Fenster erstellen
  4. Initialisierungscode von Frame-Konstruktor in init() verschieben
  5. setSize entfernen (Größe über HTML-Attribute)
  6. setDefaultCloseOperation entfernen (Applet kann nicht geschlossen werden)
  7. setTitle entfernen (Applets haben keine Titelleisten)
  8. setVisible(true) nicht aufrufen (automatisch angezeigt)

Ereignisbehandlung

Applets erben Ereignisbehandlungsmethoden von der Container-Klasse. Um auf ein Ereignis zu reagieren, muss das Applet die entsprechende methode überschreiben.

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("initialisiere das Applet ");
    }

    public void start() { addItem("starte das Applet "); }
    public void stop() { addItem("stoppe das Applet "); }
    public void destroy() { addItem("entlade das 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);
    }

    // MouseListener-Methoden
    public void mouseClicked(MouseEvent e) { addItem("Maus geklickt! "); }
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    public void mousePressed(MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {}
}

Bilder anzeigen

Applets können Bilder (GIF, JPEG, BMP) anzeigen. Verwenden Sie drawImage() aus 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("Bild konnte nicht geladen werden!");
        }
    }

    public void paint(Graphics g) {
        context.showStatus("Zeige Bild");
        g.drawImage(image, 0, 0, 200, 84, null);
        g.drawString("www.example.com", 35, 100);
    }
}

Audio abspielen

Applets können Audiodateien über das AudioClip-Interface abspielen. Drei Methoden: play(), loop(), stop().

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("Audio-Datei konnte nicht geladen werden!");
        }
    }

    public void start() { if (clip != null) clip.loop(); }
    public void stop() { if (clip != null) clip.stop(); }
}

Wichtiger Hinweis: Java Applets werden seit Java 9 als deprecated markiert und in Java 11 vollständig entfernt. Moderne Webanwendungen verwenden stattdessen JavaScript/WebAssembly.

Java

  1. Java Operatoren meistern: Typen, Syntax und praktische Beispiele
  2. Java Kommentare: Typen, Verwendung und Best Practices
  3. Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
  4. Java Strings meistern: Erstellung, Methoden und Best Practices
  5. Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
  6. Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
  7. Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt
  8. Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
  9. Java Assertions: Praktischer Leitfaden zur Fehlererkennung und Code-Reliabilität
  10. Java Vector verstehen: Verwendung, Funktionen und Vergleich mit ArrayList