Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage
<< | < | > | >> | API | Kapitel 3 - Wie geht es weiter?

## 3.2 Weiterführende Informationen

- 3.2 Weiterführende Informationen
  - 3.2.1 Die Dokumentation des JDK
  - 3.2.2 Informationen im Internet
    - Usenet
    - Meta-Ressourcen
    - FAQs
    - Online-Magazine und Dokumentationen
  - 3.2.3 Die HTML-Ausgabe
    - Beschreibung
    - Navigation mit der Maus
    - Navigation über die Tastatur
    - Einsatz von JavaScript
  - 3.2.4 Die im Buch verwendete UML-Notation

### 3.2.1 Die Dokumentation des JDK

Die Dokumentation zum JDK befindet sich auf der beigefügten CD-ROM. Sie liegt im Verzeichnis \install\jdk14 und kann wie in Abschnitt 2.1 beschrieben installiert werden. Zusätzlich befinden sich diverse weiterführende Informationen, Dokumentationen und Spezifikationen zu verschiedenen Aspekten der Java-Programmierung im Verzeichnis \java der CD-ROM. Es empfiehlt sich, die Datei \readme.txt zu lesen, um einen Überblick über den Inhalt der CD-ROM zu bekommen.

Wird die JDK-Dokumentation in das vorgeschlagene Installationsverzeichnis extrahiert, kann sie durch Aufruf der Datei c:\jdk1.4\docs\index.html mit einem HTML-Browser gelesen werden. Diese Einstiegsseite enthält Verweise auf alle anderen Teile der Dokumentation. Ein Großteil von ihnen wird zusammen mit dem JDK ausgeliefert, es gibt aber auch Online-Ressourcen, die auf dem JavaSoft-Server liegen. Die folgenden Hauptthemen sind als Verweise am oberen Rand der Startseite angeordnet und können direkt angesprungen werden:

Name | Beschreibung
General Info | Allgemeine Infos zur Installation des JDK, Lizenzbestimmungen, Versionen, Fehlerhinweise
API & Language | Verweis auf die API-Dokumentation des JDK
Guide To Features | Überblick über alle großen Pakete des JDK, mit Hinweisen zur Architektur, Erläuterungen und teilweise Spezifikationen
Tool Docs | Dokumentation der Hilfsprogramme des JDK
J2RE & Plug-In | Verweis auf die Online-Dokumentation zum JRE und zum Java-PlugIn (siehe Abschnitt 40.4)
Demos/Tutorials | Aufruf der beigefügten Demo-Applets sowie Verweis auf eine Vielzahl von Online-Ressourcen zu Java

Tabelle 3.1: Inhalt der JDK-Dokumentation

Die bei der täglichen Arbeit wichtigste Dokumentation ist die API-Dokumentation des JDK. Sie kann über den Link »API & Language« oder durch direkten Aufruf der Datei c:\jdk1.4\docs\api\index.html gestartet werden. Als API bezeichnet man das Application Programming Interface, also die Programmierschnittstelle einer Klasse, eines Pakets oder einer ganzen Bibliothek. Die API-Dokumentation des JDK gibt detaillierte Auskunft zu allen öffentlichen Paketen, Klassen, Methoden und Variablen. Sie wurde von den JDK-Entwicklern mit `javadoc` generiert und sieht seit dem JDK 1.2 etwa so aus:

Abbildung 3.1: Die API-Dokumentation des JDK

Die drei Fenster haben folgende Bedeutung:

- Im linken oberen Fenster findet sich eine Liste aller Pakete des JDK. Ein Klick auf eines der Pakete stellt die Liste der zugehörigen Klassen im linken unteren Fenster dar.
- Das linke untere Fenster zeigt alle Klassen, Interfaces und Exceptions des aktuellen Pakets. Wird ein Element angeklickt, so erscheint auf der rechten Seite seine Beschreibung.
- Auf der rechten Seite wird eine einzelne Klasse oder ein Interface beschrieben. Am oberen Rand werden Vererbungsinformationen angezeigt, darunter folgt die allgemeine Klassenbeschreibung. Anschließend kommt eine Linkleiste für Konstanten, Variablen, Konstruktoren und Methoden. Ein Klick auf eines dieser Elemente verzweigt zu dessen detaillierter Beschreibung. Abbildung 3.1 zeigt die Beschreibung der Methode `addElement` der Klasse `Vector` des Pakets `java.util`.

