Galileo Computing <openbook>
Galileo Computing - Programming the Net
Galileo Computing - Programming the Net


Java ist auch eine Insel von Christian Ullenboom
Programmieren für die Java 2-Plattform in der Version 1.4
Buch: Java ist auch eine Insel - Zum Katalog  

Inhalt

Vorwort

Galileo Computing

1 Schon wieder eine neue Sprache?

1.1 Der erste Kontakt
1.2 Historischer Hintergrund
1.3 Eigenschaften von Java
  1.3.1 Die virtuelle Maschine
  1.3.2 Kein Präprozessor
  1.3.3 Überladene Operatoren
  1.3.4 Zeiger und Referenzen
  1.3.5 Garbage-Collector
  1.3.6 Ausnahmenbehandlung
  1.3.7 Objektorientierung in Java
  1.3.8 Java-Security-Model
1.4 Java im Vergleich zu anderen Sprachen
  1.4.1 Java und JavaScript
  1.4.2 Normierungsversuche
1.5 Die Rolle von Java im Web
1.6 Aufkommen von Stand-Alone-Applikationen
1.7 Entwicklungs- und Laufzeitumgebungen
  1.7.1 Aller Anfang mit dem Java SDK
  1.7.2 Kaffe von Transvirtual Technologies
  1.7.3 JBuilder
  1.7.4 Die Entwicklungsumgebung von Sun: Forté
  1.7.5 Umgebungen von IBM
  1.7.6 Visual Café von WebGain (ehemals Symantec)
  1.7.7 Ein Wort zu Microsoft, Java und zu J++
  1.7.8 Kawa
  1.7.9 Die Entwicklungsumgebung CodeGuide
1.8 Installationsanleitung für das Java 2 SDK unter Microsoft Windows
  1.8.1 Das Java 2 SDK beziehen
  1.8.2 Java SDK installieren
  1.8.3 Compiler und Interpreter nutzen
1.9 Erstes Programm compilieren und testen
  1.9.1 Häufige Compiler- und Interpreterprobleme
Galileo Computing

2 Sprachbeschreibung

2.1 Anweisungen und Programme
2.2 Programme
  2.2.1 Kommentare
  2.2.2 Funktionsaufrufe als Anweisungen
  2.2.3 Die leere Anweisung
  2.2.4 Der Block
2.3 Elemente einer Programmiersprache
  2.3.1 Textkodierung durch Unicode-Zeichen
  2.3.2 Bezeichner
  2.3.3 Reservierte Schlüsselwörter
  2.3.4 Token
  2.3.5 Semantik
2.4 Datentypen
  2.4.1 Primitive Datentypen
  2.4.2 Wahrheitswerte
  2.4.3 Variablendeklarationen
  2.4.4 Ganzzahlige Datentypen
  2.4.5 Die Fließkommazahlen
  2.4.6 Zeichen
  2.4.7 Die Typanpassung (Das Casting)
  2.4.8 Lokale Variablen, Blöcke und Sichtbarkeit
  2.4.9 Initialisierung von lokalen Variablen
2.5 Ausdrücke
  2.5.1 Zuweisungsoperator und Verbundoperator
  2.5.2 Präfix- oder Postfix-Inkrement und -Dekrement
  2.5.3 Unäres Minus und Plus
  2.5.4 Arithmetische Operatoren
  2.5.5 Die relationalen Operatoren
  2.5.6 Logische Operatoren
  2.5.7 Reihenfolge und Rang der Operatoren in der Auswertungsreihenfolge
  2.5.8 Was C(++)-Programmierer vermissen könnten
2.6 Bedingte Anweisungen oder Fallunterscheidungen
  2.6.1 Die if-Anweisung
  2.6.2 Die Alternative wählen mit einer if/else-Anweisung
  2.6.3 Die switch-Anweisung bietet die Alternative
2.7 Schleifen
  2.7.1 Die while-Schleife
  2.7.2 Schleifenbedingungen und Vergleiche mit ==
  2.7.3 Die do/while-Schleife
  2.7.4 Die for-Schleife
  2.7.5 Ausbruch planen mit break und Wiedereinstieg mit continue
  2.7.6 Break und Continue mit Sprungmarken
2.8 Methoden einer Klasse
  2.8.1 Bestandteil einer Funktion
  2.8.2 Aufruf
  2.8.3 Methoden ohne Parameter
  2.8.4 Parameter und Wertübergabe
  2.8.5 Methoden vorzeitig mit return beenden
  2.8.6 Nicht erreichbarer Quellcode bei Funktionen
  2.8.7 Rückgabewerte
  2.8.8 Methoden überladen
  2.8.9 Vorinitialisierte Parameter bei Funktionen
  2.8.10 Finale lokale Variablen
  2.8.11 Finale Referenzen in Objekten und das fehlende const
  2.8.12 Rekursive Funktionen
  2.8.13 Die Ackermann-Funktion
  2.8.14 Die Türme von Hanoi
2.9 Noch mehr Operatoren
  2.9.1 Bit-Operationen
  2.9.2 Vorzeichenlose Bytes in ein Integer und Char konvertieren
  2.9.3 Variablen mit Xor vertauschen
  2.9.4 Die Verschiebe-Operatoren
  2.9.5 Setzen, Löschen, Umdrehen, Testen von Bits
  2.9.6 Der Bedingungsoperator
  2.9.7 Überladenes Plus für Strings
Galileo Computing

3 Klassen und Objekte

3.1 Objektorientierte Programmierung
  3.1.1 Warum überhaupt OOP?
  3.1.2 Modularität und Wiederverwertbarkeit
3.2 Klassen benutzen
  3.2.1 Die Klasse Point
  3.2.2 Etwas über die UML
  3.2.3 Anlegen eines Exemplars einer Klasse
  3.2.4 Zugriff auf Variablen und Methoden mit dem Punkt
  3.2.5 Konstruktoren
  3.2.6 Die null-Referenz
3.3 Mit Referenzen arbeiten
  3.3.1 Zuweisungen bei Referenzen
  3.3.2 Funktionen mit nicht-primitiven Parametern
  3.3.3 Gleichheit von Objekten und die Methode equals()
3.4 Arrays
  3.4.1 Deklaration von Arrays
  3.4.2 Arrays mit Inhalt
  3.4.3 Die Länge eines Arrays mit length
  3.4.4 Zugriff auf die Elemente
  3.4.5 Array-Objekte erzeugen
  3.4.6 Fehler bei Arrays
  3.4.7 Arrays mit nicht-primitiven Elementen
  3.4.8 Arrays und Objekte
  3.4.9 Initialisierte Array-Objekte
  3.4.10 Mehrdimensionale Arrays
  3.4.11 Die Wahrheit über die Array-Initialisierung
  3.4.12 Arrays kopieren und füllen
  3.4.13 Mehrere Rückgabeparameter
  3.4.14 Parameter per Referenz übergeben
  3.4.15 Der Einstiegspunkt für das Laufzeitsystem
  3.4.16 Der Rückgabewert von main()
