.JAVA GLOSSAR A-E


TOC
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z


A

abstract
Abstrakte Klassen
In Java ist es möglich, abstrakte Methoden zu definieren. Im Gegensatz zu den konkreten Methoden enthalten sie nur die Deklaration der Methode, nicht aber ihre Implementierung. Syntaktisch unterscheiden sich abstrakte Methoden dadurch, dass anstelle der geschweiften Klammern mit den auszuführenden Anweisungen lediglich ein Semikolon steht. Zusätzlich wird die Methode mit dem Attribut abstract versehen. Abstrakte Methoden können nicht aufgerufen werden, sie definieren nur eine Schnittstelle. Erst durch Überlagerung in einer abgeleiteten Klasse und Implementierung des fehlenden Methodenrumpfes wird eine abstrakte Klasse konkret und kann aufgerufen werden.

Eine Klasse, die mindestens eine abstrakte Methode enthält, wird selbst als abstrakt angesehen und muss ebenfalls mit dem Schlüsselwort abstract versehen werden. Abstrakte Klassen können nicht instanziert werden, da sie Methoden enthalten, die nicht implementiert wurden. Statt dessen werden abstrakte Klassen abgeleitet, und in der abgeleiteten Klasse werden eine oder mehrere der abstrakten Methoden implementiert. Eine abstrakte Klasse wird konkret, wenn alle ihre Methoden implementiert sind. Die Konkretisierung kann dabei auch schrittweise über mehrere Vererbungsstufen erfolgen.

Eine Klasse kann ein Interface auch dann implementieren, wenn sie nicht alle seine Methoden implementiert. In diesem Fall ist die Klasse allerdings als abstract zu deklarieren und kann nicht dazu verwendet werden, Objekte zu instanzieren.


 Zum Seitenanfang ...  TO TOP   TO TOP  Zum Seitenanfang ... 


Adapterklasse

Eine Adapterklasse in Java ist eine Klasse, die ein vorgegebenes Interface mit leeren Methodenrümpfen implementiert. Adapterklassen können verwendet werden, wenn aus einem Interface lediglich ein Teil der Methoden benötigt wird, der Rest aber uninteressant ist. In diesem Fall leitet man einfach eine neue Klasse aus der Adapterklasse ab, anstatt das zugehörige Interface zu implementieren, und überlagert die benötigten Methoden. Alle übrigen Methoden des Interfaces werden von der Basisklasse zur Verfügung gestellt.

Eine Adapterklasse implementiert ein Interface mit mehreren Methoden und erlaubt es somit abgeleiteten Klassen, nur noch die Methoden zu überlagern, die tatsächlich von Interesse sind


 Zum Seitenanfang ...  TO TOP   TO TOP  Zum Seitenanfang ... 


Anonyme Klassen

Die häufigste Anwendung lokaler Klassen innerhalb von Methoden besteht darin, diese anonym zu definieren. Dabei erhält die Klasse keinen eigenen Namen, sondern Definition und Instanzierung erfolgen in einer kombinierten Anweisung. Eine anonyme Klasse ist also eine Einwegklasse, die nur einmal instanziert werden kann. Anonyme Klassen werden normalerweise aus anderen Klassen abgeleitet oder erweitern existierende Interfaces. Ihre wichtigste Anwendung finden sie bei der Definition von Listenern für graphische Oberflächen.

Beispiel: Verwendung einer anonymen Klasse als Ereignishandler: Die Verwendung einer anonymen Klasse, die aus KeyAdapter abgeleitet wurde, kann als Ereignisempfänger verwenet werden. Zum Instanzierungszeitpunkt erfolgt die Definition der überlagernden Methode keyPressed, in der der Code zur Reaktion auf das Drücken der Taste [ESC] untergebracht wird.

Vorteilhaft bei dieser Vorgehensweise ist der verminderte Aufwand, denn es muss keine separate Klassendefinition angelegt werden. Statt dessen werden die wenigen Codezeilen, die zur Anpassung der Adapterklasse erforderlich sind, dort eingefügt, wo die Klasse instanziert wird, nämlich beim Registrieren des Nachrichtenempfängers. Anonyme Klassen haben einen ähnlichen Einsatzbereich wie lokale, empfehlen sich aber vor allem, wenn sehr wenig Code für den Ereignisempfänger benötigt wird. Bei aufwendigeren Ereignisempfängern ist die explizite Definition einer benannten Klasse dagegen vorzuziehen.


 Zum Seitenanfang ...  TO TOP   TO TOP  Zum Seitenanfang ... 