Die API-Dokumentation ersetzt zwar nicht die konzeptionelle Beschreibung der Java-Themen (das ist Aufgabe dieses Buchs), als Nachschlagewerk zu Details der Klassenbibliothek ist sie jedoch unentbehrlich. Der Umgang mit ihr sollte jedem Java-Entwickler in Fleisch und Blut übergehen. Manchmal bieten die Hilfesysteme der integrierten Entwicklungsumgebungen sogar noch komfortablere Möglichkeiten, auf die Dokumentation von Klassen und Methoden zuzugreifen.

|  |  |  | Durch die alphabetische Anordnung der Pakete muß im linken oberen Fenster sehr häufig gescrollt werden. Einfacher wird es, wenn die wichtigsten und am häufigsten benötigten Pakete in der Liste nach oben verschoben werden. Wer rudimentäre HTML-Kenntnisse hat, kann dazu die Datei c:\jdk1.4\docs\api\overview-frame.html mit einem Texteditor öffnen und die gewünschten Zeilen editieren. Nützlich wäre es beispielsweise, die Pakete `java.lang`, `java.io`, `java.util`, `java.awt`, `java.awt.event`, `javax.swing`, `java.sql` und `java.net` an den Anfang der Liste zu setzen. |  |
Tip

### 3.2.2 Informationen im Internet

Java ist die Sprache des Internet, und folglich gibt es unzählige Ressourcen im Internet, die sich in der einen oder anderen Weise mit Java beschäftigen. Leider veralten viele der Adressen fast ebenso schnell, wie sie erschienen sind, und ein Buch ist daher nur bedingt geeignet, sie aufzuzählen. Wir wollen uns auf einige der wichtigsten Adressen beschränken, die bei der Entwicklung von Java-Programmen nützlich sein können.

#### Usenet

Die offiziellen Usenet-Newsgroups zu Java beginnen mit dem Namen `comp.lang.java`. Hier gibt es eine ganze Reihe von Untergruppen zu speziellen Themen. Leider ist die Abgrenzung zwischen den einzelnen Untergruppen nicht immer klar, und es kommt regelmäßig zu Überschneidungen und Crosspostings. Tabelle 3.2 listet die Gruppen der `comp.lang.java`-Hierarchie auf.