Galileo Computing

4 Der Umgang mit Zeichenketten

4.1 Strings und deren Anwendung
  4.1.1 String-Objekte für konstante Zeichenketten
  4.1.2 String-Objekte verraten viel
  4.1.3 Gut, dass wir verglichen haben
  4.1.4 Stringteile extrahieren
  4.1.5 Veränderte Strings liefern
  4.1.6 Typen in Zeichenketten konvertieren
4.2 Veränderbare Zeichenketten mit der Klasse StringBuffer
  4.2.1 Anlegen von StringBuffer-Objekten
  4.2.2 Die Länge eines StringBuffer-Objekts lesen und setzen
  4.2.3 Daten anhängen
  4.2.4 Zeichen(folgen) setzen, erfragen, löschen
4.3 Vergleiche von Zeichenketten als String und StringBuffer
  4.3.1 Sollte es ein equals() und hash() bei StringBuffer geben?
4.4 Ein paar kleine Helfer
  4.4.1 Strings einer gegebenen Länge erzeugen und rechtsbündig ausgeben
  4.4.2 Teile im String ersetzen
4.5 Zeichenkodierungen umwandeln
4.6 Sprachabhängiges Vergleichen mit der Collator–Klasse
  4.6.1 Effiziente interne Speicherung für Sortierung
4.7 Die Klasse StringTokenizer
4.8 StreamTokenizer
4.9 Formatieren mit Format-Objekten
  4.9.1 Ausgaben formatieren
  4.9.2 Dezimalzahlformatierung
4.10 Reguläre Ausdrücke
  4.10.1 Splitten von Zeichenketten
  4.10.2 split() in String
  4.10.3 Das Paket gnu.regexp
4.11 Überprüfung der E-Mail-Adressen und Kreditkarteninformationen
  4.11.1 Gültige E-Mail-Adressen
  4.11.2 Kreditkartennummern testen
Galileo Computing

5 Mathematisches

5.1 Arithmetik in Java
  5.1.1 Soll eine Division durch Null zur Übersetzungszeit erkannt werden?
5.2 Die Funktionen der Math-Klasse
  5.2.1 Attribute
  5.2.2 Winkelfunktionen (trigonometrische Funktionen und Arkusfunktionen)
  5.2.3 Runden von Werten
  5.2.4 Exponentialfunktionen
  5.2.5 Division
  5.2.6 Absolutwerte und Maximum, Minimum
  5.2.7 Zufallszahlen
5.3 Mathe bitte strikt
  5.3.1 Strikt Fließkomma mit strictfp
  5.3.2 Die Klassen Math und StrictMath
5.4 Die Random-Klasse
5.5 Große Zahlen
  5.5.1 Die Klasse BigInteger
  5.5.2 Ganz lange Fakultäten
5.6 Probleme mit Java und der Mathematik
5.7 Das Java-Matrix-Paket Jama
Galileo Computing

6 Eigene Klassen schreiben

6.1 Eigene Klassen definieren
  6.1.1 Methodenaufrufe und Nebeneffekte
  6.1.2 Argumentübergabe mit Referenzen
  6.1.3 Die this-Referenz
6.2 Assoziationen zwischen Objekten
6.3 Privatsphäre und Sichtbarkeit
  6.3.1 Wieso nicht freie Methoden und Variablen für alle?
  6.3.2 Privat ist nicht ganz privat. Es kommt darauf an wer’s sieht
  6.3.3 Zugriffsmethoden für Attribute definieren
  6.3.4 Zusammenfassung zur Sichtbarkeit
6.4 Statische Methoden und Variablen
  6.4.1 Warum statische Eigenschaften sinnvoll sind
  6.4.2 Statische Eigenschaften mit static
  6.4.3 Statische Eigenschaften als Objekteigenschaften nutzen
  6.4.4 Statische Eigenschaften und Objekteigenschaften
  6.4.5 Statische Variablen zum Datenaustausch
  6.4.6 Warum die Groß- und Kleinschreibung wichtig ist
  6.4.7 Konstanten mit dem Schlüsselwort final bei Variablen
  6.4.8 Typsicherere Konstanten
  6.4.9 Statische Blöcke
6.5 Objekte anlegen und zerstören
  6.5.1 Konstruktoren schreiben
  6.5.2 Einen anderen Konstruktor der gleichen Klasse aufrufen
  6.5.3 Initialisierung der Objekt- und Klassenvariablen
  6.5.4 Finale Werte im Konstruktor setzen
  6.5.5 Exemplarinitialisierer (Instanzinitialisierer)
  6.5.6 Zerstörung eines Objekts durch den Müllaufsammler
  6.5.7 Implizit erzeugte Stringobjekte
  6.5.8 Zusammenfassung: Konstruktoren und Methoden
6.6 Vererbung
  6.6.1 Vererbung in Java
  6.6.2 Einfach- und Mehrfachvererbung
  6.6.3 Kleidungsstücke modelliert
  6.6.4 Sichtbarkeit
  6.6.5 Das Substitutionsprinzip
  6.6.6 Automatische und Explizite Typanpassung
  6.6.7 Finale Klassen
  6.6.8 Unterklassen prüfen mit dem Operator instanceof
6.7 Methoden überschreiben
  6.7.1 super: Aufrufen einer Methode aus der Oberklasse
  6.7.2 Nicht überschreibbare Funktionen
  6.7.3 Fehlende kovariante Rückgabewerte
6.8 Die Oberste aller Klassen: Object
  6.8.1 Klassenobjekte
  6.8.2 Hashcodes
  6.8.3 Objektidentifikation mit toString()
  6.8.4 Objektgleichheit mit equals() und Identität
  6.8.5 Klonen eines Objekts mit clone()
  6.8.6 Aufräumen mit finalize()
  6.8.7 Synchronisation
6.9 Die Oberklasse gibt Funktionalität vor
  6.9.1 Dynamisches Binden als Beispiel für Polymorphie
  6.9.2 Keine Polymorphie bei privaten, statischen und finalen Methoden
  6.9.3 Konstruktoren in der Vererbung
6.10 Abstrakte Klassen
  6.10.1 Abstrakte Klassen
  6.10.2 Abstrakte Methoden
  6.10.3 Über abstract final
6.11 Schnittstellen
  6.11.1 Die Mehrfachvererbung bei Schnittstellen
  6.11.2 Erweitern von Interfaces – Subinterfaces
  6.11.3 Vererbte Konstanten bei Schnittstellen
  6.11.4 Vordefinierte Methoden einer Schnittstelle
  6.11.5 CharSequence als Beispiel einer Schnittstelle