Applet
Applets
Applets sind lauffähige Java-Programme. Anders als Applikationen, werden sie aus einer HTML-Seite heraus aufgerufen und benötigen zur Ausführung einen Web-Browser (oder ein Hilfsprogramm wie den Appletviewer, das sich in gewissem Sinne wie ein Web-Browser verhält).

Das Hauptprogramm eines Applets wird immer aus der Klasse Applet abgeleitet. Bei einer Applikation ist es prinzipiell gleichgültig, woraus die Hauptklasse abgeleitet wird.Applets werden nicht durch die Methode public static void main gestartet, sondern müssen aus der Klasse Applet abgeleitet und nach deren Architekturmerkmalen konstruiert werden. Zum Starten des Programms erzeugt der Browser eine Instanz der abgeleiteten Klasse und ruft nacheinander eine Reihe vordefinierter Callback-Methoden auf. Callback-Methoden sind Methoden, die von der abgeleiteten Klasse zur Verfügung gestellt und vom Browser oder AppletViewer aufgerufen werden.

Die für die Entwicklung von Applets wichtige Klasse Applet ist eine direkte Unterklasse von Panel. Sie erweitert zwar die Funktionalität der Klasse Panel um Methoden, die für das Ausführen von Applets von Bedeutung sind, bleibt aber letzlich ein Programmelement, das eine Größe und Position hat, auf Ereignisse reagieren kann und in der Lage ist, weitere Komponenten aufzunehmen. Einerseits ist es bemerkenswert, daß eine Klasse wie Applet, die für eine riesige Zahl von Anwendungen von elementarer Bedeutung ist, ganz unten in der Vererbungskette eines stark spezialisierten Zweigs der Klassenhierarchie steht. Andererseits liefert die Klasse Applet jedoch mit der vorstehenden Beschreibung eine nahezu perfekte Charakterisierung von Applets.

Im Gegensatz zu den eingeschränkten Möglichkeiten, die Script-Sprachen wie JavaScript bieten, sind Applets vollständige Java-Programme, die alle Merkmale der Sprache nutzen können. Insbesondere besitzt ein Applet alle Eigenschaften eines grafischen Ausgabefensters und kann zur Anzeige von Text, Grafik und Dialogelementen verwendet werden. Einer der großen Vorteile von Applets gegenüber herkömmlichen Programmen ist ihre einfache Distributierbarkeit. Anstelle explizit auszuführender Installationsroutinen lädt der Classloader des Browsers die Bestandteile eines Applets einfach aus dem Netz und führt sie direkt aus. Das ist vor allem bei kleineren und mittelgroßen Anwendungen in einer lokalen Netzwerkumgebung sehr hilfreich, insbesondere wenn diese sich häufig ändern.

Sicherheit war eines der wichtigsten Designziele bei der Entwicklung von Java, und es gibt eine ganze Reihe von Sicherheitsmechanismen, die verhindern sollen, dass Java-Applets während ihrer Ausführung Schaden anrichten. So ist es einem Applet, das in einem Web-Browser läuft, beispielsweise nicht erlaubt, Dateioperationen auf dem lokalen Rechner durchzuführen oder externe Programme zu starten.

Tatsächlich unterscheiden sich Applets und Applikationen gar nicht so stark voneinander, wie man vermuten könnte. Bis auf wenige Ausnahmen werden sie mit denselben Werkzeugen und Techniken konstruiert. Vereinfacht kann man sagen, dass Java-Applikationen eigenständige Programme sind, die zur Ausführung den Stand-Alone-Java-Interpreter benötigen, während Java-Applets aus HTML-Seiten heraus aufgerufen werden und zur Ausführung einen Web-Browser benötigen.

Die wichtigsten Unterschiede kann man in einer kurzen Liste zusammenfassen:

· Das Hauptprogramm eines Applets wird immer aus der Klasse Applet abgeleitet. Bei einer Applikation ist es prinzipiell gleichgültig, woraus die Hauptklasse abgeleitet wird.

· Eine Applikation wird gestartet, indem vom Java-Interpreter die Klassenmethode main aufgerufen wird. Das Starten eines Applets wird dadurch erreicht, daß der Web-Browser die Applet-Klasse instanziert und die Methoden init und start aufruft.

· Aus Sicherheitsgründen darf ein Applet in der Regel weder auf Dateien des lokalen Rechners zugreifen noch externe Programme auf diesem starten. Eine Ausnahme bilden signierte Applets. Für eine Applikation gelten diese Beschränkungen nicht.

