Anhang G: Java – eine Übersicht
von Laura Lemay und Stephen Le Hunte
Java wurde von Sun Microsystems entwickelt; es handelt sich dabei um
eine plattformunabhängige Programmiersprache, mit der man innerhalb
von Web-Seiten einen ausführbaren Inhalt erzeugen kann. Java basiert
auf C++ und ist eine vollausgestattete Programmiersprache, die als solche
ernst genommen werden sollte. Wenn man sie beherrscht, kann sie sich als
ebenso unbegrenzt und mächtig herausstellen wie die Vorstellungskraft
des Programmierers. Tatsächlich gibt es Stimmen, die soweit gehen
und behaupten, daß die Software-Industrie ernsthaft bedroht ist,
da in wenigen Jahren alle Programme die Form von Applets annehmen werden,
die heruntergeladen werden, wenn sie benötigt werden.
Sowohl der Netscape Navigator als auch der Microsoft Internet Explorer
unterstützen ausführbaren Inhalt. Sie können Live-Audio,
Animationen oder Programme in Ihre Web-Seiten aufnehmen. Die Applets sind
bereits kompiliert und werden in die HTML-Seiten eingebunden.
Hinweis |
Die hier gegebenen Informationen beschreiben
nur die notwendigen HTML-Elemente, die es Ihnen ermöglichen, Ihren
HTML-Dokumenten bereits kompilierte Java-Applets hinzuzufügen. Sie
beschreiben jedoch nicht, wie Sie die Java-Applets tatsächlich schreiben.
Dies geht weit über den Rahmen dieses Anhangs hinaus. Für mehr
Informationen über das Schreiben von Java-Code besorgen Sie sich Java
1.1 in 21 Tagen (vom Sams-Verlag); eine Kopie des Java-Entwicklungskits
erhalten sie unter: http://java.sun.com/ |
-
Dieser Anhang bietet eine Übersicht darüber, wie Sie Java-Applets
in Ihre Seiten einbeziehen können, eine Übersicht über die
Sprache Java.
<APPLET>: Ein Applet einfügen
Hinweis |
Der Internet Explorer unterstützt die
Integration von Java-Applets mit dem <OBJECT>-Mechanismus zur
Einfügung von Objekten. |
Um ein Applet in eine HTML-Seite aufzunehmen, müssen Sie das
<APPLET>-HTML-Tag verwenden, zum Beispiel:
<APPLET CODE="Applet.class" WIDTH=200 HEIGHT=150>
</APPLET>
Dieses Beispiel weist den Viewer oder den Browser an, das Applet zu laden,
dessen kompilierter Code sich in Applet.class befindet (in demselben Verzeichnis
wie das aktuelle HTML-Dokument), und die Anfangsdimensionen des Applets
auf eine Breite von 200 Pixeln und eine Höhe 150 Pixeln zu setzen.
(Das <APPLET>-Tag unterstützt standard Bild-Attribute,
wie noch später in diese Anhang erklärt wird).
Hier folgt ein etwas komplexeres Beispiel mit dem <APPLET>-Tag:
<APPLET CODEBASE="http://java.sun.com/JDK-prebeta1/applets/NervousText"
CODE="NervousText.class" width=400 height=75 align=center >
<PARAM NAME="text" VALUE="This is the Applet Viewer.">
<BLOCKQUOTE>
<HR>
Wenn Sie einen Java-fähigen Browser benutzen würden, sähen
Sie tanzenden Text anstelle dieses Absatzes.
<HR>
</BLOCKQUOTE>
</APPLET>
Dieser Code weist den Viewer oder Browser an, folgendes zu tun:
-
Das Applet zu laden, dessen kompilierter Code sich an folgendem URL befindet:
http://java.sun.com/JDK-prebeta1/applets/NervousText/NervousText.class.
-
Die Anfangsdimensionen des Applets auf 400 x 75 Pixel zu setzen.
-
Das Applet in der Zeile zu zentrieren.
Der Viewer/Browser soll auch dem text-Attribut des Applets den
Wert »This is the Applet Viewer« zuweisen. (Dieser
Parameter legt den Text fest, den das Applet darstellt.) Wenn die Seite
von einem Browser angezeigt wird, der keine Java-Applets ausführen
kann, ignoriert er die <APPLET>- und <PARAM>-Tags
und stellt nur den HTML-Code zwischen den <BLOCKQUOTE>- und
</BLOCKQUOTE>-Tags dar.
Die vollständige Syntax für das Beispiel mit dem <APPLET>-Tag
sieht wie folgt aus:
<APPLET
[CODEBASE = URL]
CODE = appletFile
[ALT = alternateText]
[NAME = appletInstanceName]
WIDTH = pixels HEIGHT = pixels
[ALIGN = alignment]
[VSPACE = pixels] [HSPACE = pixels]
>
[<PARAM NAME = appletAttribute1 VALUE = value>]
[<PARAM NAME = appletAttribute2 VALUE = value>]
. . .
[alternateHTML]
</APPLET>
Die <APPLET>-Attribute werden in alphabetischer Reihenfolge
präsentiert, und jedes wird kurz in den folgenden Abschnitten besprochen.
HTML 4.0 führt das <OBJECT>-Tag ein. Dieses Tag hat
die Aufgabe Java-Applets, ActiveX-Controls, Plug-In-Daten und andere externe
Daten zu integrieren. Dieses Tag wurde bereits eingeschränkt von Browsern
in unterschiedlicher Weise unterstützt. Mit HTML 4.0 wird dieses Tag
zum De-facto Standard. Das <OBJECT>-Tag wird eventuell
das <APPLET>-Tag ersetzen.
ALIGN = Ausrichtung
Dieses zwingend erforderliche Attribut spezifiziert die Ausrichtung des
Applet. Die möglichen Werte dieses Attributs sind die gleichen wie
beim IMG-Tag: left, right, top, texttop,
middle, absmiddle, baseline, bottom
und absbottom.
Attribut |
Beschreibung |
ALT = alternativerText |
Dieses optionale Attribut spezifiziert den Text, der
dargestellt werden soll, wenn der Browser zwar das <APPLET>-Tag
versteht, aber keine Applets ausführen kann, die in Java geschrieben
wurden. |
CODE = AppletDatei |
Dieses zwingend erforderliche Attribut gibt den Namen
der Datei an, die die kompilierte Applet-Subklasse des Applets enthält.
Diese Datei ist relativ zur Basis-URL des Applets. Sie darf nicht absolut
sein. |
CODEBASE = URL |
Dieses optionale Attribut spezifiziert die Basis-URL
des Applets – das Verzeichnis, das den Applet-Code enthält. Wenn dieses
Attribut nicht bestimmt wird, wird die URL des Dokuments verwendet. |
NAME = AppletInstanzName |
Dieses optionale Attribut spezifiziert einen Namen für
die Appletinstanz, wodurch es den Applets auf derselben Seite ermöglicht
wird, miteinander zu kommunizieren. |
<PARAM NAME = AppletAttribut1 VALUE = Wert> |
Dieses Tag stellt die einzige Möglichkeit dar, wie
einem Applet Parameter übergeben werden können. Applets greifen
auf ihre Parameter mit der getParameter()-Methode zu. |
WIDTH = Pixel HEIGHT = Pixel |
Dieses zwingend erforderliche Attribut gib die anfängliche
Breite und Höhe des Applet-Display-Bereichs an (in Pixeln), wobei
etwaige Fenster oder Dialogfelder, die vom Applet angezeigt werden, nicht
mitgerechnet werden. |
-
VSPACE = Pixel HSPACE = Pixel
|
Diese optionalen Attribute legen die Anzahl der Pixel
über und unter dem Applet (VSPACE) und auf beiden Seiten
des Applets (HSPACE) fest. Sie werden genauso behandelt wie die
VSPACE- und HSPACE-Attribute des IMG-Tags. |
Kurzüberblick
Dieser Abschnitt bietet einen kurzen Überblick über die Programmiersprache
Java.
Hinweis |
Dies ist weder ein grammatikalischer noch
ein technischer Überblick über die Sprache. Es ist vielmehr eine
kurze Übersicht, die Sie verwenden können, wenn Sie die Grundlagen
der Sprache bereits kennen. Wenn Sie eine technische Beschreibung der Sprache
benötigen, besuchen Sie am besten die Java-Web-Site (http://java.sun.com)
und laden sich die Spezifikation von Java herunter. Dort finden Sie auch
eine vollständige BNF-Grammatik. |
Schlüsselwörter der Sprache und Symbole werden in einer
nichtproportionalen Schrift dargestellt. Argumente und andere
Teile, die variabel sind werden können, werden in kursiver,
nicht-proportionaler Schrift dargestellt.
Optionale Komponenten werden durch eckige Klammern ([ ]) angezeigt,
ausgenommen in dem Abschnitt über die Array-Syntax. Wenn verschiedene
Optionen aufgeführt werden, die sich gegenseitig ausschließen,
werden sie durch ein Pipe-Zeichen (¦) getrennt, so wie im folgenden:
[public¦private¦protected] Typ Varname
Reservierte Wörter
Die folgenden Wörter sind für die Verwendung durch die Java-Sprache
selbst reserviert (einige von ihnen sind zwar reserviert, finden momentan
aber keine Verwendung). Sie können diese Wörter nicht zur benennung
von Klassen, Methoden oder Variablen verwenden.
abstract |
double |
int |
static |
boolean |
else |
interface |
super |
break |
extends |
long |
switch |
byte |
final |
native |
synchronized |
case |
finally |
new |
this |
catch |
float |
null |
throw |
char |
for |
package |
throws |
class |
goto |
private |
transient |
const |
if |
protected |
try |
continue |
implements |
public |
void |
default |
import |
return |
volatile |
do |
instanceof |
short |
while |
Kommentare
Im Anschluß sehen Sie die in Java gültigen Kommentare:
/* dies ist ein mehrzeiliger Kommentar */
// dies ist ein einzeiliger Kommentar
/** Dies ist ein Javadoc-Kommentar */
Literale
Zahl |
-
Typ int
|
Zahl [l ¦ L] |
-
Typ long
|
0xhex |
Hex Integer |
0Xhex |
Hex Integer |
0octal |
Oktal Integer |
[Zahl].Zahl |
Typ double |
Zahl[f¦F] |
Typ float |
Zahl[d¦D] |
Typ double |
[+¦-] Zahl |
Mit Vorzeichen |
ZahleZahl |
Exponent |
ZahlEZahl |
Exponent |
'Zeichen' |
Einzelnes Zeichen |
"String" |
Zeichenkette |
"" |
Leere Zeichenkette |
\b |
Rückschritt |
\t |
Tabulator |
\n |
Zeilenvorschub |
\f |
Blattvorschub |
\r |
Carriage Return |
\" |
Doppeltes Anführungszeichen |
\' |
Einfaches Anführungszeichen |
\\ |
Backslash |
\uNNNN |
Unicode-escape (NNNN ist hex-Format) |
true |
Boolesch |
false |
Boolesch |
Variablendeklaration
[byte¦short¦int¦long]
Varname |
Ganzzahlen (einen Typ auswählen) |
[float¦double] Varname |
Gleitpunktzahlen (einen Typ auswählen) |
char Varname |
Zeichen |
boolean Varname |
Boolesch |
Klassenname Varname |
Klassentypen |
Typ Varname1, Varname2, Varname3 |
Mehrere Variablen |
Die folgenden Optionen sind nur für Klassen- und Instanzvariablen
verfügbar und können in einer Variablendeklaration benutzt werden:
[static] Variablendeklaration |
Klassenvariable |
[final] Variablendeklaration |
Konstanten |
[public¦private¦protected]
Variablendeklaration |
Zugriffskontrolle |
Variablenzuweisung
Variable = Wert |
Zuweisung |
Variable++ |
Postfix-Inkrement |
++Variable |
Präfix-Inkrement |
Variable— |
Postfix-Dekrement |
—Variable |
Präfix-Dekrement |
Variable += Wert |
Addieren und zuweisen |
Variable -= Wert |
Subtrahieren und zuweisen |
Variable *= Wert |
Multiplizieren und zuweisen |
Variable /= Wert |
Dividieren und zuweisen |
Variable %= Wert |
Modulo und zuweisen |
Variable &= Wert |
AND und zuweisen |
Variable ¦= Wert |
OR und zuweisen |
Variable ^= Wert |
XOR und zuweisen |
Variable <<= Wert |
Nach links verschieben und zuweisen |
Variable >>= Wert |
Nach rechts verschieben und zuweisen |
Variable <<<= Wert |
Mit Nullen auffüllen, nach rechts verschieben
und zuweisen |
Operatoren
Arg + Arg |
Addition |
Arg – Arg |
Subtraktion |
Arg * Arg |
Multiplikation |
Arg / Arg |
Division |
Arg % Arg |
Modulus |
Arg < Arg |
Kleiner als |
Arg > Arg |
Größer als |
Arg <= Arg |
Kleiner als oder gleich |
Arg >= Arg |
Größer als oder gleich |
Arg == Arg |
Gleich |
Arg != Arg |
Nicht gleich |
Arg && Arg |
Logisches AND |
Arg ¦¦ Arg |
Logisches OR |
! Arg |
Logisches NOT |
Arg & Arg |
AND |
Arg ¦ Arg |
OR |
Arg ^ Arg |
XOR |
Arg << Arg |
Nach links verschieben |
Arg >> Arg |
Nach rechts verschieben |
Arg >>> Arg |
Mit Nullen auffüllen und nach rechts verschieben |
~ Arg |
Komplement |
(Typ)etwas |
Umwandlung |
Arg instanceof Klasse |
Instanz von |
Test ? trueOp : falseOp |
Ternärer (if) Operator |
Objekte
new Klasse(); |
Neue Instanz erstellen |
new Klasse(Arg,Arg,Arg...) |
Neue Instanz mit Parametern |
new Typ(Arg,Arg,Arg...) |
Eine neue Instanz einer anonymen Klasse erstellen |
Primary.new Typ(Arg,Arg,Arg...) |
Eine neue Instanz einer anonymen Klasse erstellen |
Objekt.Variable |
Instanzvariable |
Objekt.Klassenvar |
Klassenvariable |
Klasse.Klassenvar |
Klassenvariable |
Objekt.Methode() |
Instanzmethode (ohne Argumente) |
Objekt.Methode(Arg,Arg,Arg...) |
Instanzmethode |
Objekt.Klassenmethode() |
Klassenmethode (ohne Argumente) |
Objekt.Klassenmethode(Arg,Arg,Arg...) |
Klassenmethode |
Klasse.Klassenmethode() |
Klassenmethode (ohne Argumente) |
Klasse.Klassenmethode(Arg,Arg,Arg...) |
Klassenmethode |
Arrays
Die eckigen Klammern in diesem Abschnitt sind Teil des Arrays bzw. der
Zugriffsanweisungen und keine alternativen Optionen wie in den vorherigen
Abschnitten.
Typ Varname[] |
Array-Variable |
Typ[] Varname |
Array-Variable |
new Typ[AnzElemente] |
Neues Array-Objekt |
Array[Index] |
Elementzugriff |
Array.length |
Array-Länge |
Schleifen und Bedingungen
if (Test) Block |
Bedingung |
if (Test) Block
else Block |
Bedingung mit else |
switch (Test) {
case Wert : Anweisungen
case Wert : Anweisungen
...
default : Anweisungen
} |
switch (nur für int-
oder char-Typen) |
for (Initialisierung; Test;
Veraenderung) Block |
for-Schleife |
while (Test) Block |
while-Schleife |
do Block
while (Test) |
do-Schleife |
break [Label] |
break von Schleife oder switch |
continue [Label] |
Kontinuierliche Schleife |
Label: |
Benannte Schleife |
Klassendefinitionen
class Klassenname Block |
Einfache Klassendefinition |
Die folgenden optionalen Modifier können in die Klassendefinition
eingefügt werden:
[final] class Klassenname Block |
Keine Subklassen erlaubt |
-
[abstract] class Klassenname Block
|
Keine Instanzen erlaubt |
[public] class Klassenname Block |
Zugriff außerhalb des Pakets |
class Klassenname [extends Superklasse]
Block |
Superklasse definieren |
class Klassenname [implements Schnittstellen]
Block |
Eine oder mehrere Schnittstellen implementieren |
Methoden- und Konstruktor-Definitionen
Die Basismethode sieht wie folgt aus, wobei RueckgabeTyp
ein Typname, ein Klassenname oder void ist.
RueckgabeTyp MethodenName()
Block |
Basismethode |
RueckgabeTyp MethodenName(Parameter1,
Parameter2, ...) Block |
Methode mit Parametern |
Methodenparameter sehen so aus:
Typ ParameterName
Methodenvariationen können eines der folgenden optionalen Schlüsselwörter
enthalten:
[abstract] RueckgabeTyp MethodenName()
Block |
Abstrakte Methode |
[static] RueckgabeTyp MethodenName()
Block |
Klassenmethode |
[native] RueckgabeTyp MethodenName()
Block |
Native Methode |
[final] RueckgabeTyp MethodenName()
Block |
final-Methode |
[synchronized] RueckgabeTyp MethodenName()
Block |
Thread-Sperre vor Ausführung |
[public¦private¦protected]
RueckgabeTyp MethodenName() |
Blockzugriffskontrolle |
Konstruktoren sehen wie folgt aus:
Klassenname() Block |
Basis-Konstruktor |
Klassenname(Parameter1, Parameter2,
Parameter3...) Block |
Konstruktor mit Parametern |
[public|private|protected] Klassenname()
Block |
Zugriffskontrolle |
Im Methoden-/Konstruktor-Rumpf können folgende Referenzen und
Methoden verwendet werden:
this |
Verweist auf das aktuelle Objekt |
super |
Verweist auf die Superklasse |
super.Methodenname() |
Ruft die Methode einer Superklasse auf |
this(...) |
Ruft den Konstruktor einer Klasse auf |
super(...) |
Ruft den Konstruktor der Superklasse auf |
return [Wert] |
Gibt einen Wert aus |
Pakete, Schnittstellen und Importieren
import Paket.Klassenname |
Importiert den spezifischen Klassennamen |
import Paket.* |
Importiert alle Klassen im Paket |
package Paketname |
Klassen in dieser Datei gehören zu diesem
Paket |
interface Schnittstellenname [extends
AndereSchnittstelle] Block |
|
[public] interface Schnittstellenname
Block |
|
[abstract] interface Schnittstellenname
Block |
|
Ausnahmen und Schutz
synchronized (Objekt) Block |
Wartet auf Sperre von Objekt |
try block |
Geschützte Anweisungen |
catch (Exception) Block |
Wird im Fall vom Auftreten von Exception
ausgeführt |
[finally Block] |
Wird immer ausgeführt – egal, was passiert |
try Block [catch (Exception)
Block] finally Block |
Wie im vorigen Beispiel (kann wahlweise catch
oder finally, jedoch nicht beide benutzen) |