6.12 Innere Klassen
  6.12.1 Geschachtelte Top-Level Klassen und Schnittstellen
  6.12.2 Mitglieds- oder Elementklassen
  6.12.3 Lokale Klassen
  6.12.4 Anonyme innere Klassen
  6.12.5 Eine Sich-Selbst-Implementierung
  6.12.6 this und Vererbung
  6.12.7 Implementierung einer verketteten Liste
  6.12.8 Funktionszeiger
6.13 Gegenseitige Abhängigkeiten von Klassen
6.14 Pakete
Galileo Computing

7 Exceptions

7.1 Problembereiche einzäunen
  7.1.1 Exceptions in Java mit try und catch
  7.1.2 Ablauf einer Ausnahmesituation
  7.1.3 Wiederholung kritischer Bereiche
  7.1.4 throws im Methodenkopf angeben
  7.1.5 Abschließende Arbeiten mit finally
  7.1.6 Nicht erreichbare catch-Klauseln
7.2 Die Klassenhierarchie der Fehler
  7.2.1 Die Exception-Hierarchie
  7.2.2 Ober-Ausnahmen fangen
  7.2.3 Alles geht als Exception durch
  7.2.4 Ausnahmen, die nicht gefangen werden müssen: RuntimeException
7.3 Werfen eigener Exceptions
  7.3.1 Vorgefertigte Ausnahme-Objekte wieder verwenden
  7.3.2 Typecast auf ein null-Objekt für eine NullPointerException
  7.3.3 Neue Exception-Klassen definieren
7.4 Rückgabewerte bei ausgelösten Ausnahmen
7.5 Ein Assert in Java
7.6 Sicherheitsfragen mit dem SecurityManager klären
  7.6.1 Programm beenden
Galileo Computing

8 Die Funktionsbibliothek

8.1 Die Java-Klassenphilosophie
  8.1.1 Paketübersicht
8.2 Wrapper-Klassen
  8.2.1 Die Character-Klasse
  8.2.2 Die Boolean-Klasse
  8.2.3 Die Number-Klasse
  8.2.4 Die Klasse Integer
  8.2.5 Unterschiedliche Ausgabeformate
  8.2.6 Behandlung von Überlauf
8.3 Ausführung von externen Programmen
  8.3.1 DOS-Programme aufrufen
  8.3.2 Die Windows Registry verwenden
8.4 Compilieren von Klassen
  8.4.1 Der Sun-Compiler
Galileo Computing

9 Threads und nebenläufige Programmierung

9.1 Prozesse und Threads
  9.1.1 Wie parallele Programme die Geschwindigkeit heben können
9.2 Threads erzeugen
  9.2.1 Threads über die Schnittestelle Runnable implementieren
  9.2.2 Threads über Runnable starten
  9.2.3 Die Klasse Thread erweitern
  9.2.4 Erweitern von Thread oder implementieren von Runnable?
9.3 Threads schlafen
  9.3.1 Eine Zeituhr
9.4 Die Klassen Timer und TimerTask
9.5 Die Zustände eines Threads
  9.5.1 Das Ende eines Threads
  9.5.2 Einen Thread höflich mit Interrupt beenden
  9.5.3 Der stop() von außen
  9.5.4 Das ThreadDeath-Objekt
  9.5.5 Auf das Ende warten mit join()
9.6 Arbeit niederlegen und wieder aufnehmen
9.7 Priorität
  9.7.1 Threads hoher Priorität und das AWT
  9.7.2 Granularität und Vorrang
9.8 Dämonen (engl. Daemon)
9.9 Kooperative und nicht-kooperative Threads
9.10 Synchronisation über kritische Abschnitte
  9.10.1 Gemeinsam genutzte Daten
  9.10.2 Probleme beim gemeinsamen Zugriff und kritische Abschnitte
  9.10.3 Punkte parallel initialisieren
  9.10.4 i++ sieht atomar aus, ist es aber nicht
  9.10.5 Abschnitte mit synchronized schützen
  9.10.6 Monitore
  9.10.7 Synchronized-Methode am Beispiel der Klasse StringBuffer
  9.10.8 Synchronisierte Blöcke
  9.10.9 Vor- und Nachteile von synchronisierten Blöcken und Methoden
  9.10.10 Nachträglich synchronisieren
  9.10.11 PMonitore sind reentrant, gut für die Geschwindigkeit
  9.10.12 Deadlocks
9.11 Variablen mit volatile kennzeichnen
9.12 Synchronisation über Warten und Benachrichtigen
  9.12.1 Warten mit wait() und Aufwecken mit notify()
  9.12.2 Mehrere Wartende und notifyAll()
  9.12.3 wait() mit einer Zeitspanne
  9.12.4 Beispiel Erzeuger-Verbraucher-Programm
  9.12.5 Semaphoren
9.13 Grenzen von Threads
9.14 Aktive Threads in der Umgebung
9.15 Gruppen von Threads in einer Thread-Gruppe
  9.15.1 Etwas über die aktuelle Thread-Gruppe herausfinden
  9.15.2 Threads in einer Thread-Gruppe anlegen
  9.15.3 Methoden von Thread und ThreadGroup im Vergleich
9.16 Einen Abbruch der virtuellen Maschine erkennen
Galileo Computing

10 Raum und Zeit

10.1 Greenwich Mean Time (GMT)
10.2 Wichtige Datum-Klassen im Überblick
  10.2.1 Zeitzonen durch die Klasse TimeZone repräsentiert
10.3 Sprachen der Länder
  10.3.1 Sprachen in Java über Locale-Objekte
10.4 Einfache Übersetzung durch ResourceBundle-Objekte
10.5 Die Klasse Date
  10.5.1 Die Date-Klasse
  10.5.2 Zeitmessung und Profiling
10.6 Die abstrakte Klasse Calendar
10.7 Der gregorianische Kalender
10.8 Formatieren der Datumsangaben
  10.8.1 Mit DateFormat und SimpleDateFormat formatieren
  10.8.2 Parsen von Datumswerten
  10.8.3 Parsen und Formatieren ab bestimmten Positionen
Galileo Computing

11 Datenstrukturen und Algorithmen

11.1 Mit einem Iterator durch die Daten wandern
  11.1.1 Bauernregeln aufzählen
11.2 Dynamische Datenstrukturen
11.3 Die Klasse Vector
  11.3.1 Vektoren erzeugen
  11.3.2 Funktionen
  11.3.3 Arbeitsweise des internen Arrays
  11.3.4 Die Größe eines Felds
  11.3.5 Eine Aufzählung und gleichzeitiges Verändern
  11.3.6 Die Funktionalität eines Vektors erweitern
11.4 Stack, der Stapel
  11.4.1 Die Methoden vom Stack
  11.4.2 Das oberste Stack-Element duplizieren
  11.4.3 Ein Stack ist ein Vektor – Aha!
