vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisFeedbacknächstes Kapitel


Woche 2

Tag 8


Grundlagen der Java-Applets

Seit seiner Einführung war Java der Rock Star der Computersprachen. Es hat eine öffentliche Aufmerksamkeit erfahren, die eigentlich den Skandalen von Präsidenten, Zuckerersatzstoffen und Profisportlern, die mit kriminellen Delikten zu tun haben, vorbehalten ist.

Die wesentliche Ursache für diesen Hype waren Applets: Java-Programme, die über das World Wide Web ausgeführt werden. Die meisten Leute hatten Ihre erste Begegnung mit Java Ende 1995, als der Netscape Navigator die Ausführung von Applets zu unterstützen begann.

Obwohl Java heute für viele Dinge außerhalb des Web verwendet werden kann, lernt eine nicht unerhebliche Zahl von Programmierern die Sprache, um Applets zu schreiben.

Letzte Woche haben Sie sich auf die Sprache selbst konzentriert, und bei den meisten kleinen Programmen, die Sie erstellt haben, handelte es sich um Java-Applikationen. Diese Woche schreiten Sie fort zur Entwicklung von Applets.

Heute beginnen wir mit den Grundlagen:

Unterschiede zwischen Applets und Anwendungen

Der Unterschied zwischen Java-Applets und -Applikationen liegt in der Art, wie diese ausgeführt werden.

Applikationen werden mit dem Java-Interpreter ausgeführt, der die Haupt-.class-Datei der Applikation lädt. Dazu wird meist das java-Tool des JDK von der Kommandozeile aus aufgerufen, wie Sie das bereits am ersten Tag getan haben.

Java-Applets hingegen werden innerhalb eines WWW-Browsers ausgeführt, der Java unterstützt. Momentan schließt dies die aktuellen Versionen des Netscape Navigator, des Microsoft Internet Explorer und Suns HotJava ein. Applets können zusätzlich mit dem Applet-Viewer, der im Java Developer's Kit enthalten ist, angezeigt werden.

Um ein Applet auszuführen, muß es in eine Webseite eingefügt werden. Dies geschieht mit Hilfe von HTML-Tags, wie das auch bei Bildern und anderen Elementen der Fall ist. Wenn ein Anwender mit einem Java-fähigen Browser eine Webseite lädt, die ein Applet enthält, lädt der Browser das Applet von einem Web-Server herunter und führt es auf dem System des Benutzers aus. Es wird kein separater Java-Interpreter benötigt, da bereits einer in den Browser integriert ist. Wie eine Applikation hat auch ein Applet eine Haupt-.class-Datei und beliebige weitere .class-Dateien, die zur Ausführung des Applets benötigt werden. Die Standard-Klassenbibliothek von Java ist automatisch enthalten.

Da Java-Applets innerhalb eines Java-Browsers ausgeführt werden, ist ein Teil der Arbeit für die Erstellung einer Benutzeroberfläche bereits für den Applet-Programmierer getan. Es gibt ein Fenster, in dem das Applet ausgeführt werden kann, einen Bereich, in dem Grafiken angezeigt und Informationen empfangen werden können, sowie die Benutzerschnittstelle des Browsers.


Es ist machbar, daß ein einziges Java-Programm sowohl als Java-Applikation ausgeführt werden kann als auch als Java-Applet. Obwohl Sie zum Erstellen von Applets und Anwendungen verschiedene Vorgehensweisen verwenden, stehen diese nicht in Konflikt miteinander. Die für Applets spezifischen Features werden ignoriert, sobald das Programm als Applikation ausgeführt wird und umgekehrt.

Sicherheitseinschränkungen von Applets

Da Java-Applets von jeder beliebigen Site im World Wide Web heruntergeladen werden können und auf dem System des Client ausgeführt werden, sind bestimmte Sicherheitsvorkehrungen getroffen worden. Ein boshafter Java-Programmierer könnte leicht ein Applet schreiben, das Dateien des Anwenders löscht, private Informationen auf dem System sammelt und andere Sicherheitsbrüche vornimmt.

In der Regel werden Java-Applets nach dem Sicherheitsmodell »Lieber sicher, als daß es einem später leid tut« ausgeführt. Die Dinge, die in der folgenden Liste aufgeführt sind, kann ein Applet nicht tun:

Alle diese Regeln gelten für Java-Applets, die mit dem Netscape Navigator oder Microsoft Internet Explorer, die von den meisten Anwendern im Web heute bevorzugt werden, ausgeführt werden. Andere Java-Browser oder Tools ermöglichen eventuell eine Konfiguration des Sicherheitslevels. Auf diesem Weg könnten Sie Dateizugriffe auf bestimmte Ordner erlauben oder auch Netzwerkverbindungen zu ausgewählten Internet- Sites zulassen.

Der Applet-Viewer im JDK bietet z.B. Zugang zu einer Zugriffskontoll-Liste, in der festgelegt werden kann, welche Verzeichnisse ein Applet lesen oder beschreiben darf. Doch als Entwickler von Applets sollten Sie davon ausgehen, daß Ihr Publikum die Applets in einem Browser ablaufen läßt, der die strengsten Regeln für Applets vorsieht.

Für Java-Anwendungen gelten diese Beschränkungen nicht. Diese können die Möglichkeiten von Java voll ausschöpfen.


Obwohl es das Sicherheitsmodell von Java für bösartige Applets sehr schwer macht, auf dem System des Anwenders Schaden anzurichten, ist dies keine 100prozentige Sicherheit. Suchen Sie im Web nach dem Begriff »hostile applets«, und Sie werden eine Reihe von Beiträgen zum Thema Sicherheit in den verschiedenen Versionen von Java finden. Sie werden eventuell sogar Beispiel- Applets finden, die auf den Systemen der Anwender, die Java-fähige Browser verwenden, für Probleme sorgen. Java ist sicherer als andere Lösungen für die Web-Pogrammierung, wie z.B. ActiveX, dennoch sollten alle Anwender von Browsern sich mit diesem Thema vertraut machen.

Eine Java-Version wählen

Ein Java-Programmierer, der Applets schreibt, muß sich überlegen, welche Version von Java er dafür verwendet.

Zum Zeitpunkt des Erscheinens dieses Buches ist Java 1.02 die einzige Version der Sprache, die sowohl vom Netscape Navigator als auch vom Internet Explorer voll unterstützt wird. Beide Browser zusammen bringen es in der Welt der Applet-Anwender auf über 90% Marktanteil. Netscape war ziemlich langsam mit der vollen Integration von Java 1.1 in der Version 4.0 seines Browsers, und Microsoft wird diese Version eventuell nie unterstützen.


