Java für Fortgeschrittene
Norman Hendrich, Java für Fortgeschrittene (Buch/CD-ROM),
Springer Verlag, Berlin & Heidelberg, 1997, ISBN 3-540-61531-8
Diese Seiten verzeichnen aktuelle Informationen,
die nicht mehr in das Buch aufgenommen werden konnten.
Folgende Themen stehen derzeit zur Auswahl:
- Aktuelle Informationen:
Aufgrund weiterer Fehler in den Algorithmen für digitale
Signaturen hat Sun Microsystems die Spezifikation von
Java 1.1 nach Java 1.2 erneut geändert.
Die Hinweise im Buch beziehen sich auf die Java 1.1 Version.
- Hinweise zu den Beispiel-Programmen:
Allgemeine Hinweise zu den Programmen
Die Programmbeispiele aus dem Buch
sind auch auf diesem Server verfügbar.
Der alphabetische Index
aller Beispielprogramme.
- Interessante WWW-Server:
Diese Links ergänzen die
Hinweise aus Anhang D des Buches.
- Fehler:
Die aktuelle Liste aller bekannten Fehler
im Buch und den zugehörigen Beispielprogrammen.
Sie haben einen Fehler entdeckt, der noch nicht in der
obigen Liste verzeichnet ist?! Bitte schreiben Sie eine e-mail
an Norman Hendrich
mit einer Beschreibung des Fehlers und
bei Fehlern in den Beispielprogrammen auch ihrer Systemumgebung
(Java Version, Browser, Quelltexte, usw.).
Allgemeine Hinweise zu den Programmen
Die Beispielprogramme dienen dazu, den Umgang mit Java und den
Java-Klassenbibliotheken zu illustrieren.
Jedes der Programme demonstriert eine oder wenige Klassen und
Methoden mit ihren besonderen Eigenschaften (und manchmal Fehlern).
Die meisten Programmbeispiele sind als eigenständige Java-Applikationen
und nicht als Applets realisiert.
Zum einen benötigen viele der Programme Funktionen wie Datei- und
Netzwerkzugriff, die Applets (zumindest unter Java 1.0) nicht
ausführen dürfen.
Zum anderen sind Applikationen etwas kompakter und leichter zu verstehen,
da die Programmausführung immer in der Methode main() beginnt
und keine zusätzliche Interaktion mit einem WWW-Browser berücksichtigt
werden muß.
Fast alle Beispiele wurden mit einem kleinen Konverterprogramm
direkt aus dem Originaltext für das Buch in die
vorliegenden Java-Quelltexte übersetzt.
Der offensichtliche Vorteil dieses Vorgehens ist, daß
praktisch keine Schreibfehler in den Programmbeispielen enthalten sind
(d.h. sein sollten).
Auf der anderen Seite ergeben sich dadurch bestimmte Einschränkungen
für die Programme selbst:
Aus Platzgründen mußte auf eine vollständige Fehlerbehandlung usw.
in den Programmen verzichtet werden.
Ebenfalls aus diesem Grund enthalten nur wenige der Programme
durchgängig die DOC-Kommentare, die ansonsten für jedes
Java-Programm zu empfehlen sind.
Die notwendigen Erläuterungen finden sich statt dessen im
Text des Buches.
Compilieren der Programme
Alle Beispielprogramme wurden zunächst nur mit dem JDK 1.0.2
(und JDK 1.1) unter Solaris und Windows'95 getestet.
Folgende Probleme mit den Programmen sind bisher bekannt:
Ausführen der Programme: Applikationen
Zum Ausführen der Beispiel-Applikationen benötigen Sie
einen eigenständigen Java-Interpreter,
zur Programmübersetzung zusätzlich einen geeigneten Java-Compiler.
Der Standard ist das Java Development Kit (JDK)
von Sun Microsystems (Javasoft),
aber es gibt mittlerweile auch eine Reihe weiterer und freier
Alternativen, wie zum Beispiel Kaffe.
Einige der Programme aus Kapitel 6 (Graphik) und 11 (Netzwerk)
benötigen ein aktives TCP-IP Netzwerk und eine aktive
Anbindung an das Internet, um korrekt ablaufen zu können.
Bitte überprüfen Sie vor Ausführung dieser Programme die
Netzwerkfunktionen Ihres Computers.
Für Windows'95 oder Windows'NT stehen neben dem JDK und diversen
Sharewareprogrammen auch
vollständige Entwicklungsumgebungen von mehreren großen
Softwareherstellern (unter anderem Sun Microsystems Java Workshop,
Symantec Cafe, Microsoft Visual-J++, Borland Latte)
bereit.
Befolgen Sie die Anweisungen des Herstellers, falls Sie eine dieser
Entwicklungsumgebungen benutzen.
Wenn Sie das JDK verwenden, müssen Sie nach der Installation
der Dateien noch den Suchpfad zu den Programmen und den
sogenannten CLASSPATH setzen (siehe Anhang B im Buch für eine
ausführliche Erläuterung).
Wechseln Sie anschließend in eines der Verzeichnisse
mit den Beispielprogrammen (beispiele/kap1 usw.)
und rufen Sie den Java-Interpreter mit dem Namen der
auszuführenden Java-Klasse (also ohne Endung .class)
auf:
Solaris
setenv JAVA_HOME /opt/java //oder entsprechendes Verzeichnis
set path = ($path $JAVA_HOME/bin)
setenv CLASSPATH ${JAVA_HOME}/lib/classes.zip:.
cd beispiele/kap2
java AchtDamen 8
Windows'95/NT
rem angenommen Ihr Java-Compiler liegt unter C:\java\bin :
set PATH = %PATH%;C:\java\bin;
set CLASSPATH = C:\java\lib\classes.zip:.
cd beispiele\kap2
java AchtDamen 8
Für andere Betriebssysteme befolgen Sie bitte die Hinweise und
Dokumentation zu Ihrem Java-Entwicklungssystem und WWW-Browser.
Ausführen der Programme: Applets
Die Beispiel-Applets können mit jedem Java-fähigen WWW-Browser
(etwa Netscape Navigator, Microsoft Internet Explorer, Sun Hotjava)
oder natürlich dem Appletviewer des JDK
ausgeführt werden.
Rufen Sie dazu den Browser oder Appletviewer mit dem Namen
der entsprechenden WWW-Seite auf:
appletviewer file://c:/jff/beispiele/kap10/Bookmark.html
netscape file://c:/jff/beispiel/kap1/Laufschrift.html
hotjava http://tech-www.informatik.uni-hamburg.de/jff/beispiele/kap10/ClockApplet.html
Gliederung der Beispielprogramme
Die Programme sind auf der CD-ROM entsprechend den Kapitelnummern
des Buches angeordnet.
Zum Beispiel sind die Programme zur Erstellung von Benutzeroberflächen
mit den Klassen des AWT (Kapitel 8) entsprechend
im Verzeichnis kap8 enthalten.
Zu jedem Programm liegen sowohl der Quelltext (beispiel.java)
als auch die übersetzte Klasse (beispiel.class) vor.
Zu jedem Applet gibt es außerdem die benötigte HTML-Seite
mit der Applet-Marke (beispiel.html).
- Einführung / HelloWorld / Laufschrift
- Die Sprache Java
- Klassen und Methoden
- Objektorientierte Programmentwicklung
- Die Java Bibliotheken (keine Beispiele, nur Übersicht)
- I/O, Datenströme
- Graphik mit dem AWT
- Benutzeroberflächen mit dem AWT
- Animationen
- Applets
- Netzwerkzugriff
- Threads
- Systemaufrufe, native-code Anbindung
Beispielprogramme zu Java 1.1
Die folgenden Beispielprogramme auf der CD-ROM demonstrieren
Eigenschaften der neuen Version Java 1.1.
Die Programme sind mit der Beta-Version JDK1.1 (beta1 und beta2)
unter Solaris und Windows'95 getestet.
Bis zur endgültigen Version von Java 1.1 können sich
aber noch Änderungen ergeben.
Zum Ausführen dieser Programme benötigen Sie unbedingt
Java Version 1.1:
- OSSDemo
OSS Objekt-Serialisierung (Applikation, JDK 1.1)
- NumberFormatDemo
(Applikation)
- Drucken (Applikation)
- Drucken (Applet)
Achtung: Ab JDK 1.1 beta2 dürfen nur noch digital signierte Applets Druckaufträge starten.
- ScrollPane (Applet)
- Delegation-Events (Applet)
- KontoApplet (RMI Client Applet)
- BankKonto (RMI Remote Interface)
- BankKontoServer (RMI Server)
Einige der JDK1.1-Programme können direkt als Applet gestartet
werden (mit dem JDK 1.1 appletviewer oder einem anderen
Java 1.1 Browser, aber nicht mit Java 1.0 Netscape 3.0x usw.):
- Drucken
(Applet starten)
Achtung: Ab JDK 1.1 beta2 dürfen nur noch digital signierte Applets Druckaufträge starten.
- ScrollPane
(Applet starten)
- Delegation-Event-Modell
(Applet starten)
- PopupMenu
(Applet starten)
- ScrollPane (Applet)
(Applet starten)
- KontoApplet
(RMI Client Applet starten. Dazu muß der BankKontoServer bereits aktiv sein)
Alphabetischer Index der Programme
- Acht-Damen-Problem Textausgabe (Applikation)
- Acht-Damen-Problem Graphikausgabe (Applet)
(s.a. die Applikation "Schach")
- Anfang Erstes Applet (Applet)
- AppletWrapper Applets in Applikationen umwandeln (Applikation)
- BankKonto (RMI Remote Interface, Java 1.1)
- BankKontoServer (RMI Server, Java 1.1)
- Bookmark Applet-Kontext und Browser-Interaktion (Applikation)
- BorderLayoutDemo BorderLayout,
diverse Dialogelemente (Applikation)
- ClipDemo Clip-Rechtecke (Applikation)
- ClockApplet Einfache Uhr als Applet (Applikation)
- ClockAppletApplication Clock-Applet als (Applikation)
- ClockDemo Einfache Uhr (Applikation)
- ConfirmDialog modaler Dialog (Applikation)
- Console Textausgaben (Applikation)
- Console Textausgaben (Applikation)
- DialogCallback (Schnittstelle für ReallyQuitDemo)
- DirInfo Verzeichnisse auslesen (Applikation)
- Doppel Applet-Interaktion (Applikation)
- DoubleBufferDemo Flackerfreie Animation (Applikation)
- DoubleBufferDemo2 Animation mit mehreren Objekten (Applikation)
- EinFenster (siehe VieleFenster) (Applikation)
- Ellipse Hilfsklasse für XorDemo
- FileCopy Dateien kopieren (Applikation)
- FileView Dateien lesen und anzeigen (Applikation)
- FlowLayoutDemo (Applikation)
- FontDemo Schriftarten (Applikation)
- Format triviale Zahlenformatierung (Applikation)
- GetProperties System-Properties ermitteln (Applikation)
- GGT Gößter gemeinsamer Teiler (Applikation)
- GrabberDemo Icons ausschneiden (Applikation)
- GraphikDemo einfache Zeichenoperationen (Applikation)
- GridBagEx1 (Applikation)
- GridLayoutDemo (Applikation)
- GridLayoutOverflowDemo (Applikation)
- HelloWorld Erste Applikation (Applikation)
- ImageDemo1 Bilder asynchron laden (Applikation)
Dieses und die folgenden beiden Programme laden Bilder sowohl aus lokalen Dateien als
auch über das http-Protokoll von einem WWW-Server. Für die korrekte Funktion
benötigen Sie daher eine aktive Anbindung an das Internet. Ohne Internet-Abdinung
müssen Sie die Programme leicht modifizieren, und nur Bilder aus lokalen Dateien
referenzieren.
- ImageDemo2 Bilder asynchron laden, imageUpdate() (Applikation)
- ImageDemo3 Bilder synchron laden, MediaTracker, (Applikation)
- InsetsDemo (Applikation)
- Integrable (Schnittstelle, Funktionspointer)
- Integral (Klasse, Numerische Integration)
- IntegralDemo (Applikation)
- KontoApplet (RMI Client Applet, Java 1.1)
- Laufschrift (Applet)
- LinkedList (Klasse, doppelt verkettete Liste
mit "Cursor", Selbsttest als Applikation)
- ListDemo Dialogelement java.awt.List (Applikation)
- ListNode Knoten für die verkettete Liste
- LoadURL URL direkt laden (Applikation)
- LoadURLInfo URL zugreifen (Applikation)
- MenuDemo geschachtelte Menüs (Applikation)
- Nikolaus einfache Graphikoperationen (Applikation)
- NumberFormatDemo
(Applikation, Java 1.1)
- NSlookup Nameserver (Applikation)
- OSSDemo OSS Objekt-Serialisierung (Applikation, Java 1.1)
- PizzaService (Delegation-Events, Applet, Java 1.1)
- PolygonCanvas gefüllte Vielecke (AWT Dialogelement)
- PrintApplet (Drucken, Applet, Java 1.1)
Achtung: Ab JDK 1.1 beta2 dürfen nur noch digital signierte Applets Druckaufträge starten.
- PrintDemo Textausgabe verschiedener Daten (Applikation)
- PrintNikolaus (Drucken, Applikation, Java 1.1)
- RandomAccessFileDemo (Dateizugriff, Applikation)
- ReallyQuitDemo mit modalem Dialog (Applikation)
- Rueckruf Interface, siehe VieleFenster (Applikation)
- RunDemo Mehrere Threads, Schnittstelle Runnable (Applikation)
- "Schach" graphische Darstellung des Acht-Damen-Problems (Applikation)
- "Schach" graphische Darstellung des Acht-Damen-Problems,
Polling (Applikation)
- Scope-Regeln (Applikation)
- ScrollPane (Applet, Java 1.1)
- SerialIO Klasse für native Code Anbindung
- ShellSort Shellsort-Algorithmus, Objekte (Applikation)
- Sortable Objekte sortieren (Schnittstelle)
- SortCubes Objekte sortieren (Applikation)
- SortDemo Shellsort-Algorithmus, double (Applikation)
- TCPAppletClient TCP-Client für TCPtoUpper (Applet)
- TCPClient Einfacher TCP-Client (Applikation)
- TCPServer Multithreaded Server (Applikation)
- TCPtoUpper Berechnung innerhalb von TCPServer
- TCPAppletClient TCP-Client für TCPtoUpper (Applet)
- TextAreaDemo java.awt.TextArea (Applikation)
- TextFieldDemo Textfelder (Applikation)
- ThreadDemo Mehrere Threads, direkt erzeugt (Applikation)
- ThreadLister Alle Threads rekursiv auflisten (Applikation)
- ThreadNoSyncDemo Zeigt Probleme bei fehlender
Thread Synchronisation (Applikation).
- ThreadSyncDemo Vermeidet die Probleme des Programms
ThreadNoSyncDemo durch explizite Thread Synchronisation (Applikation)
- TokenizerDemo StreamTokenizer (Applikation)
- UDPreceive UDP-Pakete empfangen (Applikation)
- UDPsend UDP-Pakete senden (Applikation)
- UseSerialIO siehe SerialIO, native Code aufrufen (Applikation)
- VieleFenster Demonstriert mehrere Frame-Fenster
(Applikation)
- XorDemo Demonstriert den XOR-Zeichenmodus und die Rolle
der Methoden update() und paint() (Applikation)
updated: 16.08.2000,
Norman Hendrich