11.5 Die Klasse BitSet für Bitmengen
  11.5.1 BitSet anlegen und füllen
  11.5.2 Mengenorientierte Operationen
  11.5.3 Funktionsübersicht
  11.5.4 Primzahlen in einem BitSet verwalten
11.6 Die Klasse Hashtable und assoziative Speicher
  11.6.1 Ein Objekt der Klasse Hashtable erzeugen
  11.6.2 Einfügen und Abfragen der Datenstruktur
  11.6.3 Die Arbeitsweise einer Hashtabelle
  11.6.4 Aufzählen der Elemente
  11.6.5 Ausgabe der Hashtabelle und Gleichheitstest
  11.6.6 Klonen
11.7 Die abstrakte Klasse Dictionary
  11.7.1 Zugriff und Abfrage
  11.7.2 Metainformationen
  11.7.3 Iterationen über die Elemente
11.8 Die Properties-Klasse
  11.8.1 Über die Klasse Properties
  11.8.2 put(), get() und getProperties()
  11.8.3 Eigenschaften ausgeben
  11.8.4 Systemeigenschaften der Java-Umgebung
  11.8.5 Browser-Version abfragen
  11.8.6 Properties von der Konsole setzen
11.9 Queue, die Schlange
11.10 Die Collection API
  11.10.1 Die Schnittstelle Collection
  11.10.2 Schnittstellen, die Collection erweitern
  11.10.3 Abstrakte Basisklassen für Container
  11.10.4 Konkrete Container-Klassen
  11.10.5 Unterschiede zu den älteren Datenstrukturen und Synchronisation
  11.10.6 Das erste Programm mit Container-Klassen
  11.10.7 Iteratoren
  11.10.8 Der Comparator
  11.10.9 toArray() von Collection verstehen – Chance für eine Falle erkennen
11.11 Listen
  11.11.1 AbstractList
  11.11.2 Optionale Methoden
  11.11.3 ArrayList
  11.11.4 LinkedList
11.12 Algorithmen
  11.12.1 Datenmanipulation
  11.12.2 Größten und kleinsten Wert einer Collection finden
  11.12.3 Sortieren
  11.12.4 Elemente in der Collection suchen
11.13 Typsichere Datenstrukturen
11.14 Ein Design-Pattern durch Beobachten von Änderungen
  11.14.1 Design-Pattern
  11.14.2 Das Beobachter-Pattern (Observer/Observable)
Galileo Computing

12 Datenströme und Dateien

12.1 Dateien und Verzeichnisse
  12.1.1 Dateien und Verzeichnisse mit der Klasse File
  12.1.2 Dateieigenschaften und -attribute
  12.1.3 Umbenennen, Verzeichnisse anlegen und Datei löschen
  12.1.4 Die Wurzel aller Verzeichnisse
  12.1.5 Verzeichnisse listen und Dateien filtern
  12.1.6 Implementierungsmöglichkeiten für die Klasse File
  12.1.7 Verzeichnisse nach Dateien rekursiv durchsuchen
12.2 Dateien mit wahlfreiem Zugriff
  12.2.1 Eine RandomAccessFile öffnen
  12.2.2 Aus dem RandomAccessFile lesen
  12.2.3 Hin und her in der Datei
  12.2.4 Die Länge des RandomAccessFile
12.3 Übersicht über wichtige Stream- und Writer/Reader
  12.3.1 Die abstrakten Basisklassen
12.4 Eingabe- und Ausgabe-Klassen: InputStream und OutputStream
  12.4.1 Die Klasse OutputStream
  12.4.2 Ein Datenschlucker
  12.4.3 Die Eingabeklasse InputStream
  12.4.4 Anwenden der Klasse FileInputStream
  12.4.5 Anwendung der Klasse FileOutputStream
  12.4.6 Kopieren von Dateien
  12.4.7 Daten filtern durch FilterInputStream und FilterOutputStream
  12.4.8 Der besondere Filter PrintStream
  12.4.9 System Standard-Ein- und Ausgabe und Input- bzw. PrintStreams
  12.4.10 Bytes in den Strom mit ByteArrayOutputStream
  12.4.11 Ströme zusammensetzen mit SequenceInputStream
12.5 Die Unterklassen von Writer
  12.5.1 Die abstrakte Klasse Writer
  12.5.2 Datenkonvertierung durch den OutputStreamWriter
  12.5.3 In Dateien schreiben mit der Klasse FileWriter
  12.5.4 StringWriter und CharArrayWriter
  12.5.5 Gepufferte Ausgabe durch BufferedWriter
  12.5.6 Ausgabemöglichkeiten durch PrintWriter erweitern
  12.5.7 Daten mit FilterWriter filtern
  12.5.8 Die abstrakte Basisklasse Reader
  12.5.9 Automatische Konvertierungen mit dem InputStreamReader
  12.5.10 Dateien lesen mit der Klasse FileReader
  12.5.11 StringReader und CharArrayReader
  12.5.12 Schachteln von Eingabe-Streams
  12.5.13 Gepufferte Eingaben mit der Klasse BufferedReader
  12.5.14 LineNumberReader zählt automatisch Zeilen mit
  12.5.15 Eingaben filtern mit der Klasse FilterReader
  12.5.16 Daten zurücklegen mit der Klasse PushbackReader
12.6 Kommunikation zwischen Threads mit Pipes
  12.6.1 PipedOutputStream und PipedInputStream
  12.6.2 PipedWriter und PipedReader
  12.6.3 Datenströme komprimieren
  12.6.4 Zip-Archive
12.7 Prüfsummen
  12.7.1 Die Schnittstelle Checksum
  12.7.2 Die Klasse CRC32
  12.7.3 Die Adler32-Klasse
12.8 Persistente Objekte und Serialisierung
  12.8.1 Objekte speichern
  12.8.2 Objekte lesen
  12.8.3 Die Schnittstelle Serializable
  12.8.4 Ian Wilmut und tiefe Objektkopien
  12.8.5 Felder sind implizit Serializable
  12.8.6 Versionenverwaltung und die SUID
  12.8.7 Beispiele aus den Standard-Klassen
  12.8.8 Serialisieren in XML-Dateien
  12.8.9 JSX (Java Serialization to XML)
  12.8.10 XML-API von Sun
12.9 Die Logging-API
Galileo Computing

13 Die eXtensible Markup Language (XML)

13.1 Auszeichnungssprachen
  13.1.1 Die Standard Generalized Markup Language (SGML)
  13.1.2 Extensible Markup Language (XML)
13.2 Eigenschaften von XML-Dokumenten
  13.2.1 Elemente und Attribute
  13.2.2 Beschreibungssprache für den Aufbau von XML-Dokumenten
  13.2.3 Schema, eine Alternative zu DTD
  13.2.4 Namensraum (Namespace)
  13.2.5 XML-Applikationen