· Ein Applet arbeitet immer grafik- und ereignisorientiert. Bei einer Applikation dagegen ist es möglich, auf die Verwendung des AWT zu verzichten und alle Ein-/Ausgaben textorientiert zu erledigen.

· Applets bieten einige zusätzliche Möglichkeiten im Bereich des Benutzerschnittstellen-Designs, die so bei Applikationen nicht ohne weiteres zu finden sind. Die Ausgabe von Sound beispielsweise ist standardmäßig auf Applets beschränkt.


 Zum Seitenanfang ...  TO TOP   TO TOP  Zum Seitenanfang ... 


Applikationen
 
Applikationen bilden eigenständige Programme in Java. Sie benötigen keinen Browser zur Ausführung, sondern nur den Java-Interpreter und die .class-Files der verwendeten Klassen.

Technisch betrachtet ist eine Applikation nicht mehr als eine einzelne Klasse, in der eine Methode vom Typ public static void main definiert wurde. Jede Klasse, die eine solche Methode enthält, kann als Applikation verwendet werden.

Durch einfaches Hinzufügen einer Methode public static void main kann also jede beliebige Klasse sehr leicht in eine Applikation verwandelt und vom Java-Interpreter aufgerufen werden. Dies kann beispielsweise nützlich sein, um in Low-Level-Klassen, die eigentlich nur als Dienstleister auftreten, eigenständig ausführbaren Testcode unterzubringen, oder um eine solche Klasse mit Benutzungshinweisen auszustatten, die der Entwickler durch einfaches Starten der Klasse als Applikation abrufen kann.


 Zum Seitenanfang ...  TO TOP   TO TOP  Zum Seitenanfang ... 


Applikations-Server
Mehrstufige Client-Server-Architekturen
Mit JDBC können sowohl zwei- als auch drei- oder höherstufige Client-Server-Systeme aufgebaut werden (Multi-Tier-Architekturen). Während bei den zweistufigen Systemen eine Aufteilung der Applikation in Datenbank (Server) und Arbeitsplatz (Client) vorgenommen wird, gibt es bei den dreistufigen Systemen noch eine weitere Schicht, die zwischen beiden Komponenten liegt. Sie wird gemeinhin als Applikations-Server bezeichnet und dient dazu, komplexe Operationen vom Arbeitsplatz weg zu verlagern. Der Applikations-Server ist dazu mit dem Datenbank-Server verbunden und kommuniziert mit diesem über ein standardisiertes Protokoll (z.B. JDBC). Den Arbeitsplätzen stellt er dagegen höherwertige Dienste (z.B. komplette Business-Transaktionen) zur Verfügung und kommuniziert mit ihnen über ein spezielles Anwendungsprotokoll (z.B. HTTP, RMI, CORBA oder andere).

 Zum Seitenanfang ...  TO TOP   TO TOP  Zum Seitenanfang ... 

B

Bezeichner
 
Ein Bezeichner ist eine Sequenz von Zeichen, die dazu dient, die Namen von Variablen, Klassen oder Methoden zu spezifizieren. Ein Bezeichner in Java kann beliebig lang sein, und alle Stellen sind signifikant. Bezeichner müssen mit einem Unicode-Buchstaben beginnen (das sind die Zeichen 'A' bis 'Z', 'a' bis 'z', '_' und '$') und dürfen dann weitere Buchstaben oder Ziffern enthalten. Unterstrich und Dollarzeichen sollen nur aus historischen Gründen bzw. bei maschinell generiertem Java-Code verwendet werden.

Ein Buchstabe im Sinne des Unicode-Zeichensatzes muss nicht zwangsläufig aus dem lateinischen Alphabet stammen. Es ist auch zulässig, Buchstaben aus anderen Landessprachen zu verwenden. Java-Programme können daher ohne weiteres Bezeichner enthalten, die nationalen Konventionen folgen. Java-Bezeichner dürfen jedoch nicht mit Schlüsselwörtern, den booleschen Literalen true und false oder dem Literal null kollidieren.


 Zum Seitenanfang ...  TO TOP   TO TOP  Zum Seitenanfang ... 


boolean
 
Mit boolean besitzt Java einen eigenen logischen Datentyp und beseitigt damit eine oft diskutierte Schwäche von C und C++. Der boolean-Typ muss zwangsweise dort verwendet werden, wo ein logischer Operand erforderlich ist. Ganzzahlige Typen mit den Werten 0 oder 1 dürfen nicht als Ersatz für einen logischen Typen verwendet werden.Der Datentyp boolean kennt zwei verschiedene Werte, nämlich true und false. Neben den vordefinierten Konstanten gibt es keine weiteren Literale für logische Datentypen.Zu beachten ist, dass der Testausdruck in der Schleife vom Typ boolean sein muss. Anders als in C ist es in Java nicht erlaubt, einen numerischen Ausdruck an seiner Stelle zu verwenden.