JavaSoft hat ein Add-on entwickelt, das sich Java Plug-In nennt und es Applet-Programmierern ermöglicht, die Erweiterungen von Java 1.1 und 1.2 in ihren Programmen zu verwenden. Im JDK 1.2 ist dieses Java Plug-In in der Version 1.2 enthalten. Die neuesten Informationen und Details dazu erfahren Sie unter der Web-Adresse: http://java.sun.com/products/plugin/index.html

Wegen dieser Aufteilung scheint die folgende Vorgehensweise unter Programmierern sehr verbreitet zu sein:

Java 1.2 wurde so entworfen, daß ein Programm, das nur Java-1.02- Features verwendet, von einem 1.02-Compiler erfolgreich kompiliert und von einem 1.02-Interpreter bzw. 1.02-fähigen Browser ausgeführt werden kann.

Sobald aber ein Applet irgendeines der Features von Java 1.1 oder Java 1.2 verwendet, kann das Programm nicht mehr von einem Browser ausgeführt werden, der diese Versionen der Sprache nicht unterstützt. Die einzige Testumgebung, die diese Versionen voll unterstützt, ist der neueste Applet-Viewer von JavaSoft.

Dies stellt eine häufige Fehlerquelle für Applet-Programmierer dar. Wenn Sie ein Java-1.2-Applet schreiben und es in einem Browser ausführen, der diese Version der Sprache nicht unterstützt, wie z.B. der Microsoft Internet Explorer 4.0, erhalten Sie Security- und Class-not-found-Fehler. Außerdem treten andere Probleme auf, die verhindern, daß das Applet ausgeführt wird.

In diesem Buch wird die Applet-Programmierung weitestgehend auf Basis der Techniken von Java 1.02 behandelt, da dies weiterhin den Standard für die Web-Programmierung darstellt. Applets sind normalerweise kleinere Programme, die viele der Erweiterungen der Sprache, die mit den Versionen 1.1 und 1.2 eingeführt wurden, überhaupt nicht brauchen.

Bei der Programmierung von Applikationen werden wir allerdings die neuesten und besten Features von Java 1.2 verwenden. Sie werden vielleicht auch mal in der Lage sein, die Klassenbibliothek von Java 1.2 in Ihren Applets zu verwenden, sobald für die Browser eine Möglichkeit gefunden wird, die Entwickler der Sprache einzuholen und mit diesen Schritt zu halten.

Die Unterschiede zwischen den Versionen sind in diesem Buch immer angemerkt. Der Java-Compiler wird Sie gelegentlich darauf hinweisen, wenn ein 1.02-Feature in Java 1.2 durch eine bessere Lösung ersetzt wurde. Entsprechend werden Sie auch gewarnt.

Erweiterte Kontrollmöglichkeiten über die Sicherheit

Das Sicherheitsmodell, das bis hierher beschrieben wurde, wurde mit der Version 1.02 eingeführt. Die aktuelle Version von Java bietet dem Web-Anwender eine Möglichkeit, einem Applet sein Vertrauen auszusprechen, so daß dieses ohne Einschränkungen auf dem System des Benutzers wie eine Applikation ausgeführt werden kann.

Java 1.2 bietet die Möglichkeit, die sehr spezifischen Sicherheitskontrollen für Applets und Applikationen festzulegen bzw. von diesen zu entfernen. Dieses Thema wird an Tag 17 behandelt.

Erstellen von Applets

Bei fast allen Java-Programmen, die Sie in den bisherigen Lektionen geschrieben haben, handelte es sich um Java-Anwendungen - einfache Programme mit einer main()-Methode-, die Objekte erstellt, Instanzvariablen setzt und Methoden ausführt.

Applets besitzen keine main()-Methode, die automatisch beim Start des Programms aufgerufen wird. Statt dessen gibt es einige Methoden, die an verschiedenen Punkten der Ausführung eines Applets aufgerufen werden. Über diese Methoden werden Sie heute einiges lernen.

Alle Applets sind Subklassen der Klasse Applet aus dem Paket java.Applet. Die Klasse Applet stellt zwei Arten von Verhaltensweisen, die alle Applets haben müssen, zur Verfügung:

Obwohl ein Applet so viele andere Klassen wie nötig verwenden kann, ist die Applet- Klasse die Hauptklasse, die die Ausführung eines Applets steuert. Die Subklasse von Applet, die Sie erzeugen, hat die folgende Form:

public class yourApplet extends java.applet.Applet {
    // Code des Applet
}

Applets müssen generell als public deklariert werden, da die Klasse Applet selbst public ist. Diese Forderung gilt allerdings nur für die Hauptklasse des Applets. Alle Hilfsklassen können entweder public oder private sein. Mehr Informationen über diese Art der Zugriffskontrolle erhalten Sie an Tag 16.

Sobald der in einen Browser integrierte Java-Interpreter ein Java-Applet auf einer Webseite entdeckt, wird die Hauptklasse des Applet mitsamt aller verwendeten Hilfsklassen geladen. Der Browser erstellt automatisch eine Instanz der Klasse des Applets und ruft Methoden von Applet auf, sobald bestimmte Ereignisse eintreten.

Unterschiedliche Applets, die dieselbe Klasse verwenden, verwenden unterschiedliche Instanzen dieser Klasse. Aus diesem Grund können Sie mehrere Kopien desselben Applet-Typs auf einer Seite plazieren, die sich alle unterschiedlich verhalten können.

Wichtige Applet-Aktivitäten

Anstelle einer main()-Methode haben Applets Methoden, die beim Eintreten bestimmter Ereignisse während der Ausführung eines Applets aufgerufen werden.

Ein Bespiel für diese Methoden ist paint(), die immer dann aufgerufen wird, wenn der Inhalt des Applet-Fensters neu dargestellt werden muß.

Standard mäßig tun diese Methoden gar nichts. Die paint()-Methode z.B., die ein Applet von der Klasse Applet erbt, ist leer. Damit etwas im Applet-Fenster angezeigt wird, muß die paint()-Methode mit Verhaltensweisen überschrieben werden, die Text, Grafik oder andere Dinge anzeigen.

Sie lernen im weiteren Verlauf dieser Woche mehr über die verschiedenen Methoden, die in der Klasse Applet überschrieben werden können. Vorläufig erhalten Sie einen allgemeinen Überblick über fünf der wichtigeren Methoden der Ausführung eines Applets: Initialisieren, Starten, Stoppen, Zerstören und Anzeigen.

Initialisieren

Die Initialisierung eines Applets tritt auf, wenn ein Applet geladen wird. Sie kann die Erzeugung der Objekte, die ein Applet benötigt, das Setzen eines Ausgangszustandes, das Laden von Bildern und Schriften oder das Setzen von Parametern umfassen. Um für die Initialisierung des Applets Verhaltensweisen zu definieren, überschreiben Sie die init()-Methode:

public void init() {
    //Code der Methode
}

Starten