13.3 Die Java APIs für XML
  13.3.1 Das Document Object Model (DOM)
  13.3.2 Simple API for XML Parsing (SAX)
  13.3.3 Java Document Object Model (JDOM)
13.4 XML-Dateien mit JDOM verarbeiten
  13.4.1 JDOM beziehen
  13.4.2 Paketübersicht
  13.4.3 Die Document-Klasse
  13.4.4 Eingaben aus der Datei lesen
  13.4.5 Das Dokument als XML-Datei ausgeben
  13.4.6 Der Dokumententyp
  13.4.7 Elemente
  13.4.8 Zugriff auf Elementinhalte
  13.4.9 Liste mit Unterelementen erzeugen
  13.4.10 Neue Elemente einfügen und ändern
  13.4.11 Attributinhalte lesen und ändern
13.5 JAXP als Java-Schnittstelle zu XML
  13.5.1 Einführung in XSLT
  13.5.2 Umwandlung von XML-Dateien mit JDOM und JAXP
Galileo Computing

14 Grafikprogrammierung mit dem AWT

14.1 Das abstrakte Window-Toolkit
  14.1.1 Java Foundation Classes
14.2 Fenster unter grafischen Oberflächen
  14.2.1 Fenster öffnen
  14.2.2 Größe und Position des Fensters verändern
  14.2.3 Fenster und Dialog-Dekoration
14.3 Das Toolkit
  14.3.1 Einen Hinweis beepen
14.4 Grundlegendes zum Zeichnen
  14.4.1 Die paint()-Methode
  14.4.2 Auffordern zum Neuzeichnen mit repaint()
14.5 Punkte, Linien und Rechtecke aller Art
  14.5.1 Linien
  14.5.2 Rechtecke
14.6 Alles was rund ist
14.7 Polygone und Polylines
  14.7.1 Die Polygon-Klasse
  14.7.2 N-Ecke zeichnen
  14.7.3 Vollschlanke Linien zeichnen
14.8 Zeichenketten schreiben
  14.8.1 Einen neuen Zeichensatz bestimmen
  14.8.2 Zeichensätze des Systems ermitteln
  14.8.3 Die Klasse FontMetrics
  14.8.4 True Type Fonts
14.9 Clipping-Operationen
14.10 Farben
  14.10.1 Zufällige Farbblöcke zeichnen
  14.10.2 Farbanteile zurückgeben
  14.10.3 Vordefinierte Farben
  14.10.4 Farben aus Hexadezimalzahlen erzeugen
  14.10.5 Einen helleren oder dunkleren Farbton wählen
  14.10.6 Farbmodelle HSB und RGB
  14.10.7 Die Farben des Systems
14.11 Bilder anzeigen und Grafiken verwalten
  14.11.1 Eine Grafik zeichnen
  14.11.2 Grafiken zentrieren
  14.11.3 Laden von Bildern mit dem MediaTracker beobachten
  14.11.4 Kein Flackern durch Double-Buffering
  14.11.5 Bilder skalieren
14.12 Programmicon setzen
  14.12.1 VolatileImage
14.13 Grafiken speichern
  14.13.1 Bilder im GIF-Format speichern
  14.13.2 Gif speichern mit dem ACME-Paket
  14.13.3 JPEG-Dateien mit dem Sun-Paket schreiben
  14.13.4 Java Image Management Interface (JIMI)
14.14 Von Produzenten, Konsumenten und Beobachtern
  14.14.1 Producer und Consumer für Bilder
  14.14.2 Beispiel für die Übermittlung von Daten
  14.14.3 Bilder selbst erstellen
  14.14.4 Die Bildinformationen wieder auslesen
14.15 Filter
  14.15.1 Grundlegende Eigenschaft von Filtern
  14.15.2 Konkrete Filterklassen
  14.15.3 Mit CropImageFilter Teile ausschneiden
  14.15.4 Transparenz
14.16 Alles wird bunt mit Farbmodellen
  14.16.1 Die abstrakte Klasse ColorModel
  14.16.2 Farbwerte im Pixel mit der Klasse DirectColorModel
  14.16.3 Die Klasse IndexColorModel
14.17 Drucken
  14.17.1 Drucken mit dem einfachen Ansatz
  14.17.2 Ein PrintJob
  14.17.3 Drucken der Inhalte
  14.17.4 Komponenten drucken
  14.17.5 Den Drucker am Parallelport ansprechen
14.18 Java 2D API
  14.18.1 Grafische Objekte zeichnen
  14.18.2 Geometrische Objekte durch Shape gekennzeichnet
  14.18.3 Eigenschaften geometrischer Objekte
  14.18.4 Transformationen mit einem AffineTransform-Objekt
14.19 Graphic Layers Framework
14.20 Grafikverarbeitung ohne grafische Oberfläche
  14.20.1 Xvfb-Server
  14.20.2 Pure Java AWT Toolkit (PJA)
Galileo Computing

15 Komponenten, Ereignisse und Container

15.1 Peer-Klassen und Lightweight-Komponenten
15.2 Es tut sich was – Ereignisse beim AWT
  15.2.1 Was ist ein Ereignis?
  15.2.2 Die Klasse AWTEvent
  15.2.3 Events auf verschiedenen Ebenen
  15.2.4 Ereignisquellen, -senken und Horcher (Listener)
  15.2.5 Listener implementieren
  15.2.6 Listener bei Ereignisauslöser anmelden
15.3 Varianten, das Fenster zu schließen
  15.3.1 Eine Klasse implementiert die Schnittstelle WindowListener
  15.3.2 Adapterklassen nutzen
  15.3.3 Innere Mitgliedsklassen und innere anonyme Klassen
  15.3.4 Generic Listener
15.4 Komponenten
  15.4.1 Die Basis aller Komponenten: Die Klasse Components
  15.4.2 Proportionales Vergrößern eines Fensters
  15.4.3 Hinzufügen von Komponenten
15.5 Ein Informationstext über die Klasse Label
  15.5.1 Mehrzeiliger Text
15.6 Eine Schaltfläche (Button)
  15.6.1 Der aufmerksame ActionListener
  15.6.2 Generic Listener für Schaltflächen-Ereignisse verwenden
15.7 Horizontale und vertikale Schieberegler
  15.7.1 Der AdjustmentListener, der auf Änderungen hört
15.8 Ein Auswahlmenü – Das Choice-Menü
  15.8.1 ItemListener
15.9 Eines aus vielen – Kontrollfeld (Checkbox)
  15.9.1 Ereignisse über ItemListener
15.10 Optionsfelder
15.11 List-Boxen
15.12 Texteingabefelder
  15.12.1 Text in einer Eingabezeile
  15.12.2 Passwort-Felder
  15.12.3 Mehrzeilige Textfelder