Wertebereich: true, false; Standardwert: false


 Zum Seitenanfang ...  TO TOP   TO TOP  Zum Seitenanfang ... 


byte
 
Java stellt vier ganzzahlige Datentypen zur Verfügung, und zwar byte, short, int und long, mit jeweils 1, 2, 4 und 8 Byte Länge. Alle ganzzahligen Typen sind vorzeichenbehaftet, und ihre Länge ist auf allen Plattformen gleich.

Wertebereich: -27...27-1; Standardwert: 0


 Zum Seitenanfang ...  TO TOP   TO TOP  Zum Seitenanfang ... 

C

Call by Reference
Wrapper-Klassen
Da Objektparameter im Gegensatz zu primitiven Typen per Referenz übergeben werden, wären Wrapper-Klassen prinzipiell geeignet, Methodenparameter per call by reference zu übergeben. Damit könnten Änderungen von primitiven Parametern an den Aufrufer zurückgegeben werden. In der Praxis funktioniert das allerdings nicht, denn alle vordefinierten Wrapper-Klassen sind unveränderlich (das wird auch als immutable bezeichnet).

Sollen primitive Typen per Referenz übergeben werden, bieten sich zwei Möglichkeiten an:

1. Der primitive Typ kann in einen eigenen Wrapper verpackt werden, der das Ändern des Wertes erlaubt.

2. Der primitive Typ kann als Element eines Array übergeben werden. Da Arrays Objekte sind und somit stets per Referenz übergeben werden, sind Änderungen an ihren Elementen auch für den Aufrufer sichtbar.


 Zum Seitenanfang ...  TO TOP   TO TOP  Zum Seitenanfang ... 


case
 
Nachdem ein case- oder default-Label angesprungen wurde, werden alle dahinterstehenden Anweisungen ausgeführt. Im Gegensatz zu Sprachen wie PASCAL erfolgt auch dann keine Unterbrechung, wenn das nächste Label erreicht wird. Wenn dies erwünscht ist, muss der Kontrollfluss wie in C und C++ mit Hilfe einer break-Anweisung unterbrochen werden. Jedes break innerhalb einer switch-Anweisung führt dazu, dass zum Ende der switch-Anweisung verzweigt wird.

Wie aus den bisherigen Ausführungen deutlich wurde, ist die Semantik der switch-Anweisung in Java der in C und C++ sehr ähnlich. Ein wichtiger Unterschied besteht darin, dass in Java alle Anweisungen, die unmittelbar innerhalb des switch liegen, case- oder default-Labels sein müssen. Der Trick, in switch-Anweisungen Schleifen zu packen, die sich über mehrere Labels erstrecken, funktioniert in Java nicht.


 Zum Seitenanfang ...  TO TOP   TO TOP  Zum Seitenanfang ... 


catch
Die try-catch-Anweisung
Der try-Block enthält dabei eine oder mehrere Anweisungen, bei deren Ausführung ein Fehler des Typs Ausnahmetyp auftreten kann. In diesem Fall wird die normale Programmausführung unterbrochen, und der Programmablauf fährt mit der ersten Anweisung nach der catch-Klausel fort, die den passenden Ausnahmetyp deklariert hat. Hier kann nun Code untergebracht werden, der eine angemessene Reaktion auf den Fehler realisiert. [try]

 Zum Seitenanfang ...  TO TOP   TO TOP  Zum Seitenanfang ... 


class
Die Klasse Class [Klassen]
Eine Klassendefinition in Java wird durch das Schlüsselwort class eingeleitet. Anschließend folgt innerhalb von geschweiften Klammern eine beliebige Anzahl an Variablen- und Methodendefinitionen.

 Zum Seitenanfang ...  TO TOP   TO TOP  Zum Seitenanfang ... 


