Applets ("little Applications") sind spezielle JAVA-Programme, die
genauso wie JAVA-Applicationen compiliert werden und anschließend von Webbrowsern ausgeführt werden
können. Dafür müssen sie in eine Webseite eingebunden werden. <Applet code="meinApplet.class" width="400"
height="200"></Applet> Der Applet-Code wird beim Aufruf der HTML-Seite durch den Browser
geladen und in der JVM (Java Virtual Machine) des Browsers ausgeführt. Dabei
laufen die Applets in einer sogenannten Sandbox. Das verhindert, das Applets
Schaden auf dem Rechner anrichten. Innerhalb der Sandbox ist alles erlaubt,
Aktionen außerhalb der Sandbox sind nicht möglich (wie Zugriffe auf das
Dateisystem, Start von anderen Programmen etc.).
Ein einfaches Applet
import java.applet.*;
import java.awt.*;
// wird für Graphics benötigt!!
public class halloapp extends
Applet{ // von Applet
abgeleitet
public void paint(Graphics
g) {
g.drawString("Hallo
Welt",180,100);
// Text auf Oberfläche (Panel) zeichnen
}
}
um das Applet zu starten muss es, nach Compilierung, von einer
HTML-Datei aufgerufen werden
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head><title>Ein Applet wird gestartet ...</title></head>
<body>
<h1 align="center">JAVA-Applets</h1>
<Applet code="halloapp.class" width="400"
height="200">
JAVA ist nicht aktiv !
</Applet>
</body>
</html>
import java.applet.*;
import java.awt.*;
// wird für Graphics benötigt!!
public class halloapp2 extends
Applet{
String
parameter
=null;
// wird beim Ersten Start des Applets vom Browser
aufgerufen
// und dient der Initialisierung
public void init() {
System.out.println("init()");
// Ausgabe auf Konsole parameter = getParameter("Breite");
}
// wird nach init() aufgerufen oder wenn
das Applet wieder sichtbar wird
public void start() {
System.out.println("start()");
// Ausgabe auf Konsole
}
// wird aufgerufen wenn die HTML-Seite
verlassen wird
public void stop() {
System.out.println("stop()");
// Ausgabe auf Konsole
}
// wird aufgerufen wenn der Browser geschlossen wird
public void destroy() {
System.out.println("destroy()");
// Ausgabe auf Konsole
}
// gibt Informationen über das Applet
zurück
public
String getAppletInfo(){
return
"Name : xyz\n"
+ "Autor
: XYZ\n"
+ "Version:
V1.0";
}
// wird nach init() aufgerufen oder
wenn verdeckte Teile des Applets
// (durch andere Fenster) wieder sichtbar werden
public void paint(Graphics
g) { System.out.println("paint()");
// Ausgabe auf Konsol
g.drawString("Hallo
Welt",180,100);
// Text auf Oberfläche zeichnen
}
}
Solange das Applet nur kurz Informationen in Form von Bildern oder
Textausgaben liefert und dann brav auf die nächste Anwender-Aktion wartet,
haben auch andere Applets die Chance "Rechenzeit" zu bekommen.
Wird aber z.B. ein sich drehender Würfel berechnet, Mandelbrot-Mengen oder
sogar Echtzeit-Rendering durchgeführt, sollte das Applet in einem eigenen
Thread ablaufen, damit andere Applets auch Rechenzeit abbekommen.
import java.applet.*;
import java.awt.*;
public class halloapp4 extends
Applet
implements Runnable{
Thread thread;
String parameter
=null;
// wird beim Ersten Start des Applets vom Browser
aufgerufen
// und dient der Initialisierung
public void init() {
System.out.println("init()");
// Ausgabe auf Konsole
parameter = getParameter("Breite");
}
// wird nach init() aufgerufen oder wenn
das Applet wieder sichtbar wird
public void start() {
System.out.println("start()");
// Ausgabe auf Konsole if (thread==null){
thread=new
Thread(this);
thread.start();
// Thread starten
}
}
// wird aufgerufen wenn die HTML-Seite
verlassen wird
public void stop() {
System.out.println("stop()");
// Ausgabe auf Konsole thread=null;
// Thread beenden
}
// wird aufgerufen wenn der Browser geschlossen wird
public void destroy() {
System.out.println("destroy()");
// Ausgabe auf Konsole
} public void
run(){
while (thread!=null){
try{
thread.sleep(500);
//setzte die Abarbeitung des Applets für 500ms aus
}catch(InterruptedException
ie){
System.out.println("InterruptedException");
}
// hier steht der rechenintensive Applet-Code
// ....
}
}
// gibt Informationen über das Applet
zurück
public
String getAppletInfo(){
return
"Name : xyz\n"
+ "Autor
: XYZ\n"
+ "Version:
V1.0";
}
// wird nach init() aufgerufen oder
wenn verdeckte Teile des Applets
// (durch andere Fenster) wieder sichtbar werden
public void paint(Graphics
g) {
System.out.println("paint()");
// Ausgabe auf Konsol
g.drawString("Hallo
Welt",180,100);
// Text auf Oberfläche zeichnen
}
}