15.13 Menüs
  15.13.1 Die Menüleisten und die Einträge
  15.13.2 Menüeinträge definieren
  15.13.3 Shortcuts
  15.13.4 Beispiel für ein Programm mit Menüleisten
15.14 Popup-Menüs
15.15 Selbstdefinierte Cursor
15.16 Alles Auslegungssache: Die Layout-Manager
  15.16.1 FlowLayout
  15.16.2 BorderLayout
  15.16.3 GridLayout
  15.16.4 Der GridBagLayout-Manager
15.17 Dynamisches Layout während einer Größenänderung
15.18 Dialoge
  15.18.1 Der Dateiauswahl-Dialog
15.19 Die Zwischenablage (Clipboard)
15.20 Ereignisverarbeitung auf unterster Ebene
15.21 Benutzerinteraktionen automatisieren
Galileo Computing

16 Let’s Swing

16.1 Das Konzept vom Model-View-Controller
16.2 Der Unterschied zwischen AWT und Swing
  16.2.1 Schließen eines Swing-Fensters
16.3 JLabel
16.4 Die Klasse ImageIcon
  16.4.1 Die Schnittstelle Icon
  16.4.2 Was Icon und Image verbindet
16.5 Die Schaltflächen von Swing
  16.5.1 JButton
  16.5.2 AbstractButton
  16.5.3 JToggleButton
  16.5.4 JCheckBox
  16.5.5 Radiogruppen
16.6 Tooltips
16.7 JScrollBar
16.8 JSlider
16.9 JList
16.10 JComboBox
16.11 Der Fortschrittsbalken JProgressBar
16.12 Symbolleisten alias Toolbars
16.13 Texteingaben
  16.13.1 JPasswordField
  16.13.2 Die Editor-Klasse JEditorPane
16.14 Rahmen (Borders)
16.15 Dialoge
  16.15.1 Der Farbauswahl-Dialog JColorChooser
16.16 Mausradunterstützung
16.17 Der Inhalt einer Zeichenfläche: JPanel
16.18 JRootPane und JLayeredPane
16.19 Tabellen mit JTable
  16.19.1 Ein eigenes Modell
  16.19.2 AbstractTableModel
  16.19.3 DefaultTableModel
  16.19.4 Einen eigenen Renderer für Tabellen
16.20 AWT, Swing und die Threads
  16.20.1 Warum Swing nicht threadsicher ist
  16.20.2 Swing-Elemente bedienen mit invokeLater(), invokeAndWait()
16.21 Das Java Look&Feel
Galileo Computing

17 Netzwerkprogrammierung

17.1 Grundlegende Begriffe
  17.1.1 Internet-Standards und RFC
17.2 URL-Verbindungen
  17.2.1 URL-Objekte erzeugen
  17.2.2 Informationen über eine URL
  17.2.3 Der Zugriff auf die Daten über die Klasse URL
17.3 Die Klasse URLConnection
  17.3.1 Methoden und Anwendung von URLConnection
  17.3.2 Protokoll- und Content-Handler
  17.3.3 Im Detail: Von URL zu URLConnection
17.4 Das Common Gateway Interface
  17.4.1 Parameter für ein CGI-Programm
  17.4.2 Codieren der Parameter für CGI-Programme
  17.4.3 Eine Suchmaschine ansprechen
17.5 Host-Adresse und IP-Adressen
  17.5.1 IPv6 für Java mit Jipsy
17.6 Socket-Programmierung
  17.6.1 Das Netzwerk ist der Computer
  17.6.2 Standarddienste unter Windows nachinstallieren
  17.6.3 Stream-Sockets
  17.6.4 Informationen über den Socket
  17.6.5 Mit telnet an den Ports horchen
  17.6.6 Ein kleines Ping – lebt der Rechner noch?
17.7 Client/Server-Kommunikation
  17.7.1 Ein Multiplikations-Server
17.8 Webprotokolle mit NetComponents nutzen
17.9 E-Mail verschicken
  17.9.1 Wie eine E-Mail um die Welt geht
  17.9.2 Übertragungsprotokolle
  17.9.3 Das Simple Mail Transfer Protocol
  17.9.4 Demoprogramm, welches eine E-Mail abschickt
17.10 Arbeitsweise eines Web-Servers
  17.10.1 Das Hypertext Transfer Protocol (HTTP)
  17.10.2 Anfragen an den Server
  17.10.3 Die Antworten vom Server
17.11 Datagram-Sockets
  17.11.1 Die Klasse DatagramSocket
  17.11.2 Datagramme und die Klasse DatagramPacket
  17.11.3 Auf ein hereinkommendes Paket warten
  17.11.4 Ein Paket zum Senden vorbereiten
  17.11.5 Methoden der Klasse DatagramPacket
  17.11.6 Das Paket senden
  17.11.7 Die Zeitdienste und ein eigener Server und Client
17.12 Internet Control Message Protocol (ICMP)
  17.12.1 Ping
17.13 Multicast-Kommunikation
Galileo Computing

18 Servlets und Java Server Pages

18.1 Dynamische Web-Seiten und Servlets
  18.1.1 Was Servlets sind
  18.1.2 Vorteil von Servlets gegenüber CGI-Programmen
  18.1.3 Das erste Servlet
18.2 Vom Client zum Server und wieder zurück
  18.2.1 Der bittende Client
  18.2.2 Was ein Webserver erzeugt
  18.2.3 Wer oder was ist MIME?
18.3 Servlets entwickeln und testen
  18.3.1 Servlet-Container
  18.3.2 Webserver mit Servlet-Funktionalität
  18.3.3 Tomcat
  18.3.4 Das erste Servlet compilieren und ausführen
18.4 Der Lebenszyklus
  18.4.1 Initialisierung in init()
  18.4.2 Abfragen bei service()
  18.4.3 Mehrere Anfragen beim Servlet und Threadsicherheit
  18.4.4 Das Ende eines Servlets
18.5 Das HttpServletResponse-Objekt
  18.5.1 Wir generieren eine Web-Seite
  18.5.2 Binärdaten senden
  18.5.3 Automatisches Neuladen
  18.5.4 Komprimierte Daten mit Content-Encoding
  18.5.5 Noch mehr über Header, die der Server setzt
  18.5.6 Seiten umlenken
18.6 Was der Browser mit auf den Weg gibt – HttpServletRequest
  18.6.1 Hilfsfunktion im Umgang mit Headern
  18.6.2 Übersicht der Browser-Header
  18.6.3 Formulardaten auslesen
18.7 Kleine Kekse: die Klasse Cookies
  18.7.1 Kekse erzeugen und setzen
  18.7.2 Cookies vom Servlet einlesen
  18.7.3 Kleine Helfer für Cookies
  18.7.4 Cookiestatus ändern
  18.7.5 Langlebige Cookies
  18.7.6 Ein Warenkorbsystem