CLASSPATH
Laden von Klassen im JDK 1.2 und 1.3
Anders als in den Vorgängerversionen benötigen die JDKs 1.2 und 1.3 bei einer Standardinstallation unter Windows keine Umgebungsvariable CLASSPATH mehr, denn die entsprechenden Informationen werden bei der Installation in die Registry geschrieben (sie liegen in unterschiedlichen Abschnitten, eine Suche nach »javasoft« hilft weiter). Ist jedoch eine CLASSPATH-Variable vorhanden, wird sie auch verwendet. Wird das JDK 1.2 oder 1.3 also über eine 1.0er oder 1.1er Version installiert, muss dafür gesorgt werden, dass eine eventuell gesetzte CLASSPATH-Variable modifiziert oder entfernt wird. Es ist insbesondere häufig passiert, dass durch falsches Setzen oder Nichtentfernen veralteter Umgebungsvariablen die Systemklassen selbst nicht mehr gefunden werden konnten und auf diese Weise das gesamte Laufzeitsystem unbenutzbar wurde.

Um dem Compiler diese Art der Speicherung der Klassendateien bekannt zu machen, muss in der CLASSPATH-Umgebungsvariable nicht nur das Verzeichnis, sondern auch der Name der .zip-Datei angegeben werden, z.B.:

CLASSPATH=.;c:\java\LIB\CLASSES.ZIP
Seit dem JDK 1.2 gibt es die Datei classes.zip nicht mehr. Die Klassenbibliotheken liegen nun als .jar-Dateien (z.B. rt.jar ) vor und befinden sich im Unterverzeichnis jre\lib der JDK-Installation. Wie zuvor erwähnt, werden sie unabhängig vom Inhalt der CLASSPATH Umgebungsvariable gefunden.

Seit dem JDK 1.2 wurde daher die Bedeutung der CLASSPATH-Umgebungsvariable dahingehend verändert, dass sie nur noch zur Suche der benutzerspezifischen Klassen verwendet wird. Alle Standardpakete und Standarderweiterungen (beide zusammen werden seit dem JDK 1.2 Bootstrap Classes genannt) werden dagegen unabhängig vom CLASSPATH mit Hilfe der auf das Installationsverzeichnis verweisenden Systemeigenschaft sun.boot.class.path gefunden. Sie wird bei der JDK-Installation automatisch gesetzt und sollte später nicht mehr verändert werden. Der CLASSPATH braucht also nur noch dann explizit gesetzt zu werden, wenn benutzerspezifische Klassen vorhanden sind, die nicht im aktuellen Verzeichnis liegen (letzteres wird ebenfalls automatisch durchsucht).


 Zum Seitenanfang ...  TO TOP   TO TOP  Zum Seitenanfang ... 

D

default
Die switch-Anweisung
Das optionale default-Label wird dann angesprungen, wenn keine passende Sprungmarke gefunden wird. Ist kein default-Label vorhanden und wird auch keine passende Sprungmarke gefunden, so wird keine der Anweisungen innerhalb der switch-Anweisung ausgeführt. Jede Konstante eines case-Labels darf nur einmal auftauchen. Das default-Label darf maximal einmal verwendet werden.

Nachdem ein case- oder default-Label angesprungen wurde, werden alle dahinterstehenden Anweisungen ausgeführt. Im Gegensatz zu Sprachen wie PASCAL erfolgt auch dann keine Unterbrechung, wenn das nächste Label erreicht wird. Wenn dies erwünscht ist, muss der Kontrollfluss wie in C und C++ mit Hilfe einer break-Anweisung unterbrochen werden.


 Zum Seitenanfang ...  TO TOP   TO TOP  Zum Seitenanfang ... 

E

extends
Ableiten einer Klasse
Um eine neue Klasse aus einer bestehenden abzuleiten, ist im Kopf der Klasse mit Hilfe des Schlüsselworts extends ein Verweis auf die Basisklasse anzugeben. Hierdurch erbt die abgeleitete Klasse alle Eigenschaften der Basisklasse, d.h. alle Variablen und alle Methoden. Durch Hinzufügen neuer Elemente oder Überladen der vorhandenen kann die Funktionalität der abgeleiteten Klasse erweitert werden.

Die Vererbung von Klassen kann beliebig tief geschachtelt werden. Eine abgeleitete Klasse erbt dabei jeweils die Eigenschaften der unmittelbaren Vaterklasse, die ihrerseits die Eigenschaften ihrer unmittelbaren Vaterklasse erbt usw. Wir können also beispielsweise die Klasse Cabrio verwenden, um daraus eine neue Klasse ZweisitzerCabrio abzuleiten

Nicht jede Klasse darf zur Ableitung neuer Klassen verwendet werden. Besitzt eine Klasse das Attribut final, ist es nicht erlaubt, eine neue Klasse aus ihr abzuleiten.



Quelle: Java - Glossary zusammengestellt aus „Go To Java 2“, Zweite Auflage, Addison Wesley, Version 2.0 © 2000 Guido Krüger