Newsgroup | Inhalt
news:comp.lang.java.3d | Diskussionen über das Java-3D-API (Homepage auf http://www.j3d.org/)
news:comp.lang.java.advocacy | Allgemeine Diskussionen über Java
news:comp.lang.java.announce | Moderierte Newsgroup mit Ankündigungen und Vorstellungen von Neuentwicklungen. Wird kaum noch verwendet.
news:comp.lang.java.api | Das Application Programming Interface und die Klassenbibliothek. Die Gruppe ist veraltet und sollte nicht mehr verwendet werden.
news:comp.lang.java.beans | Die Komponentenarchitektur Beans
news:comp.lang.java.corba | Java, CORBA und Objektverteilung im Netz
news:comp.lang.java.databases | Datenbankprogrammierung mit JDBC. Die kurze Zeit vorhandene Gruppe `comp.lang.java.database` wird nicht verwendet.
news:comp.lang.java.gui | Programmierung von grafischen Oberflächen und Diskussion von GUI-Buildern
news:comp.lang.java.help | Allgemeine Quelle für Fragen aller Art, von der Installation bis zu Programmierproblemen
news:comp.lang.java.machine | Diskussionen um VMs und alles, was sich unterhalb der Sprachebene abspielt. Ersetzt die Gruppe comp.lang.java.tech.
news:comp.lang.java.misc | Veraltete Gruppe mit Diskussionen zu unterschiedlichen Themen. Sollte eigentlich nicht mehr verwendet werden.
news:comp.lang.java.programmer | Stark frequentierte Newsgroup zu allen möglichen Aspekten der Java-Programmierung
news:comp.lang.java.security | Diskussion von Sicherheitsaspekten
news:comp.lang.java.setup | Diskussion von Installationsaspekten. Ist veraltet und sollte durch comp.lang.java.help ersetzt werden.
news:comp.lang.java.softwaretools | Diskussionen zu Tools, Werkzeugen und Entwicklungsumgebungen rund um Java
news:comp.lang.java.tech | Veraltete Gruppe zu technischen Fragestellungen. Wurde durch news:comp.lang.java.machine ersetzt.
news:comp.lang.javascript | Hier dreht sich alles um die Script-Sprache JavaScript. Diese Gruppe hat daher keinen direkten Bezug zu Java, soll aber der Vollständigkeit halber erwähnt werden.
news:de.comp.lang.java | Es gibt auch eine mittlerweile sehr stark frequentierte deutsche Newsgroup, in der alle Aspekte von Java diskutiert werden. Diese besitzt zudem eine Homepage http://www.dclj.de, auf der wichtige Dokumente direkt zur Verfügung gestellt werden.

Tabelle 3.2: Die comp.lang.java-Hierarchie im Usenet

#### Meta-Ressourcen

Unter http://java.sun.com/ oder http://www.javasoft.com/ finden Sie den Java-Server von SUN bzw. SUNs JavaSoft Division. Hier sind Informationen aus erster Hand von den Entwicklern der Sprache zu finden. Dieser Server ist die erste Adresse, wenn es um Neuigkeiten, aktuelle Entwicklungen und Dokumentationen geht. Hier gibt es auch Links zu weiteren Meta-Ressourcen, die hier nicht erwähnt werden. Ein direkter Link auf die von SUN für Java zur Verfügung gestellten Entwicklungsumgebungen ist http://java.sun.com/products/. Unter der Adresse http://java.sun.com/j2se/1.4/ gibt es alles rund um die aktuelle Java-Version 1.4.

Eine wichtige Adresse für Entwickler ist auch die der Java Developer's Connection (JDC) unter http://developer.java.sun.com/. Diese Seiten werden von SUN gepflegt, um eine zentrale Anlaufstelle für Java-Entwickler zur Verfügung zu stellen. Es gibt dort Diskussionsforen, Schulungsangebote, weitere Software und jede Menge nützliche Informationen. Wichtiges »Organ« der JDC ist der JDC-Newsletter. Dabei handelt es sich um einen Newsletter, der per E-Mail regelmäßig über aktuelle Neuerungen informiert. Der Zutritt zur JDC ist kostenlos, erfordert aber das Ausfüllen einer Registrierungsseite.

Mitunter ebenfalls wichtig ist die - etwas euphemistisch als Bug Parade bezeichnete - Fehlerdatenbank des Java Development Kit. Hier werden alle bekannten Fehler gelistet und mit Beschreibung, Behebungs-Status und möglichen Workarounds beschrieben. Die Bug Parade kann unter http://developer.java.sun.com/developer/bugParade/index.jshtml erreicht und online nach Fehlern durchsucht werden. Registrierte Entwickler können neue Fehler eintragen oder zu bekannten Fehlern ihre Stimme abgegeben - in der Hoffnung, dadurch die Behebung zu beschleunigen.

Auch in den großen Web-Verzeichnissen gibt es meist eigene Rubriken für die Programmiersprache Java. Yahoo stellt diese beispielsweise unter http://www.yahoo.com/Computers_and_Internet/Programming_Languages/Java zur Verfügung, und bei Google lautet die Adresse http://directory.google.com/Top/Computers/Programming/Languages/Java/.

In der Anfangszeit der Java-Entwicklung gab es eine ganze Reihe von Sites, die Unmengen an freien Java-Tools, -Applets und -Programmen oder frei zugänglichen Quellcode anboten. Viele von ihnen sind mittlerweile verschwunden, in einem anderen Dienst aufgegangen oder wurden kommerzialisiert. Einige Anlaufstellen sind http://www.componentsource.com/, http://www.jguru.com/, http://www.sunsource.net/, http://www.jars.com/ oder das von SUN verwaltete Verzeichnis von Java-Lösungen http://industry.java.sun.com/solutions/. Frei zugängliche Java-Software und -Projekte gibt es unter anderem auf http://www.gnu.org/software/software.html#Java, http://jakarta.apache.org/, http://sourceforge.net/ oder http://freshmeat.net/.

JavaLobby ist ein Zusammenschluß von Java-Enthusiasten, die das Ziel verfolgen, die Sprache zu verbreiten und für ein »100 % Pure Java« einzutreten. Die Homepage unter http://www.javalobby.org/ bietet auch eine ganze Menge Verweise zu Java-Ressourcen und interessante Artikel rund um Java. Unter der Adresse http://www.apl.jhu.edu/~hall/java/ verwaltet Marty Hall von der Johns Hopkins University eine interessante Liste von Java-Ressourcen mit Links zu FAQs, weiteren Dokumentationen, Beispielanwendungen, Entwicklungsumgebungen, Klassenbibliotheken und vielem anderen mehr.

#### FAQs

Eine Liste von Java-FAQs gibt es unter http://www.faqs.org/faqs/computer-lang/java/. Dort wird auch auf das sehr umfangreiche, aber nicht mehr ganz aktuelle FAQ von Peter van der Linden verwiesen, das unter http://www.afu.com/javafaq.html gefunden werden kann. Eine weitere Liste von Java-FAQs gibt es unter http://www.links2go.com/topic/java_faqs.

Von Roedy Green gibt es unter http://mindprod.com/jgloss.html ein Glossar, in dem viele Begriffe und Konzepte rund um Java erläutert werden.

Von SUN selbst gibt es ebenfalls ein FAQ, das unter http://www.javasoft.com/products/jdk/faq.html zu finden ist. Dort sind auch einige Metainformationen und firmenbezogene Informationen über Java zu finden.

Einige FAQs zur deutschen Java-Newsgroup sind unter http://www.dclj.de/faq.html zu finden.

#### Online-Magazine und Dokumentationen

Unter http://www.sys-con.com/java/ ist die Onlineversion des Java Developer's Journal zu finden. Unter http://www.javaworld.com/ findet sich die Java World, und die Adresse für den Java Report Online ist http://www.javareport.com/. Auch das nicht sprachgebundene Dr. Dobb's Journal hat eine Java-Rubrik unter http://www.ddj.com/topics/java/. Das auch in deutscher Sprache erhältliche Java Spektrum ist unter http://www.sigs-datacom.de/sd/publications/js/index.htm zu finden. Online steht es allerdings nur in Auszügen zur Verfügung.

Auf dem SUN-Server gibt es weitere Dokumentationen zu Java. Auf http://java.sun.com/docs/books/ wird die Java Series vorgestellt, in der SUN zusammen mit Addison-Wesley eine große Zahl von Java-Büchern publiziert hat. Unter http://java.sun.com/docs/books/jls/index.html ist die Sprachspezifikation zu finden, und die Beschreibung der virtuellen Maschine findet sich unter http://java.sun.com/docs/books/vmspec/index.html.

### 3.2.3 Die HTML-Ausgabe

#### Beschreibung

Auf der CD-ROM befindet sich im Verzeichnis \html die HTML-Ausgabe des Buchs. Alternativ kann sie auch von http://www.javabuch.de oder http://www.gkrueger.com heruntergeladen werden. Sie enthält den kompletten Buchtext und eignet sich mit ihren Querverweisen und Navigationshilfen ausgezeichnet als Nachschlagewerk. Die HTML-Ausgabe kann direkt von der CD-ROM aufgerufen oder lokal installiert werden. Beides ist in der beigefügten Dokumentation beschrieben.

Abbildung 3.2: Die HTML-Ausgabe des Buchs

Die HTML-Ausgabe sollte mit den gängigen aktuellen Browsern gelesen werden können. Getestet wurde sie mit den 4er und 6er Versionen des Netscape Navigator, mit Internet Explorer 4, 5 und 6 und mit Opera 3.5 (wegen fehlender JavaScript-Unterstützung und leicht abweichender Tabellenformatierung gibt es hier einige Einschränkungen). Die im Text verwendeten Farben wurden Web-konform gewählt und sollten auch auf LCD-Bildschirmen und 256-Farben-Displays gut lesbar sein. Als sinnvolle Mindestauflösung kann 800 * 600 Pixel angesehen werden, wenn die Schriftgröße im Browser nicht zu groß eingestellt ist.

#### Navigation mit der Maus

Es gibt eine Vielzahl von Navigationshilfen:

- Alle Seiten enthalten am oberen und unteren Ende eine Navigationsleiste, mit der folgende Seiten direkt angesprungen werden können:
  - "Titel": Titelseite
  - "Inhalt": Globales Inhaltsverzeichnis
  - "Suchen": Suchfunktion
  - "Index": Index
  - "DOC": Die Hauptseite der JDK-Dokumentation
  - "<<": Voriges Kapitel
  - "<": Voriger Abschnitt
  - ">": Nächster Abschnitt
  - ">>": Nächstes Kapitel
  - "API": Die API-Dokumentation zum JDK
- Das Inhaltsverzeichnis paßt normalerweise auf eine Seite und kann ohne Scrollen bedient werden.
- Alle Java-Bezeichner, Klassen-, Interface- und Methodennamen sind als Links realisiert und führen direkt in den Index.
- Internet-Links führen direkt zu der abgedruckten Ressource.
- Syntaxdiagramme haben auf der rechten Seite einen Link, der direkt auf die API-Dokumentation der betreffenden Klasse führt.
- Listings haben auf der rechten Seite einen Link, der direkt zu der abgedruckten Quelldatei führt. Bei Bedarf kann diese durch Aufruf des Browser-Menüs »Speichern unter« (meist durch `[STRG]`+`[S]` zu erreichen) direkt als Datei gespeichert werden.
- Am Anfang jedes Kapitels und Abschnitts findet sich ein lokales Inhaltsverzeichnis.
- Verweise auf Abbildungen, Listings und Tabellen können als Links direkt angesprungen werden.
- Der Index enthält neben den Textverweisen bei Klassen-, Interface- und Methodennamen auch einen Verweis auf die zugehörige API-Dokumentation.
- Die Hauptseite des Index enthält nicht nur einen einzelnen Verweis auf den Anfang jedes Indexbuchstabens, sondern - je nach Anzahl der Einträge - auch auf Unterteilungen davon. Diese erleichtern das Auffinden von Fundstellen insbesondere bei Buchstaben wie »G« oder »S« mit Hunderten von Einträgen.

#### Navigation über die Tastatur

Es gibt eine limitierte Form der Tastaturbedienung, mit der wichtige Seiten ohne Zuhilfenahme der Maus angesprungen werden können. Auf den meisten Seiten stehen folgende Tastaturbefehle zur Verfügung:

- `[t]`: Titelseite
- `[Z]`: Globales Inhaltsverzeichnis
- `[S]`: Suchfunktion
- `[i]`: Index
- `[p]`: API-Dokumentation
- `[d]`: JDK-Dokumentation
- `[h]`: Voriges Kapitel
- `[j]`: Voriger Abschnitt
- `[k]`: Nächster Abschnitt
- `[l]`: Nächstes Kapitel
- `[a]`: Seitenanfang
- `[e]`: Seitenende

Auf der Hauptseite des Index kann der gewünschte Indexbuchstabe auch über die Tastatur eingegeben werden. Die zuvor beschriebenen Kürzel sind auf dieser Seite außer Kraft.

#### Einsatz von JavaScript

Die HTML-Ausgabe enthält hauptsächlich HTML-3.2-Code. Cascading Style Sheets oder ähnliche Erweiterungen wurden nicht verwendet. Ein Java-Applet wird nur für die Suchfunktion verwendet, und der Einsatz von JavaScript wurde so gering wie möglich gehalten. Die HTML-Ausgabe ist auch verwendbar, wenn JavaScript im Browser deaktiviert ist oder nicht unterstützt wird. In diesem Fall gibt es einige kleine Einschränkungen:

- Die Tastaturbedienung ist außer Kraft.
- Die eingebetteten Verweise auf die JDK- und API-Dokumentation lassen sich nicht konfigurieren. Sie funktionieren nur dann korrekt, wenn die JDK-Dokumentation im Unterverzeichnis jdkdocs\ und die API-Dokumentation im Unterverzeichnis jdkdocs\api\ innerhalb des Installationsverzeichnisses liegt.

|  |  |  | Ist JavaScript aktiviert, kann die JDK-Dokumentation an einer beliebigen Stelle liegen. Damit die Links der HTML-Ausgabe korrekt funktionieren, muß in diesem Fall an der im Unterverzeichnis html liegenden JavaScript-Datei hjp3lib.js eine kleine Änderung vorgenommen werden. In den Variablen `jdkdocs` und `apidocs` in den Zeilen 27 und 28 muß nämlich der JDK-Dokumentationspfad korrekt gesetzt sein. Er ist standardmäßig auf c:\jdk1.4\docs\ bzw. c:\jdk1.4\docs\api\ eingestellt (passend für eine Windows-Standardinstallation) und sollte der eigenen Installation entsprechend verändert werden. Wenn alles korrekt eingestellt ist, müßten die Schaltflächen "DOC" und "API" am Anfang und Ende jeder Seite auf die Startseite der JDK- und API-Dokumentation verzweigen. |  |
Tip

### 3.2.4 Die im Buch verwendete UML-Notation

Im Buch werden mitunter Grafiken verwendet, um die Beziehungen zwischen Klassen darzustellen. Wir wenden dazu eine leicht modifizierte Form von Klassendiagrammen an, wie sie auch in der Unified Modeling Language (kurz UML) verwendet werden. UML ist eine verbreitete Notation und Methodik für objektorientierte Analyse und Design. Mit ihrer Darstellung alleine könnte man leicht mehrere Bücher füllen. Wir wollen uns in diesem Buch auf die Basisnotation, die Klassendiagramme, beschränken.

Eine Klasse wird als graues Rechteck dargestellt, das in seinem Inneren den Namen der Klasse trägt. Mitunter hat es weitere Unterteilungen, in denen Methoden untergebracht sind, wenn diese für das Verständnis der Zusammenhänge von Bedeutung sind. Interfaces werden ebenfalls als Rechteck dargestellt (worum es sich dabei handelt, wird in Kapitel 9 erläutert), haben aber einen weißen Hintergrund. Zusätzlich wird über den Namen der Text »interface« geschrieben.

Abbildung 3.3 zeigt drei Klassen `Vector`, `String` und `MyOwnClass` und zwei Interfaces `Enumeration` und `Serializable`:

Abbildung 3.3: UML-Notation für Klassen und Interfaces

Klassen und Methoden können in Beziehungen zueinander stehen. Diese werden durch Verbindungslinien grafisch dargestellt. Bei einer Vererbungsbeziehung wird ein Pfeil von der abgeleiteten zur Basisklasse gezogen. Die Basisklasse steht in aller Regel über der abgeleiteten Klasse. Erben mehrere Klassen von einer Basisklasse, werden die Pfeile zur besseren Übersichtlichkeit zusammengefaßt. Die Implementierung eines Interfaces wird analog dargestellt, allerdings mit gestrichelten Linien.

Aggregation und Komposition wird durch eine Verbindungslinine dargestellt, die auf der Seite mit dem Container eine kleine Raute trägt. Wir unterscheiden dabei nicht zwischen den beiden Varianten. Aufrufbeziehungen werden als gestrichelte Pfeile mit Beschriftung dargestellt. Der Text beschreibt die Bedeutung des Aufrufs.

Abbildung 3.4 zeigt eine Basisklasse `AbstractComponent`, die das Interface `Component` implementiert. Aus `AbstractComponent` sind die drei Klassen `ConcreteComponent1`, `ConcreteComponent2` und `Container` abgeleitet. `Container` ist Besitzer einer Sammlung von `AbstractComponent`-Objekten. `ConcreteComponent2` verwendet die Klasse `Cache`:

Abbildung 3.4: UML-Notation für Beziehungen zwischen Klassen und Interfaces

Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage, Addison Wesley, Version 3.0
<< | < | > | >> | API | © 1998-2002 Guido Krüger, http://www.javabuch.de