18.8 Sitzungsverfolgung (Session Tracking)
  18.8.1 Das mit einer Sitzung verbundene Objekt HttpSession
  18.8.2 Werte mit einer Sitzung assoziieren und auslesen
  18.8.3 Zusätzliche Informationen
18.9 URL-Rewriting
18.10 Weiterleitung und Einbinden von Servlet-Inhalten
18.11 Inter-Servlet-Kommunikation
  18.11.1 Daten zwischen Servlets teilen
18.12 Internationalisierung
  18.12.1 Die Länderkennung des Anfragers auslesen
  18.12.2 Länderkennung für die Ausgabe setzen
  18.12.3 Westeuropäische Texte senden
18.13 Java Server Pages (JSP)
  18.13.1 Was Java Server Pages sind
18.14 Skript-Elemente
  18.14.1 Kommentare und Quoting
  18.14.2 Scriptlets
  18.14.3 Vordefinierte Variablen
  18.14.4 Ausdrücke
  18.14.5 Deklarationen
18.15 Entsprechende XML-Tags
18.16 Direktiven
  18.16.1 Wichtige page-Direktiven im Überblick
18.17 Aktionen
  18.17.1 Beans
18.18 Sonstiges zu den Servern
  18.18.1 Den internen Compiler bei Tomcat für JSP ändern
18.19 Tomcat: Spezielles
  18.19.1 Tomcat als Service unter Windows NT ausführen
  18.19.2 MIME-Types mit Tomcat verbinden
  18.19.3 Servlets beim Start laden
18.20 Ein Servlet generiert WAP-Seiten für das Handy
  18.20.1 Ein WAP-Handy simulieren
  18.20.2 Übersicht der wichtigsten Tags
  18.20.3 Der Gateway
  18.20.4 WML-Seiten aufbauen
  18.20.5 Interessante Links zum Thema Servlets/JSP
18.21 Text in HTML-konformen Text umwandeln
Galileo Computing

19 RMI

19.1 Entfernte Methoden
  19.1.1 Wie entfernte Methoden arbeiten
  19.1.2 Stellvertreter (Proxy)
  19.1.3 Wie die Stellvertreter die Daten übertragen
  19.1.4 Probleme mit entfernten Methoden
19.2 Nutzen von RMI bei Middleware-Lösungen
19.3 Die Lösung für Java ist RMI
  19.3.1 Entfernte Objekte programmieren
  19.3.2 Entfernte und lokale Objekte im Vergleich
  19.3.3 RMI und CORBA
19.4 Definition einer entfernten Schnittstelle
19.5 Das entfernte Objekt
  19.5.1 Der Bauplan für entfernte Objekte
  19.5.2 Der Konstruktor
  19.5.3 Implementierung der entfernten Methoden
  19.5.4 UnicastRemoteObjekt, RemoteServer und RemoteObject
19.6 Stellvertreterobjekte erzeugen
  19.6.1 Das Dienstprogramm rmic
19.7 Der Namendienst (Registry)
  19.7.1 Der Port
19.8 Der Server: Entfernte Objekte beim Namensdienst anmelden
  19.8.1 Automatisches Anmelden bei Bedarf
19.9 Einen Client programmieren
  19.9.1 Einfaches Logging
19.10 Aufräumen mit dem DGC
19.11 Entfernte Objekte übergeben und laden
  19.11.1 Klassen vom RMI-Klassenlader nachladen
  19.11.2 Sicherheitsmanager
19.12 Registry wird vom Server gestartet
19.13 RMI über die Firewall
  19.13.12 RMI über HTTP getunnelt
19.14 Java API für XML Messaging (JAXM)
19.15 Java Message Service (JMS)
Galileo Computing

20 Applets

20.1 Applets und Applikationen – wer darf was
20.2 Das erste Hallo-Applet
20.3 Die Zyklen eines Applets
20.4 Parameter an das Applet übergeben
  20.4.1 Wie das Applet den Browserinhalt ändern kann
  20.4.2 Den Ursprung des Applets erfragen
  20.4.3 Was ein Applet alles darf
20.5 Musik in einem Applet
  20.5.1 Fest verdrahtete Musikdatei
  20.5.2 Variable Musikdatei über einen Parameter
  20.5.3 WAV- und MIDI-Dateien abspielen
20.6 Browserabhängiges Verhalten
  20.6.1 Java im Browser aktiviert?
  20.6.2 Läuft das Applet unter Netscape oder Microsoft Explorer?
  20.6.3 Datenaustausch zwischen Applets und Java Skripten
20.7 Applets und Applikationen kombinieren
20.8 Datenaustausch zwischen Applets
20.9 Webstart
Galileo Computing

21 Datenbankmanagement mit JDBC

21.1 Das relationale Modell
  21.1.1 Relationale und objektorientierte Datenbanken
21.2 JDBC: Der Zugriff auf Datenbanken über Java
21.3 Die Rolle von SQL
  21.3.1 Ein Rundgang durch SQL-Anfragen
  21.3.2 Datenabfrage mit der Data Query Language (DQL)
21.4 Datenbanktreiber für den Zugriff
21.5 Datenbanken und ihre Treiber
  21.5.1 Datenbank Interbase
  21.5.2 Interbase JDBC-Treiber
  21.5.3 Die Datenbank Microsoft Access
  21.5.4 Die JDBC-ODBC Bridge
  21.5.5 ODBC einrichten und Access damit verwenden
  21.5.6 Oracle8i Enterprise Edition
21.6 Eine Beispiel-Abfrage
21.7 Mit Java an eine Datenbank andocken
  21.7.1 Der Treibermanager
  21.7.2 Eine Aufzählung aller Treiber
  21.7.3 Log-Informationen
  21.7.4 Den Treiber laden
  21.7.5 Wie Treiber programmiert sind
  21.7.6 Verbindung zur Datenbank
21.8 Datenbankabfragen
  21.8.1 Abfragen über das Statement-Objekt
  21.8.2 Ergebnisse einer Abfrage im ResultSet
21.9 Java und SQL-Datentypen
  21.9.1 Die getXXX()-Methoden
21.10 Transaktionen
21.11 Elemente einer Datenbank hinzufügen und aktualisieren
  21.11.1 Batch-Updates
21.12 Vorbereitete Anweisungen (Prepared Statements)
  21.12.1 PreparedStatement-Objekte vorbeiten
  21.12.2 Werte für die Platzhalter eines PreparedStatement
21.13 Metadaten
  21.13.1 Metadaten über die Tabelle
  21.13.2 Informationen über die Datenbank
21.14 Die Ausnahmen bei JDBC
21.15 Java Data Objects (JDO)
Galileo Computing