Nach dem Initialisieren eines Applets wird es gestartet. Ein Applet kann auch gestartet werden, nachdem es zuvor gestoppt wurde. Ein Applet wird beispielsweise gestoppt, wenn der Benutzer einen Link zu einer anderen Seite verfolgt; kehrt er anschließend zur vorherigen Seite zurück, wird das Applet wieder gestartet.

Das Starten unterscheidet sich vom Initialisieren, denn während seines Lebenszyklus kann ein Applet mehrmals gestartet werden, während die Initialisierung nur einmal stattfindet. Um das Startverhalten für ein Applet festzulegen, überschreiben Sie die start()-Methode:

public void start() {
    // Code der Methode
}

In die start()-Methode lassen sich Funktionalitäten wie z.B. das Erstellen und Starten eines Thread, das Aussenden der entsprechenden Meldungen an Hilfsobjekte oder irgendeine andere Anweisung zur Ausführung des Startvorgangs unterbringen. Über das Starten von Applets erfahren Sie am 10. Tag noch mehr.

Stoppen

Stoppen und Starten gehen Hand in Hand. Ein Applet wird gestoppt, wenn der Benutzer die Seite mit dem Applet verläßt bzw. wenn das Applet manuell durch den Aufruf der stop()-Methode angehalten wird. Standardmäßig werden alle Threads, die das Applet gestartet hat, weiter ausgeführt (weitere Informationen zu Threads erhalten Sie am 10. Tag). Durch Überschreiben von stop() können Sie die Ausführung der Threads unterbrechen und dann neu starten, wenn das Applet wieder angezeigt wird. Die stop()-Methode hat die folgende Form:

public void stop() {
    // Code der Methode
}

Zerstören

Zerstören klingt etwas gewalttätig. Durch das Zerstören kann ein Applet hinter sich aufräumen, bevor es oder der Browser beendet wird, z.B. um eventuell laufende Threads zu beenden oder andere laufende Objekte freizugeben. Im allgemeinen brauchen Sie destroy nicht zu überschreiben, sofern Sie nicht bestimmte Ressourcen freigeben müssen, z.B. Threads, die das Applet erzeugt hat. Um einem Applet zu ermöglichen, hinter sich aufzuräumen, überschreiben Sie die destroy()-Methode.

public void destroy() {
   // Code der Methode
}


Sie werden sich eventuell fragen, wodurch sich destroy() von finalize() (siehe 7. Tag) unterscheidet? destroy() ist nur für Applets anwendbar. finalize() ist eine allgemeinere Art für ein einzelnes Objekt eines beliebigen Typs, hinter sich aufzuräumen.

Java verfügt über eine automatische Speicherfreigabe, den Garbage Collector, der für Sie die Speicherverwaltung übernimmt. Der Garbage Collector fordert Speicher von Ressourcen zurück, sobald ein Programm diese nicht mehr verwendet. Aus diesem Grund müssen Sie normalerweise Methoden wie destroy() gar nicht verwenden.

Zeichnen

Das Zeichnen bestimmt, wie ein Applet Elemente auf dem Bildschirm ausgibt. Dabei kann es sich um Text, eine Linie, farbigen Hintergrund oder ein Bild handeln. Das Zeichnen kann Hunderte von Malen während des Lebenszyklus eines Applet vorkommen (z.B. einmal nach der Initialisierung des Applets, wenn das Browser-Fenster am Bildschirm vorübergehend deaktiviert und dann wieder in den Vordergrund geholt wird oder falls das Browser-Fenster an eine andere Position auf dem Bildschirm versetzt wird oder auch zyklisch im Falle einer Animation). Sie überschreiben die paint()-Methode, um einem Applet das Zeichnen am Bildschirm zu ermöglichen. Die paint()-Methode sieht wie folgt aus:

public void paint(Graphics g) {
    ... // Code der Methode
}

Beachten Sie, daß paint() im Gegensatz zu den anderen hier beschriebenen Methoden ein Argument besitzt: eine Instanz der Klasse Graphics. Dieses Objekt wird vom Browser erstellt und an paint übergeben, weshalb Sie sich darüber keine Gedanken machen müssen. Sie sollten jedoch sicherstellen, daß die Graphics-Klasse (Teil des Pakets java.awt) in den Applet-Code importiert wird. Dies wird zumeist mit der Anweisung import am Anfang der Java-Datei ausgeführt.

import java.awt.Graphics;

Wenn Sie viele Klassen aus demselben Paket, wie z.B. dem Abstract Windowing Toolkit, importieren, können Sie ein Platzhalterzeichen verwenden, um alle der Klassen in diesem Paket auf einmal zu laden. Die Anweisung import java.awt.*; macht z.B. alle public-Klassen des java.awt-Pakets verfügbar. Allerdings werden durch eine solche import-Anweisung keine Subklassen eines Pakets importiert. Das heißt, die Anweisung import java.awt.*; importiert z.B. nicht die Klassen aus dem Paket java.awt.image .

Ein einfaches Applet

Am 2. Tag haben Sie ein einfaches Applet namens Palindrome erstellt, das den Text "Go hang a salami, I'm a lasagna hog." ausgab. Sie haben das Applet als ein Beispiel für das Anlegen einer Subklasse erstellt und verwendet.

Wir gehen den Code für dieses Applet noch einmal durch, diesmal allerdings mit dem Blickpunkt auf jene Details, die Sie soeben über Applets gelernt haben. Listing 8.1 enthält den Code für dieses Applet:

Listing 8.1: Der komplette Quelltext von Palindrome.java

 1: import java.awt.Graphics;
 2: import java.awt.Font;
 3: import java.awt.Color;
 4:
 5: public class Palindrome extends java.applet.Applet {
 6:     Font f = new Font("TimesRoman", Font.BOLD, 36);
 7:
 8:     public void paint(Graphics screen) {
 9:         screen.setFont(f);
10:         screen.setColor(Color.red);
11:         screen.drawString("Go hang a salami, I'm a lasagna hog.", 5, 40);
12:     }
13: }

Dieses Applet überschreibt paint(), eine der wichtigsten Methoden, die im vorherigen Abschnitt beschrieben wurden. Da das Applet eigentlich nichts besonders ausführt (nur ein paar Wörter am Bildschirm ausgibt) und es nichts zu initialisieren gibt, ist start(), stop() oder init() nicht erforderlich.

Die eigentliche Aufgabe dieses Applets (so gering sie auch sein mag) findet bei der paint()-Methode statt. Das an die paint()-Methode übergebene Graphics-Objekt enthält den Grafikstatus, d.h. die aktuellen Merkmale der Zeichenoberfläche. Dies beinhaltet z.B. Informationen über die aktuelle Schrift und Farbe, die für alle Zeichenoperationen verwendet werden.

