Vorwort- Teil I -1 Einführung und Installation1.1 Ein paar Worte zu Java 1.2 Installation der J2SE 5.0 1.2.1 Download der Installationsdateien 1.2.2 Installation unter Windows 1.2.3 Installation unter Linux 1.2.4 Das JDK deinstallieren 1.2.5 Verwendung der Dokumentation 1.3 Die Verzeichnisstruktur und wichtige Dateien des JDK 1.4 Gängige Abkürzungen im Java-Umfeld 2 Die erste Java-Anwendung 2.1 Einführung 2.2 Eingabe des SourceCodes 2.2.1 Ein einfacher Editor – ConTEXT 2.2.2 Grundelemente einer Java-Anwendung in der Übersicht 2.3 Übersetzen von Anwendungen 2.4 Ausführen der Anwendung 2.5 Der Klassenpfad 2.6 Applets mit dem Appletviewer ausführen 2.7 Verwendung der Beispiele 2.8 Datenein- und -ausgabe 2.9 Kurzes Glossar 3 Grundlegende Sprachelemente 3.1 Elemente eines Programms 3.1.1 Anweisungen, Anweisungsblöcke 3.1.2 Kommentare 3.1.3 Reservierte Wörter 3.1.4 Literale 3.1.5 Bezeichner 3.2 Primitive Datentypen 3.2.1 Numerische Datentypen 3.2.2 Datentyp Zeichen 3.2.3 Logische Datentypen 3.3 Variablen und Konstanten 3.3.1 Variablen 3.3.2 Wertzuweisungen 3.3.3 Typumwandlungen 3.3.4 Konstanten 3.4 Operatoren und Ausdrücke 3.4.1 Arithmetische Operatoren 3.4.2 Vergleichsoperatoren (relationale Operatoren) 3.4.3 Logische Operatoren 3.4.4 Bitweise Operatoren 3.5 Steuerung des Programmflusses 3.5.1 if-Anweisung 3.5.2 if-else-Anweisung 3.5.3 Der Bedingungsoperator ? 3.5.4 switch-Anweisung 3.5.5 for-Anweisung 3.5.6 Die verbesserte for-Anweisung 3.5.7 while-Anweisung 3.5.8 do-while-Anweisung 3.5.9 Programmfluss mit break und continue beeinflussen 4 Klassen, Interfaces und Objekte 4.1 Einführung 4.1.1 Klassen definieren Baupläne 4.1.2 Objekte sind die konkrete Realisierung des Bauplans 4.2 Einfache Klassen 4.3 Objekte 4.4 Methoden 4.4.1 Einfache Methoden ohne Parameterübergabe 4.4.2 Parameter übergeben 4.5 Konstruktoren und Destruktoren 4.6 Zugriffsattribute und Sichtbarkeit 4.7 Statische Klassenelemente 4.8 Aufzählungstypen mit Enum 4.9 Vererbung 4.9.1 Die Klasse Object als Basisklasse aller Klassen 4.9.2 Klassen ableiten 4.9.3 Konstruktoraufrufe 4.9.4 Vererbungsketten und Zuweisungskompatibilität 4.9.5 Finale Klassen 4.10 Interfaces 4.11 Adapterklassen 4.12 Abstrakte Klassen und Methoden 4.13 Methoden überschreiben 4.14 Polymorphie 4.15 Innere, verschachtelte und lokale Klassen 4.15.1 Innere Klassen 4.15.2 Verschachtelte Klassen 4.16 Anonyme Klassen 5 Packages 5.1 Einführung 5.1.1 Package-Hierarchie 5.1.2 Benannte und unbenannte Packages 5.1.3 Zugriffsrechte 5.1.4 Aufteilung einer Anwendung in Packages 5.2 Packages importieren 5.3 Statischer Import 6 Arrays, Wrapper und Auto(un)boxing 6.1 Einführung 6.2 Die Klasse Arrays 6.3 Wrapper-Klassen 6.3.1 Nützliche Methoden 6.3.2 Auto(un)boxing 6.3.3 Bitmanipulation 7 Exceptions 7.1 Einführung 7.2 Exceptions behandeln 7.3 Exceptions weitergeben 7.4 Aufräumen mit finally 7.5 Exceptions auslösen 7.5.1 Exceptions erzeugen und auslösen 7.5.2 Exceptions erneut auslösen 7.5.3 Exception-Ketten 7.6 Eigene Exceptions verwenden 8 Assertions 8.1 Einführung 8.2 Informationen zum Einsatz von Assertions 8.2.1 Seiteneffekte 8.2.2 Einsatzgebiete 8.3 Aktivieren von Assertions 8.3.1 Übersetzung 8.3.2 Ausführen 8.3.3 Verhindern der Einbindung in die *.class-Datei 8.3.4 Sicherstellung der Aktivierung 9 Zeichenkettenverarbeitung 9.1 Mit String-Objekten arbeiten 9.1.1 Ein String-Objekt erzeugen 9.1.2 Länge eines Strings und Position einzelner Zeichen 9.1.3 Strings verketten 9.1.4 String-Objekte ändern 9.1.5 Strings vergleichen 9.1.6 Zeichenketten manipulieren 9.1.7 Formatierte Strings erzeugen 9.1.8 Andere Datentypen in einen String konvertieren 9.2 StringBuilder- und StringBuffer-Objekte verwenden 9.2.1 Ein StringBuffer-Objekt erzeugen 9.2.2 Ein StringBuffer- in ein String-Objekt umwandeln 9.2.3 Daten anhängen und einfügen 9.2.4 Löschen und Verändern von Zeichen im StringBuffer 9.2.5 String-Länge und Puffergröße bestimmen 9.2.6 Vergleich von StringBuffer-Objekten 9.2.7 Performance-Steigerung durch die Klassen StringBuffer und String-Builder 9.3 Formatierung 9.3.1 Formatierung mithilfe der Klasse Formatter 9.3.2 Formatter-Objekt erzeugen 9.3.3 Daten konvertieren 9.3.4 Weitere Methoden der Klasse Formatter 9.3.5 Formatierung von Zahlen über die Klasse NumberFormat 10 Nützliche Klassen 10.1 Datum und Uhrzeit 10.1.1 Die Klassen Calendar und GregorianCalendar 10.2 Zufallszahlen erzeugen 10.3 Die Klasse System 10.3.1 Standardeingabe, Standardausgabe 10.3.2 Zugriff auf Systemeigenschaften und Umgebungsvariablen 10.3.3 Weitere Methoden der Klasse System 10.4 Die Klassen Process, ProcessBuilder und Runtime 10.5 Reguläre Ausdrücke 10.5.1 Suchmuster definieren 10.5.2 Die Klassen Pattern und Matcher 10.5.3 Reguläre Ausdrücke in Scanner-Objekten anwenden 11 Datei- und Verzeichniszugriffe 11.1 File-Objekt erzeugen 11.2 Informationen über Dateien ermitteln 11.2.1 Verzeichnisse, Pfade und Dateinamen 11.2.2 Eigenschaften von Dateien bzw Verzeichnissen bestimmen 11.2.3 Eigenschaften von Dateien setzen 11.3 Verzeichnisse und Dateien anlegen, löschen und umbenennen 11.3.1 Verzeichnisse erstellen und löschen 11.3.2 Dateien anlegen, löschen und umbenennen 11.3.3 Temporäre Dateien erzeugen und löschen 11.4 Dateien und Verzeichnisse auflisten lassen 11.4.1 URL oder URI eines File-Objekts 12 Ein- und Ausgabe/Streams 12.1 Ein- und Ausgabe auf Standardgeräte 12.2 Das Stream-Konzept von Java 12.3 Character-Streams 12.3.1 Gemeinsame Methoden der Writer-Klassen 12.3.2 Gemeinsame Methoden der Reader-Klassen 12.3.3 Ein- und Ausgabe in Dateien 12.3.4 Ein- und Ausgabe in Character-Arrays und StringBuffer 12.3.5 Pufferung erhöht die Effizienz 12.3.6 Formatierte Ausgaben 12.3.7 Filter verwenden 12.3.8 Datenaustausch zwischen Threads 12.4 Byte-Streams 12.4.1 Gemeinsame Methoden der OutputStream-Klassen 12.4.2 Gemeinsame Methoden der InputStream-Klassen 12.4.3 Formatierte Ausgaben 12.4.4 Ausgeben und Einlesen primitiver Datentypen 12.4.5 Verknüpfen mehrerer InputStreams 12.5 ObjectStreams 12.5.1 Die Klasse ObjectOutputStream 12.5.2 Die Klasse ObjectInputStream 12.5.3 Änderungen an serialisierbaren Klassen (Versionsverwaltung) 12.6 Zip-Streams 12.6.1 Zip-Dateien anlegen 12.6.2 Daten in die Zip-Datei ausgeben 12.6.3 Inhalt der ZIP-Dateien auslesen 12.6.4 Die Klasse ZipEntry 12.6.5 Objekte komprimieren 12.7 Dateien mit wahlfreiem Zugriff 12.8 Das Package java.NIO 12.8.1 Die Pufferklassen des NIO 12.8.2 Memory Mapping 12.8.3 Channels 12.8.4 Charsets 13 Collections 13.1 Einführung 13.1.1 Das Collection-Interface 13.2 BitSet 13.3 Listen 13.3.1 Vektoren 13.3.2 Stack 13.3.3 ArrayList 13.4 Mengen 13.5 Schlangen 13.6 Abbildungen 13.6.1 Hashtable 13.6.2 Properties-Dateien 13.7 Algorithmen der Klasse Collections 13.7.1 Sortieren von Collections 13.7.2 Synchronisierte Collections 13.7.3 Unveränderliche Collections 14 Generics 14.1 Einführung 14.2 Type Erasure 14.3 Generische Typen 14.4 Wildcards und Bounds 14.4.1 Wildcards 14.4.2 Bounds 14.5 Generische Methoden 14.6 Standardcode und Generics 14.7 Einschränkungen 14.8 Kovariante Rückgabetypen 15 JAR-Archive 15.1 Einführung 15.2 Das Manifest und das Verzeichnis META-INF 15.3 Verwendung des jar-Tools 15.3.1 Archive erstellen 15.3.2 Verwendung einer Dateiliste 15.3.3 Archive aktualisieren 15.3.4 Archivinhalte auflisten 15.3.5 Archive auspacken 15.3.6 Indexdateien erzeugen 15.4 Verwendung von Archiven 15.5 Signieren von Archiven 16 Javadoc 16.1 Einführung 16.2 Anwendung des Kommandozeilentools 16.3 Dokumentationskommentare 16.4 API-Schnittstelle von javadoc 16.5 Doclets 16.6 Taglets 17 Internationalisierung 17.1 Einführung 17.2 Sprach- und Ländereinstellungen 17.3 Zahlen, Texte und Datum formatieren 17.3.1 Zahlen formatieren 17.3.2 Texte formatieren 17.3.3 Datums- und Zeitangaben formatieren 17.4 ResourceBundles 17.4.1 Einführung 17.4.2 Erzeugen und Verwenden von ResourceBundles 18 Anwendungen weitergeben 18.1 Einführung 18.1.1 Installation unter Windows 18.1.2 Installation unter Linux 18.2 Angepasste Installationen 18.3 Wie werden Anwendungen weitergegeben? Teil II19 Einführung in die grafische Programmierung19.1 Allgemeines 19.2 Ein einführendes Beispiel 20 Das Abstract Windowing Toolkit 20.1 Fenster 20.1.1 Fenster anzeigen und schließen 20.1.2 Fenstereigenschaften 20.2 Ereignisse 20.2.1 Das Delegation Model 20.2.2 Ereignisklassen und Listener 20.2.3 Implementierung von Listenern 20.2.4 Ereignisse aktivieren 20.2.5 Überblick über AWT-Ereignisse 20.2.6 Auf Low-Level-Ereignisse reagieren 20.3 AWT-Komponenten 20.3.1 Übersicht der AWT-Komponenten 20.3.2 Verwendung der Komponenten 20.3.3 Menüs 20.4 Dialoge 20.4.1 Selbst erstellte Dialoge 20.4.2 Vordefinierte Dialoge 20.5 LayoutManager 20.5.1 Das FlowLayout 20.5.2 Das BorderLayout 20.5.3 Das GridLayout 20.5.4 Oberflächen gestalten 20.6 Einfache Grafikprogrammierung 20.6.1 Einführung 20.6.2 Farben 20.6.3 Formen zeichnen 20.6.4 Linien 20.6.5 Rechtecke 20.6.6 Polygone (n-Ecke) 20.6.7 Ellipsen und Ellipsenbogen 21 Swing 21.1 Grundlagen 21.2 Fensterklassen 21.2.1 Aufbau von Swing-Fenstern 21.2.2 Swing-Fenster schließen 21.2.3 Das Look & Feel – Aussehen der Fenster 21.2.4 Interne Fenster 21.2.5 Dialoge 21.3 Die Model-View-Controller-Architektur 21.4 Swing-Komponenten 21.4.1 Ein Vergleich mit AWT-Komponenten 21.4.2 Allgemeine Eigenschaften von Swing-Komponenten 21.4.3 Komponenten mit Icons 21.4.4 Weitere Swing-Komponenten 21.4.5 Ausgewählte Swing-Komponenten 21.4.6 Swing-Menüs 21.4.7 Die Zwischenablage 21.5 Drag & Drop 22 Applets 22.1 Einführung 22.2 Aufbau von Applets 22.2.1 Ein Applet erzeugen 22.2.2 Der Lebenszyklus des Applets 22.3 Applets starten 22.3.1 Applets aus einer HTML-Datei starten 22.3.2 Parameterübergabe 22.3.3 Der Appletviewer 22.4 Informationen zum Applet anzeigen 22.5 Applets mit Animationen und Sound 22.6 Den Applet-Kontext nutzen 22.7 Plug-Ins verwenden 22.7.1 Installation des Plug-Ins 22.7.2 Anpassen der HTML-Dateien 22.8 Sicherheit 23 Drucken 23.1 Entwicklung 23.2 Drucken über das Java 2 Print API 23.2.1 Druckseite aufbauen 23.2.2 Druckdokument erstellen 23.2.3 Druckausgabe über die Klasse PrinterJob 23.3 Drucken mit dem Java Print Service 23.3.1 Attribute festlegen 23.3.2 Druckformat auswählen 23.3.3 Drucker suchen 23.3.4 Druckdaten bereitstellen und Druck starten 23.3.5 Druckereignisse 24 JavaBeans 24.1 Einführung 24.2 JavaBeans implementieren 24.2.1 Eigenschaftsmethoden 24.3 Ereignisse durch JavaBeans auslösen 24.4 Die BeanBox Teil III25 Debuggen25.1 Einführung 25.1.1 Fehlerklassifizierung 25.1.2 Anwendung eines Debuggers 25.1.3 Weitere Debug-Möglichkeiten 25.2 Der Java Debugger jdb 25.3 Grafische Debugger 25.3.1 JBuilder 2005 26 Reflection 26.1 Einführung 26.2 Klassenobjekte ermitteln 26.2.1 Klassenobjekt über ein Objekt ermitteln 26.2.2 Klassenobjekt über die Klasse ermitteln 26.2.3 Klassenobjekt über den Klassennamen ermitteln 26.3 Klasseninstanzen dynamisch erzeugen 26.4 Informationen über eine Klasse ermitteln 26.4.1 Klassenobjekte besitzen einen Basistyp 26.4.2 Modifizierer auslesen 26.4.3 Variablen ermitteln 26.4.4 Informationen zu Methoden 26.5 Methoden aufrufen 26.6 Konstruktoren ermitteln und aufrufen 26.7 Arbeit mit Arrays 26.8 Aufzählungen ermitteln 26.9 Dynamisches Laden von Klassen 26.10 Proxy-Klassen 27 Annotations 27.1 Einführung 27.2 Vordefinierte Annotation-Typen 27.3 Eigene Annotation-Typen 27.3.1 Deklaration der Annotation 27.3.2 Annotations verwenden 27.4 Annotations für Packages 27.5 Zugriff zur Laufzeit 27.6 Annotation Processing Tool – apt 28 Logging 28.1 Einführung 28.2 Logger erzeugen 28.3 Log-Einträge erzeugen und Log-Level setzen 28.4 Handler verwenden 28.5 Der LogManager 28.5.1 Konfigurationsdatei 28.6 Filter verwenden 28.7 Log4j 29 Preferences 29.1 Einführung 29.2 Speichern und Laden von Einstellungen 29.3 Zugriff auf die Hierarchie 29.4 Reagieren auf Änderungen 29.5 Preferences exportieren und importieren 30 Threads 30.1 Einführung 30.2 Threads über die Klasse Thread erzeugen 30.3 Threads über das Interface Runnable erzeugen 30.4 Threads unterbrechen 30.5 Zustände eines Threads 30.6 Prioritäten 30.7 Daemon-Threads 30.8 Timer 30.9 Thread-Gruppen 30.10 Synchronisation 30.10.1 Einführung 30.10.2 Einfache Synchronisationsmechanismen 30.10.3 Monitore 30.10.4 Kooperation zwischen Threads 30.10.5 Das Attribut volatile 30.10.6 Deadlocks 30.11 Datenaustausch zwischen Threads 30.12 Die Concurrency Utilities 31 Netzwerkanwendungen 31.1 Einführung 31.2 Zugriff auf Netzadressen 31.3 Arbeiten mit URLs 31.3.1 URL-Objekte erzeugen 31.3.2 URLs parsen 31.3.3 Daten verarbeiten 31.4 Socket-Verbindungen 31.4.1 ClientSockets 31.4.2 ServerSockets 31.4.3 Verwaltung mehrerer paralleler Verbindungen 31.5 Datagramme 31.5.1 Client-Anwendungen 31.5.2 Server-Anwendungen 31.6 Das Java Mail API 31.6.1 Mails senden 31.6.2 Mails empfangen 31.6.3 Anhänge verschicken und empfangen 32 XML 32.1 Einführung 32.2 XML-Grundlagen 32.3 XML-Parser 32.3.1 SAX-Parser 32.3.2 DOM-Parser 32.4 XSLT-Transformationen 32.4.1 Kommandozeilenversion 32.4.2 DOM-Bäume speichern 32.4.3 XML-Dokumente transformieren 33 JDBC – Datenbankzugriff 33.1 Einführung 33.1.1 JDBC-Treiber 33.1.2 Treibertypen 33.1.3 Architektur von Datenbankanwendungen 33.2 Einrichten einer Datenbank 33.2.1 MySQL 33.2.2 Firebird installieren 33.3 Herstellen der Datenbankverbindung 33.3.1 Einführung 33.3.2 JDBC-Treiber laden 33.3.3 Die Verbindung herstellen 33.4 SQL-Anweisungen einsetzen 33.4.1 Einführung 33.4.2 Anweisungen ausführen 33.4.3 Vorbereitete Anweisungen 33.4.4 Stored Procedures verwenden 33.4.5 Batch-Mode 33.5 Zugriff auf die Ergebnismengen 33.5.1 Einführung 33.5.2 Werte auslesen 33.5.3 Navigation 33.5.4 Konfiguration 33.5.5 Werte ändern und zurückschreiben 33.6 Transaktionsverwaltung 33.6.1 Einführung 33.6.2 Transaktionen unter JDBC 33.6.3 Isolationsstufen 33.6.4 Sicherungspunkte 33.7 Zugriff auf Metadaten einer Datenbank 33.7.1 Informationen zu den Datenbankelementen 33.7.2 Informationen zur Ergebnismenge 33.8 Datenbankzugriff über Applets 33.9 Fehlersuche in JDBC-Anwendungen 34 JNDI 34.1 Einführung 34.2 Benötigte Software 34.3 Namensdienste verwenden 34.4 Verzeichnisdienste verwenden 35 JUnit – Tests 35.1 Einführung 35.2 Testfälle 35.3 TestSuites 35.4 Tests ausführen Anhang: Die CD zum Buch Stichwortverzeichns |