22 Reflection

22.1 Einfach mal reinschauen
22.2 Mit dem Class-Objekt etwas über Klassen erfahren
  22.2.1 An ein Class-Objekt kommen
  22.2.2 Was das Class-Objekt beschreibt
  22.2.3 Der Name der Klasse
  22.2.4 Oberklassen finden
  22.2.5 Implementierte Interfaces einer Klasse oder eines Inferfaces
  22.2.6 Modifizierer und die Klasse Modifier
  22.2.7 Die Attribute einer Klasse
  22.2.8 Methoden
  22.2.9 Konstruktoren einer Klasse
22.3 Objekte manipulieren
  22.3.1 Objekte erzeugen
  22.3.2 Die Belegung der Variablen erfragen
  22.3.3 Variablen setzen
22.4 Methoden aufrufen
  22.4.1 Dynamische Methodenaufrufe bei festen Methoden beschleunigen
Galileo Computing

23 Komponenten durch Bohnen

23.1 Grundlagen der Komponententechnik
  23.1.1 Brauchen wir überhaupt Komponenten?
  23.1.2 Visuelle und nicht-visuelle Komponenten
  23.1.3 Andere Komponententechnologien – oder was uns Microsoft brachte
23.2 Das Java-Beans Development Kit (BDK)
  23.2.1 Eine Beispielsitzung im BDK
  23.2.2 Verknüpfungen zwischen Komponenten
  23.2.3 Beans speichern
23.3 Die kleinste Bohne der Welt
23.4 Jar-Archive für Komponenten
23.5 Worauf JavaBeans basieren
23.6 Eigenschaften
  23.6.1 Einfache Eigenschaften
  23.6.2 Boolesche Eigenschaften
  23.6.3 Indizierte Eigenschaften
23.7 Ereignisse
  23.7.1 Multicast und Unicast
  23.7.2 Namenskonvention
23.8 Noch mehr Eigenschaften
  23.8.1 Gebundene Eigenschaften
  23.8.2 Anwendung von PropertyChange bei AWT-Komponenten
  23.8.3 Veto-Eigenschaften. Dagegen!
23.9 Bean-Eingenschaften anpassen
23.10 Property-Editoren
23.11 BeanInfo
23.12 Beliebte Fehler
Galileo Computing

24 Java Native Interface (JNI)

24.1 Java Native Interface und Invocation-API
24.2 Die Schritte zur Einbindung einer C-Funktion in ein Java-Programm
  24.2.1 Schreiben des Java-Codes
  24.2.2 Kompilieren des Java-Codes
  24.2.3 Erzeugen der Header-Datei
  24.2.4 Implementierung der Methode in C
  24.2.5 Übersetzen der C-Programme und Erzeugen der dynamischen Bibliothek
  24.2.6 Setzen der Umgebungsvariable
24.3 Erweiterung unseres Programms
Galileo Computing

25 Sicherheitskonzepte

25.1 Der Sandkasten (Sandbox)
25.2 Sicherheitsmanager (Security Manager)
  25.2.1 Der Sicherheitsmanager bei Applets
  25.2.2 Sicherheitsmanager aktivieren
  25.2.3 Der Sicherheitsmanager in den Java-Bibliotheken
  25.2.4 Ein eigener Sicherheitsberater
  25.2.5 Übersicht über die Methoden
25.3 Klassenlader (Class Loader)
  25.3.1 Wie die Klasse mit der Methode main() heißt
25.4 Digitale Unterschriften
  25.4.1 Die MDx-Reihe
  25.4.2 Secure Hash Algorithm Secure Hash Algorithm (SHASHA)
  25.4.3 Mit der Security API einen Fingerabdruck berechnen
  25.4.4 Die Klasse MessageDigest
  25.4.5 Unix-Crypt
Galileo Computing

26 Dienstprogramme für die Java-Umgebung

26.1 Die Werkzeuge im Überblick
26.2 Der Compiler javac
  26.2.1 Der Java-Interpreter java
26.3 Das Archivformat Jar
  26.3.1 Das Dienstprogramm Jar benutzen
  26.3.2 Das Manifest
  26.3.3 Jar-Archive für Applets und Applikation
26.4 Mit JavaDoc und Doclets dokumentieren
  26.4.1 Mit JavaDoc Dokumentationen erstellen
  26.4.2 Wie JavaDoc benutzt wird
  26.4.3 Dokumentation erstellen
  26.4.4 JavaDoc und Doclets
  26.4.5 Doclets programmieren
  26.4.6 Das Standard-Doclet
26.5 Dienstprogramme zur Signierung von Applets
  26.5.1 keytool
  26.5.2 jarsigner
  26.5.3 policytool
26.6 Konverter von Java nach C
  26.6.1 Toba
  26.6.2 Arbeitsweise von Toba
  26.6.3 Abstriche des Konverters
26.7 Konverter von Java Byte Code in ein Windows-Exe mit JET
26.8 Manteln von Javaklassen in ein Windows-Exe mit JToExe
26.9 Decompiler
  26.9.1 Jad, ein schneller Decompiler
  26.9.2 SourceAgain
  26.9.3 Decompilieren erschweren
26.10 Obfuscate Programm RetroGuard
26.11 Source-Code Beautifier
Galileo Computing

27 Style-Guide

27.1 Programmierrichtlinien
27.2 Allgemeine Richtlinien
27.3 Quellcode kommentieren
  27.3.1 Bemerkungen über JavaDoc
  27.3.2 Gotcha-Schlüsselwörter
27.4 Bezeichnernamen
  27.4.1 Ungarische Notation
  27.4.2 Vorschlag für die Namensgebung
27.5 Formatierung
  27.5.1 Einrücken von Programmcode – die Vergangenheit
  27.5.2 Verbundene Ausdrücke
  27.5.3 Kontrollierter Datenfluss
  27.5.4 Funktionen
27.6 Ausdrücke
27.7 Anweisungen
  27.7.1 Schleifen
  27.7.2 Switch, Case und Durchfallen
27.8 Klassen
27.9 Zugriffsrechte
  27.9.1 Accessors/Zugriffsmethoden
27.10 Verweise
Galileo Computing

A Die Java-Grammatik

A.1 Die lexikalische Struktur
A.2 Typen, Werte und Variablen
A.3 Bezeichner
A.4 Pakete
A.5 Produktionen für die LALR(1) Grammatik
A.6 Klassen
A.7 Statische Initialisierungen
A.8 Konstruktoren
A.9 Schnittstellen
A.10 Felder
A.11 Blöcke und Anweisungen
A.12 Ausdrücke
Galileo Computing

B Quellenverzeichnis

Galileo Computing

Index

  

Java 2




Copyright © Galileo Press GmbH 2002
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, fon: 0228.42150.0, fax 0228.42150.77, info@galileo-press.de