Die Zeilen 9 und 10 definieren die Standardschrift und -farbe dieses Grafikstatus (das Font-Objekt in der Instanzvariablen f und ein Objekt, das die Farbe Rot darstellt und in der Klassenvariablen red der Color-Klasse gespeichert ist.)

Zeile 11 zeichnet den String "Go hang a salami, I'm a lasagna hog." in der angegebenen Schrift und Farbe auf Position 5, 40. Der Punkt 0 für x, y ist die obere linke Ecke der Zeichenfläche des Applets, wobei das positive y nach unten verläuft, so daß 40 der untere Rand des Applets ist. Abb. 8.1 zeigt, wie das Begrenzungsfeld und die Zeichenkette für das Applet auf der Seite gezeichnet werden.


Abbildung 8.1:
Zeichnen eines Applets

Wenn Sie die korrekten Applet-Methoden in Ihrer Klasse (init(), start(), stop(), paint() usw.) implementieren, funktioniert das Applet auch ohne expliziten Ausgangspunkt problemlos.

Applet in eine Webseite einfügen

Nachdem Sie eine oder mehrere Klassen, die Ihr Applet enthalten, erstellt und wie bei jedem anderen Java-Programm in Klassendateien kompiliert haben, legen Sie mit HTML eine Webseite an, die dieses Applet aufnimmt.

Applets werden mit dem <APPLET>-Tag, einer HTML-Anweisung, die wie andere HTML-Elemente funktioniert, in eine Seite eingefügt. Es gibt auch eine große Menge von Entwicklungstools für Webseiten, wie z.B. Claris Homepage, Macromedia Dreamweaver oder Microsoft Frontpage, mit denen sich Applets auf einer Seite einfügen lassen, ohne direkt mit dem HTML-Code arbeiten zu müssen.

Das <APPLET>-Tag hat die Aufgabe, ein Applet in eine Webseite einzufügen und sein Erscheinungsbild in bezug auf andere Elemente der Seite zu kontrollieren.

Java-fähige Browser verwenden die Informationen, die in diesem Tag enthalten sind, um die kompilierten .class-Dateien des Applets zu finden und auszuführen. In diesem Abschnitt werden Sie lernen, wie Sie Java-Applets in eine Webseite einfügen und wie Sie die ausführbaren Dateien im Web zur Verfügung stellen.


Im folgenden Abschnitt wird davon ausgegangen, daß Sie zumindest Grundkenntnisse im Schreiben von HTML-Seiten besitzen. Wenn Sie in diesem Bereich Hilfe benötigen, empfiehlt sich das Buch »HTML 4 in 14 Tagen« von Laura Lemay (erschienen bei Sams, ISBN 3-8272-2019-X).

Das Tag <APPLET>

Um ein Applet auf einer Webseite einzufügen, verwenden Sie das Tag <APPLET>, das von allen Browsern unterstützt wird, die Java-Programme ausführen können. Listing 8.2 zeigt ein einfaches Beispiel für eine Webseite mit einem Applet.

Listing 8.2: Der gesamte Quelltext von Palindrome.html

 1: <HTML>
 2: <HEAD>
 3: <TITLE>The Palindrome Page</TITLE>
 4: </HEAD>
 5: <BODY>
 6: My favorite meat-related palindrome is:
 7: <BR>
 8: <APPLET CODE="Palindrome.class" WIDTH=600 HEIGHT=100>
 9: A secret if your browser does not support Java!
10: </APPLET>
11: </BODY>
12: </HTML>

In diesem Beispiel beinhaltet das Tag <Applet> drei Attribute:

Die .class-Datei, die über das CODE-Attribut festgelegt wird, muß sich in demselben Ordner befinden, wie die Webseite, die das Applet beinhaltet, es sei denn Sie verwenden zusätzlich das Attribut CODEBASE, um einen anderen Ordner festzulegen. Sie werden später lernen, wie Sie dies tun.

Die Attribute WIDTH und HEIGHT müssen immer angegeben werden, da der Web- Browser wissen muß, wieviel Platz er dem Applet auf der Seite bereitstellen muß. Es kann leicht passieren, daß Sie in einem Programm auf einen Bereich außerhalb des Applet-Fensters zeichnen. Aus diesem Grund müssen Sie sicherstellen, daß Sie für das Applet-Fenster genügend Platz zur Verfügung stellen.

Text, Bilder und andere Elemente einer Webseite können zwischen die Tags <APPLET> und </APPLET> eingefügt werden. Diese Elemente werden nur angezeigt, wenn der Browser nicht in der Lage ist, Java-Programme zu verarbeiten. Dies ist eine gute Möglichkeit, den Benutzern mitzuteilen, daß sie ein Java-Applet verpassen, weil deren Browser diese Applets nicht unterstützt. Wenn Sie nichts zwischen den Tags <APPLET> und </APPLET> angeben, zeigen Browser, die Java nicht unterstützen, nichts anstelle des Applets an.

In dem aktuellen Beispiel wird über dem Applet der Text "My favorite meat-related palindrome is:" sichtbar. Anwender mit Java-fähigen Browsern sehen direkt unter diesem Text das Palindrome-Applet. Anwender mit Browsern, die Java nicht unterstützen, sehen den dafür vorgesehenen Alternativtext - "A secret if your browser does not support Java!".

Prüfen der Ergebnisse

Sobald Sie die Haupt-.class-Datei und eine HTML-Datei, die das Applet verwendet, haben, können Sie die HTML-Datei von Ihrer Festplatte in einen Java-fähigen Browser laden. Im Netscape Navigator verwenden Sie den Befehl Datei | Seite öffnen | Datei wählen, um lokale Dateien zu laden. Der entsprechende Befehl des Internet Explorer ist: Datei | Öffnen | Durchsuchen. Der Browser zeigt nun die HTML- Datei an, lädt dann Ihre Applet-Klasse und führt sie aus.

Wenn Sie nicht über einen Java-fähigen Browser verfügen, verwenden Sie zum Testen Ihres Applets die Tools, die häufig in der Entwicklungsumgebung angeboten werden. In JDK können Sie die Applets mit dem Applet-Viewer prüfen. Im Gegensatz zu einem Browser zeigt der Applet-Viewer nur die Applets, die sich auf einer Webseite befinden an. Die Webseite selbst zeigt er nicht an.

Abb. 8.2 zeigt die Seite Palindrome.html bei ihr Ausführung in Netscape.


Abbildung 8.2:
Das Applet Hello Again

Java-Applets im Web bereitstellen

Nachdem Sie über ein Applet und eine HTML-Datei verfügen und sichergestellt ist, daß diese Elemente auf Ihrem lokalen System korrekt ausgeführt werden, können Sie das Applet dem Publikum im World Wide Web allgemein zur Verfügung stellen, so daß jeder mit einem Java-fähigen Browser das Applet anzeigen kann.

Java-Applets werden von einem Web-Server auf die gleiche Weise zur Verfügung gestellt wie HTML-Dateien, Bilder und andere Medien. Sie speichern das Applet in einem Ordner, der für den Web-Server zugänglich ist - oft derselbe Ordner, in dem sich auch die Webseite befindet, die das Applet beinhaltet. Der Web-Server sollte so konfiguriert sein, daß er Java-Applets Browsern bereitstellen kann, die die Sprache unterstützen.

Die folgenden Dateien sind die einzigen, die Sie auf den Server übertragen müssen:

Wenn Sie wissen, wie Sie Webseiten, Bilddateien und andere Multimedia-Dateien publizieren, dann müssen Sie keine neuen Fähigkeiten erlernen, um Java-Applets auf Ihrer Website zu publizieren.

Weitere Informationen zum Tag <APPLET>

In seiner einfachsten Form benötigt das <APPLET>-Tag lediglich die Attribute CODE, WIDTH und HEIGHT, um ausreichend Platz für das Applet zu schaffen und anschließend das Applet in diesen Raum zu laden und dort auszuführen. Das <APPLET>-Tag unterstützt allerdings noch eine ganze Reihe anderer Attribute, die Ihnen dabei helfen, ein Applet in das gesamt Design einer Seite zu integrieren.


Die Attribute des <APPLET>-Tags entsprechen fast denen des <IMG>-Tags.

Das Attribut ALIGN

Das Attribut ALIGN definiert, wie das Applet auf der Seite in bezug auf andere Teile der Seite ausgerichtet wird. Dieses Attribut kann folgende neun Werte enthalten: LEFT, RIGHT, TOP, TEXTTOP, MIDDLE, ABSMIDDLE, BASELINE, BOTTOM und ABSBOTTOM.

Um die Formatierung des Ausrichtung, die mit dem ALIGN-Attribut festgelegt wurde, zu beenden, verwenden Sie das HTML-Tag <BR> mit dem CLEAR-Attribut. Dieses Attribut kennt drei Werte:

Abb. 8.3 zeigt die verschiedenen Ausrichtungsoptionen. Der Smiley ist dabei ein Applet.


Abbildung 8.3:
Ausrichtungsoptionen für Applets

Wenn Sie ein Webentwicklungstool verwenden, das es Ihnen ermöglicht, Java-Applets auf einer Seite zu plazieren, sollten Sie in der Lage sein, das ALIGN-Attribut mi LEFT, RIGHT oder einem der anderen Werte in diesem Programm zu setzen.

HSPACE und VSPACE

Die Attribute HSPACE und VSPACE werden dazu verwendet, den Abstand zwischen einem Applet und dem umliegenden Text in Pixeln anzugeben. HSPACE definiert den horizontalen Abstand links und rechts neben dem Applet. VSPACE bestimmt den vertikalen Abstand ober- und unterhalb des Applets. Als Beispiel dafür soll der folgende Auszug aus einem HTML-Code dienen, der einen vertikalen Abstand von 50 und einen horizontalen Abstand von 10 festlegt:

<APPLET CODE="ShowSmiley.class" WIDTH=45 HEIGHT=42
ALIGN=LEFT VSPACE=50 HSPACE=10>
Requires Java
</APPLET>

Die Abbildung 8.4 zeigt, wie dieses Applet, das einen Smiley auf weißem Hintergrund zeigt, mit anderen Elementen auf einer Webseite angezeigt würde. Der Hintergrund dieser Seite ist ein Raster, bei dem jede Zelle 10 mal 10 Pixel groß ist. Sie können dieses Raster dazu verwenden, den Abstand zwischen dem Applet und dem Text auf der Seite zu messen.


Abbildung 8.4:
Vertikaler und horizontaler Abstand

CODE und CODEBASE

Die letzten beiden Attribute für das Tag <APPLET> sind CODE und CODEBASE. Im Gegensatz zu den anderen Attributen des Tags wirken sich diese beiden nicht auf das Erscheinungsbild eines Applets aus, sondern geben an, wo sich die Haupt-.class-Datei und andere Dateien befinden. Sie werden von Java-fähigen Browsern verwendet, um diese Dateien auf einem Web Server zu finden und von diesem herunterzuladen.

CODE dient zur Bezeichnung des Namens der .class-Datei, in der sich das Applet befindet. Wird CODE allein im Tag <APPLET> verwendet, wird nach der Klassendatei in jenem Verzeichnis gesucht, in dem sich die HTML-Datei befindet, die auf das Applet verweist.

Beachten Sie, daß die Klassendateinamen, die in CODE angegeben werden, die Erweiterung .class haben müssen. Das folgende <APPLET>-Beispiel lädt ein Applet mit dem Namen Bix.class aus demselben Ordner, in dem sich auch die Webseite befindet:

<APPLET CODE="Bix.class" HEIGHT=40 WIDTH=400>
</APPLET>

Das Attribut CODEBASE wird verwendet, um den Browser anzuweisen, in einem anderen Ordner nach dem Applet und den Dateien, die es verwendet, zu suchen. CODEBASE legt einen anderen Ordner oder sogar eine andere Website fest, von wo die .class- Datei und die anderen Dateien geladen werden sollen. Der folgende Code lädt die .class-Datei Bix.class aus dem Ordner Torshire:

<APPLET CODE="Bix.class" CODEBASE="Torshire" HEIGHT=40 WIDTH=400>
</APPLET>

Im Anschluß sehen Sie ein Beispiel, bei dem die Java-.class-Datei von einer ganz anderen Website als der, auf der sich die Webseite befindet, geladen wird.

Das <OBJECT>-Tag

Das <APPLET>-Tag ist eine HTML-Erweiterung, die ausschließlich dafür eingeführt wurde, um Java-Programme in Webseiten einzufügen. Heute gibt es andere Arten von Programmen, die interaktiv ausgeführt werden können, darunter ActiveX-Steuerelemente, NetRexx-Applets und Phyton-Programme. Um mit all diesen Programmen arbeiten zu können, ohne daß für jedes ein eigenes Tag benötigt wird, wurde das <OBJECT> -Tag der HTML-Spezifikation hinzugefügt.

Das <OBJECT>-Tag wird für alle Objekte verwendet - interaktive Programme und andere externe Elemente -, die als Teil einer Webseite präsentiert werden können. Es wird von den Versionen 4.0 und höher des Netscape Navigator und des Microsoft Internet Explorer unterstützt. Ältere Browser unterstützen dieses Tag nicht, so daß Sie in den meisten Fällen noch das <APPLET>-Tag verwenden werden.

Das <OBJECT>-Tag hat die folgende Form:

<OBJECT CLASSID="java:Bix.class" CODEBASE="javaclasses" HEIGHT=40 WIDTH=400>
</OBJECT>

Um statt des <APPLET>-Tags das <OBJECT>-Tag zu verwenden, sind die folgenden Änderungen nötig:

Die anderen Attribute bleiben gleich, einschließlich CODEBASE, HEIGHT, WIDTH und ALIGN. Im <OBJECT>-Tag können optional noch <PARAM>-Tags verwendet werden, die später noch beschrieben werden.

Das Listing 8.3 beinhaltet die Webseite, die das Palindrome-Applet über das <OBJECT>-Tag lädt. Alles andere entspricht dem vorigen Beispiel aus Listing 8.2.

Listing 8.3: Der gesamte Quelltext von Palindrome2.html

 1: <HTML>
 2: <HEAD>
 3: <TITLE>The Palindrome Page</TITLE>
 4: </HEAD>
 5: <BODY>
 6: <P>My favorite meat-related palindrome is:
 7: <BR>
 8: <OBJECT CLASSID="java:Palindrome.class" WIDTH=600 HEIGHT=100>
 9: A secret if your browser does not support Java!
10: </OBJECT>
11: </BODY>
12: </HTML>

Java-Archive

Die Standardmethode zur Plazierung von Applets auf einer Webseite besteht darin, das Tag <APPLET> zur Definition der primären Klassendatei des Applets zu verwenden. Ein Java-fähiger Browser lädt das Applet dann herunter und führt es aus. Alle anderen vom Applet benötigten Klassen oder Dateien werden vom Web-Server heruntergeladen.

Das Problem bei der Ausführung von Applets mit dieser Methode ist, daß der Browser für jede einzelne Datei, die das Applet benötigt (das kann eine andere Hilfsklasse, ein Bild, eine Audiodatei, eine Textdatei etc. sein), eine eigene Verbindung zum Server herstellen muß. Da bereits für die Einrichtung der Verbindung selbst einige Zeit notwendig ist, wird der Zeitaufwand für das Laden des Applets und der zugehörigen Dateien durch diese Technik beträchtlich erhöht.

Die Lösung des Problems bietet ein Java-Archiv, d.h. eine JAR-Datei. Ein Java-Archiv ist eine Sammlung von Java-Klassen oder anderen Dateien, die in eine einzige Datei gepackt werden. Durch die Verwendung von Java-Archiven muß der Browser lediglich eine Verbindung zu diesem einen Archiv auf dem Server herstellen. Indem Sie die Anzahl der Dateien reduzieren, die vom Browser heruntergeladen werden müssen, läßt sich das Applet selbst schneller laden und ausführen. Java-Archive können auch komprimiert werden, wodurch sich die Dateigröße verringert und die Ladezeiten zusätzlich verkürzt werden (doch auch die Dekomprimierung durch den Browser kann einige Zeit beanspruchen).

Browser, die Java 1.1 oder höher unterstützen, unterstützen auch die JAR-Dateien; das JDK enthält ein Tool namens jar, mit dessen Hilfe sich Dateien in Java-Archive packen und wieder daraus entpacken lassen. JAR-Dateien können mit dem Zip-Format komprimiert oder ohne Komprimierung verpackt werden. Der folgende Befehl packt alle Klassendateien und GIF-Bilddateien eines Verzeichnisses in ein einziges Java-Archiv mit dem Namen Animate.jar:

Jar cf Animate.jar *.class *.gif

Das Argument cf definiert zwei Befehlszeilen-Optionen, die sich für die Ausführung des Programms jar verwenden lassen. Die Option c gibt an, daß eine Java-Archivdatei erstellt werden soll, und die Option f legt fest, daß der Name der Archivdatei als nächstes Argument folgt.

Sie können auch nur bestimmte Dateien zu einem Java-Archiv hinzufügen, wie z.B. im folgenden:

jar cf Smiley.jar ShowSmiley.class ShowSmiley.html spinhead.gif

Dieses Kommando erzeugt ein Archiv mit dem Namen Smiley.jar, das drei Dateien beinhaltet: ShowSmiley.class, ShowSmiley.html und spinhead.gif.

Wenn Sie jar ohne Argumente ausführen, sehen Sie eine Liste der verfügbaren Optionen.

Nachdem ein Java-Archiv erstellt ist, wird das Attribut ARCHIVES mit dem Tag <APPLET> verwendet, um anzugeben, wo sich das Archiv befindet. Sie können Java- Archive in einem <APPLET>-Tag wie folgt benutzen:

<applet code="ShowSmiley.class" archives="Smiley.jar" width=45 height=42>
</applet>

Dieses Tag gibt an, daß das Archiv Smiley.jar Dateien enthält, die vom Applet benötigt werden. Browser und Surf-Tools, die JAR-Dateien unterstützen, suchen dann innerhalb des Archivs nach den für das Applet notwendigen Dateien.


Ein Java-Archiv kann zwar Klassendateien enthalten, aber auch bei der Verwendung des Attributs ARCHIVES muß das Attribut CODE verwendet werden. Der Browser muß auch in diesem Fall den Namen der Hauptklassendatei des Applets kennen, um diese laden zu können.

Weitere Archiv-Formate

Ehe die Entwickler von Java das Dateiformat JAR einführten, haben sowohl Netscape als auch Microsoft eigene Archivlösungen angeboten. Diese bieten gegenüber den Java-Archiven keine Vorteile, aber sie lassen sich ebenfalls mit Browsern verwenden, die die Java Versionen über 1.02 nicht unterstützen.

Die aktuellen Versionen des Netscape-Browsers unterstützten ZIP-Archive mit dem Attribut ARCHIVE, diese lassen sich jedoch nur für Klassendateien einrichten, nicht für Bilder oder andere vom Applet benötigte Dateien. In Netscape verwenden Sie das Attribute ARCHIVE dazu, den Namen des Archivs anzugeben:

<APPLET CODE="MyApplet.class" ARCHIVE="appletstuff.zip" WIDTH=100 HEIGHT=100>
</APPLET>

Das Archiv selbst ist eine unkomprimierte Zip-Datei. Die üblichen Zip-Dateien, die durch Komprimierung Dateigrößen reduzieren, werden nicht erkannt. Hilfsklassen können sich inner- oder außerhalb der Zip-Datei befinden; der Browser von Netscape sucht an beiden Positionen. Das Attribut ARCHIVE wird von anderen Browsern oder Applet-Viewern ignoriert.

Der Microsoft Internet Explorer erkennt einen dritten Typ von Archivformaten für Java-Applets: die CAB-Datei. CAB ist die Abkürzung für Cabinet und bietet eine Möglichkeit, Dateien zusammenzufassen und für eine schnellere Übertragung im Web zu komprimieren.

Cabinet-Archive werden mit einem Tool von Microsoft erstellt, welches CABarc heißt. Es steht aktuell zum Herunterladen unter folgender Adresse zur Verfügung:

http://www.microsoft.com/workshop/prog/cab/

Mit CABarc können Sie alle Klassendateien und alle anderen für das Applet erforderlichen Dateien in einem einzigen Archiv komprimieren. Dieses Archiv hat die Dateierweiterung .CAB. Um das Archiv anzugeben, wird der Parameter cabbase zusammen mit dem Tag <PARAM> in HTML verwendet. Der Wert von cabbase ist gleich dem Namen der .CAB-Datei. Hier ein Beispiel:

<APPLET CODE="DanceFever.class" WIDTH=200 HEIGHT=450>
<PARAM NAME="cabbase" VALUE="DanceFever.cab">
</APPLET>

Ebenso wie das Attribut ARCHIVE wird der Parameter cabbase von Web-Browsern ignoriert, die diesen nicht unterstützen.

Die Archivfunktionen von Netscape und Microsoft wurden vor der Herausgabe der Version Java 1.1 eingeführt, deshalb funktionieren sie mit den aktuellen Versionen dieser Browser und eventuell anderen Browsern. Wenn Sie eine dieser Lösungen bevorzugen, sollten Sie beide Archivformen und einen Satz der einzelnen Dateien auf Ihrem Web-Server abspeichern. Auf diese Weise können alle Java-fähigen Browser das Applet verwenden.

Parameter an Applets weitergeben

Bei Java-Anwendungen können Sie Parameter an die main()-Methode weitergeben, indem Sie in der Befehlszeile Argumente verwenden. Sie können diese Argumente dann innerhalb des Körpers der Klasse analysieren lassen, damit sich die Anwendung den definierten Argumenten entsprechend verhält.

Applets verfügen jedoch nicht über eine Befehlszeile. Wie lassen sich verschiedene Argumente an ein Applet weiterleiten? Applets können von der HTML-Datei, die das Tag <APPLET> enthält, durch Verwendung von Applet-Parametern verschiedene Eingaben erhalten. Um die Parameter in einem Applet einzurichten und zu handhaben, benötigen Sie folgende Elemente:

Applet-Parameter bestehen aus folgenden zwei Teilen: dem Parameternamen, der eine von Ihnen gewählte Bezeichnung ist, und dem Wert, welcher dem tatsächlichen Wert dieses speziellen Parameters entspricht. Sie können also beispielsweise die Farbe des Textes in einem Applet definieren, indem Sie einen Parameter mit dem Farbnamen und dem Wert red (rot) angeben. Oder Sie legen die Geschwindigkeit einer Animation fest, indem Sie einen Parameter mit dem Namen Speed und einen Wert von 5 verwenden.

In der HTML-Datei, die das eingebettete Applet enthält, fügen Sie Parameter mit dem Tag <PARAM> ein. Dieses Tag verfügt über zwei Attribute für den Namen und den Wert, diese haben die Bezeichnung Name und Value. Das Tag <PARAM> befindet sich innerhalb der Tags <APPLET> und </APPLET>:

<APPLET CODE="QueenMab.class" WIDTH=100 HEIGHT=100>
<PARAM NAME=font VALUE="TimesRoman">
<PARAM NAME=size VALUE="24">
A Java applet appears here.
</APPLET>

In diesem Beispiel werden zwei Parameter für das Applets QueenMab bestimmt: font mit dem Wert TimesRoman und size mit dem Wert 24.

Diese Parameter werden beim Laden des Applets weitergeleitet. In der init()-Methode des Applets können Sie diese Parameter mit der getParameter()-Methode berücksichtigen. getParameter() nimmt ein Argument an - eine Zeichenkette, die den Namen des Parameters bezeichnet, nach dem Sie suchen. Dann gibt die Methode eine Zeichenkette mit dem entsprechenden Wert aus. (Wie bei Argumenten in Java- Anwendungen werden alle Parameterwerte in Zeichenketten konvertiert.) Um den Wert des font-Parameters aus der HTML-Datei zu erhalten, können Sie z.B. die folgende Zeile in die init()-Methode aufnehmen:

String theFontName = getParameter("font");

Die Namen der in <PARAM> angegebenen Parameter und die Namen der Parameter in getParameter müssen absolut identisch sein, auch in bezug auf Groß- und Kleinschreibung. Mit anderen Worten: <PARAM=NAME="eecum-mings"> unterscheidet sich von <PARAM=NAME="EECummings">. Werden Ihre Parameter nicht richtig an das Applet weitergeleitet, überprüfen Sie die Parameternamen.

Falls ein erwarteter Parameter nicht in der HTML-Datei angegeben wurde, gibt getParameter() Null zurück. In den meisten Fällen wird auf einen null-Parameter getestet und ein vernünftiger Standardwert zurückgegeben.

if (theFontName == null)
theFontName = "Courier"

Bedenken Sie außerdem, daß diese Methode Strings zurückgibt. Wenn Sie einen Parameter eines anderen Typs benötigen, müssen Sie den übergebenen Parameter selbst konvertieren. Nehmen Sie z.B. die HTML-Datei für das QueenMab-Applet. Um den size-Parameter zu parsen und ihn der Integer-Variablen theSize zuzuweisen, werden Sie eventuell den folgenden Quellcode verwenden:

int theSize;
String s = getParameter("size");
if (s == null)
theSize = 12;
else theSize = Integer.parseInt(s);

Noch nicht ganz klar? Dann wollen wir ein Beispiel für ein Applet schreiben, das diese Technik verwendet. Sie modifizieren das Palindrome-Applet dahingehend, daß es ein bestimmtes Palindrom ausgibt, z.B. »Dennis and Edna sinned" oder "No, sir, prefer prison". Der Name wird über einen HTML-Parameter an das Applet weitergeleitet. Das Projekt wird den Namen NewPalindrome tragen.

Kopieren Sie dazu die ursprüngliche Palindrome-Klasse, und benennen Sie diese entsprechend um, wie in Listing 8.4 dargestellt:

Listing 8.4: Der Anfang von NewPalindrome.java

 1: import java.awt.Graphics;
 2: import java.awt.Font;
 3: import java.awt.Color;
 4:
 5: public class NewPalindrome extends java.applet.Applet {
 6:     Font f = new Font("TimesRoman", Font.BOLD, 36);
 7:
 8:     public void paint(Graphics screen) {
 9:         screen.setFont(f);
10:         screen.setColor(Color.red);
11:         screen.drawString("Go hang a salami, I'm a lasagna hog.", 5, 40);
12:     }
13: }

Als erstes müssen Sie in dieser Klasse Platz für den Palindrome-Parameter schaffen, um diesen zu speichern. Da dieser Name im gesamten Applet benötigt wird, verwenden wir eine Instanzvariable unmittelbar nach der Variablen für den Font:

String palindrome;

Um dieser Variablen einen Wert zuzuweisen, müssen Sie den Parameter aus der HTML-Datei holen. Die beste Stelle, um Applet-Parameter zu verarbeiten, ist die init() -Methode. Die init()-Methode wird ähnlich definiert wie paint() (public ohne Argumente und void als Rückgabetyp). Achten Sie darauf, daß Sie Parameter auch auf einen null-Wert testen. Wird kein Palindrom angegeben, ist der Standard in diesem Fall »Dennis and Edna sinned", wie Sie im folgenden sehen können:

public void init() {
    palindrome = getParameter("palindrome");
        if (palindrome == null)
        palindrome = "Dennis and Edna sinned";
    }

Nun muß nur noch die paint()-Methode geändert werden, damit der neue Parametername verwendet wird. Die ursprüngliche sieht wie folgt aus:

screen.drawString("Go hang a salami, I'm a lasagna hog.", 5, 50);

Um den neuen String, den Sie in der Instanzvariablen palindrome gespeichert haben, zu zeichnen, müssen Sie nur das String-Literal durch die Variable ersetzen:

screen.drawString(palindrome, 5, 50);

Listing 8.5 zeigt das endgültige Ergebnis der Klasse NewPalindrome. Kompilieren Sie es, um eine komplette Klassendatei zu erhalten.

Listing 8.5: Der gesamte Quelltext von NewPalindrome.java

 1: import java.awt.Graphics;
 2: import java.awt.Font;
 3: import java.awt.Color;
 4:
 5: public class NewPalindrome extends java.applet.Applet {
 6:     Font f = new Font("TimesRoman", Font.BOLD, 36);
 7:     String palindrome;
 8:
 9:     public void paint(Graphics screen) {
10:         screen.setFont(f);
11:         screen.setColor(Color.red);
12:         screen.drawString(palindrome, 5, 50);
13:     }
14:
15:     public void init() {
16:         palindrome = getParameter("palindrome");
17:         if (palindrome == null)
18:         palindrome = "Dennis and Edna sinned";
19:     }
20: }

Nun erstellen wir eine HTML-Datei, die dieses Applet enthält. Listing 8.6 zeigt eine neue Webseite für das NewPalindrome-Applet.

Listing 8.6: Der gesamte Quelltext von NewPalindrome.html

 1: <HTML>
 2: <HEAD>
 3: <TITLE>The New Palindrome Page</TITLE>
 4: </HEAD>
 5: <BODY>
 6: <P>
 7: <APPLET CODE="NewPalindrome.class" WIDTH=600 HEIGHT=100>
 8: <PARAM NAME=palindrome VALUE="No, sir, prefer prison">
 9: Your browser does not support Java!
10: </APPLET>
11: </BODY>
12: </HTML>

Achten Sie darauf, daß das Tag <APPLET>, welches auf die Klassendatei für das Applet verweist, die passende Breite und Höhe (200 und 50) angibt. Unmittelbar darunter (in Zeile 8) steht das Tag <PARAM>, welches zur Weitergabe an den Namen verwendet wird. Hier ist der NAME-Parameter einfach palindrome, und der Wert ist "No, sir, prefer prison".

Wenn Sie diese HTML-Datei in den Netscape Navigator laden, erscheint das Ergebnis aus Abb. 8.5.


Abbildung 8.5:
Die Seite NewPalindrome.html im Netscape Navigator

Im Code von NewPalindrome ist der String Dennis and Edna sinned als Standardwert für den Fall festgelegt, daß kein Palindrom angegeben ist. Das Listing 8.7 stellt eine HTML-Datei dar, die keine Parameter übergibt.

Listing 8.7: Der gesamte Quelltext von NewPalindrome2.html

 1: <HTML>
 2: <HEAD>
 3: <TITLE>Hello!</TITLE>
 4: </HEAD>
 5: <BODY>
 6: <P>
 7: <APPLET CODE="New Palindtrome.class" WIDTH=600 HEIGHT=10>
 8: Your browser does not support Java!
 9: </APPLET>
10: </BODY>
11: </HTML>

Da hier kein Palindrom angegeben ist, verwendet das Applet den Standard, und das Ergebnis erscheint wie in Abb. 8.6 dargestellt.


Abbildung 8.6:
NewPalindrome2.html im Netscape Navigator

Zusammenfassung

Man kann darüber streiten, ob Applets auch heute noch den Hauptbereich der Java- Entwicklung darstellen - mehr als zwei Jahre, nachdem die Sprache zum erstenmal veröffentlicht wurde.

Allerdings bleiben Applets das Anwendungsgebiet für Java, mit dem am meisten Menschen in Berührung kommen, da auf Tausenden von Websites Applets verwendet werden. Schenkt man Altavista (http://www.altavista.com) Glauben, dann gibt es mehr als 900.000 Webseiten, die Applets beinhalten.

Da sie in Webseiten ausgeführt und angezeigt werden, können Applets die Grafik, die Benutzerschnittstelle und die Ereignisstruktur des Web-Browsers verwenden. Diese Möglichkeiten bieten dem Applet-Programmierer eine große Menge an Funktionalität ohne große Schufterei.

Heute haben Sie die Grundlagen der Applet-Erstellung erlernt. Darunter auch die folgenden Themen:

Fragen und Antworten

Frage:
Ich habe ein Applet, das Parameter holt, und eine HTML-Datei, die diese Parameter weitergibt. Beim Ausführen meines Applets erhalte ich aber nur Nullwerte. Woran liegt das?

Antwort:
Stimmen die Namen der Parameter (im NAME-Attribut) genau mit denen überein, die Sie zum Prüfen von getParameter() verwenden? Sie müssen absolut übereinstimmen, auch hinsichtlich der Groß- und Kleinschreibung. Achten Sie darauf, daß Ihre <PARAM>-Tags innerhalb von öffnenden und schließenden <APPLET>-Tags stehen und daß kein Name falsch geschrieben wurde.

Frage:
Wie kann ich, da Applets nicht über eine Befehlszeile verfügen, eine einfache Debugging-Ausgabe wie System.out.println() in einem Applet vornehmen?

Antwort:
Dies ist trotzdem möglich. Je nach Browser oder Java-fähiger Umgebung verfügen Sie über ein Konsolenfenster, in dem die Debugging-Ausgabe (wie System.out.println() ) erscheint, oder sie wird in einer Log-Datei gespeichert (Netscape verfügt im Menü Optionen über eine Java-Konsole, der Internet Explorer verwendet eine Java-Log-Datei, die Sie durch Optionen/Erweitert aktivieren können). Sie können in den Applets weiterhin Meldungen mit System.out.println() ausgeben, sollten diese aber anschließend entfernen, damit Sie den Anwender nicht verwirren!



vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisFeedbacknächstes Kapitel


Ein Imprint des Markt&Technik Buch- und Software-Verlag GmbH.
Elektronische Fassung des Titels: Java 2 in 21 Tagen, ISBN: 3-8272-5578-3