O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Java-Programmierung – Das Handbuch zu Java 8 , 8th Edition

Book Description

Die Neuauflage dieses Standardwerks führt Sie umfassend in die Programmierung mit Java 8 ein. Vom Aufbau einer funktionierenden Entwicklungsumgebung über Grundlagen der Sprache bis hin zu Themen wie Grafik-, Netzwerk- oder Datenbankprogrammierung werden alle wichtigen Eigenschaften der Java 8 Standard Edition vorgestellt. Auch die aktuellen Schlüsselthemen wie funktionale Interfaces, Lambda-Ausdrücke, Closures und Methoden-Referenzen werden mit vielen Beispielen umfassend und leicht verständlich erläutert. Daneben runden eine Vielzahl weiterführender Themen das Werk ab, wie beispielsweise Design Patterns, Kryptografie oder XML. Mit diesem Handbuch erhalten Programmierer mit Vorkenntnissen und Studierende einen leicht verständlichen Zugang zu Sprache und Klassenbibliotheken, während Fortgeschrittene und Profis ein komplettes Nachschlagewerk für die tägliche Arbeit an die Hand bekommen. Dank des übersichtlichen Aufbaus, vieler Beispielprogramme und Querverweise sowie des ausführlichen Indexes eignet sich das Buch sehr gut zum Selbststudium. Für die Neuauflage wurde es gründlich aktualisiert und etwas verschlankt.

Table of Contents

  1. Java-Programmierung – Das Handbuch zu Java 8
  2. Vorwort
    1. Vorwort zur 8. Auflage
  3. I. Einführung
    1. 1. Einleitung
      1. An wen sich dieses Buch richtet
      2. Neu in der 8. Auflage
      3. Aufbau dieses Buches
      4. Typografische Konventionen
      5. Die Icons in diesem Buch
      6. Die im Buch verwendete UML-Notation
      7. Verwendung der Codebeispiele
      8. Kontakt
    2. 2. Was ist Java?
      1. Geschichte von Java
        1. Das Green Project
        2. Hot Java und seine Applets
        3. Der frühe Erfolg von Java
        4. Die erste Krise
        5. Java wird erwachsen
      2. Eigenschaften von Java
        1. Sprachmerkmale
        2. Umfangreiche Klassenbibliothek
        3. Grafikprogrammierung
        4. Applets: Eine neue Klasse von Programmen
        5. Apps: Die Urenkel der Applets
      3. Versionen und Editionen
      4. Weiterführende Informationen
        1. Die Dokumentation des JDK
        2. Informationen im Internet
        3. Die HTML-Ausgabe des Buches
    3. 3. Schnelleinstieg
      1. Installation des JDK
        1. Installation der Entwicklungswerkzeuge
        2. Installation der Dokumentation und Quelltexte
      2. Erste Gehversuche
        1. Java-Programme erstellen, übersetzen und ausführen
          1. 1. Vorbereitung
          2. 2. Erstellen des Quelltextes
          3. 3. Übersetzen des Quelltextes
          4. 4. Ausführen des Programms
          5. 5. Beenden des Programms
        2. Die Beispielprogramme in diesem Buch
          1. Starten der Beispielprogramme
          2. Zusätzlich benötigte Dateien
      3. Eigene Experimente
        1. Der Entwicklungszyklus in Kurzform
        2. Einfache Ein- und Ausgaben
        3. Formatierung der Quelltexte
        4. Namenskonventionen
        5. Aufruf von Java-Programmen unter Windows
          1. Erstellen einer Batch-Datei
          2. Erstellen einer Verknüpfung auf dem Desktop
          3. Verwenden von javaw anstelle von java
        6. Häufige Probleme
          1. Was ist eine DOS-Box und wie startet man sie?
          2. java läuft, javac aber nicht
          3. Was sind eigentlich Umgebungsvariablen?
          4. Der Compiler kompiliert nicht
          5. Der Interpreter java arbeitet nicht korrekt
          6. Zusätzlich benötigte Klassen werden nicht gefunden
      4. Die Eclipse-IDE
        1. Überblick
        2. Installation
        3. Erste Schritte
      5. Die BlueJ-IDE
        1. Installation
        2. Erste Schritte
  4. II. Grundlagen der Sprache
    1. 4. Datentypen
      1. Lexikalische Elemente eines Java-Programms
        1. Eingabezeichen
        2. Kommentare
        3. Bezeichner
        4. Weitere Unterschiede zu C
      2. Primitive Datentypen
        1. Der logische Typ
          1. Literale
        2. Der Zeichentyp
          1. Literale
        3. Die integralen Typen
          1. Literale
        4. Die Fließkommazahlen
          1. Literale
      3. Variablen
        1. Grundeigenschaften
        2. Deklaration von Variablen
        3. Lebensdauer/Sichtbarkeit
      4. Arrays
        1. Deklaration und Initialisierung
        2. Zugriff auf Array-Elemente
        3. Mehrdimensionale Arrays
      5. Referenztypen
        1. Beschreibung
        2. Speichermanagement
      6. Typkonvertierungen
        1. Standardkonvertierungen
        2. Vorzeichenlose Bytes
    2. 5. Ausdrücke
      1. Eigenschaften von Ausdrücken
      2. Arithmetische Operatoren
      3. Relationale Operatoren
      4. Logische Operatoren
      5. Bitweise Operatoren
      6. Zuweisungsoperatoren
      7. Sonstige Operatoren
        1. Weitere Operatoren für primitive Typen
          1. Fragezeichenoperator
          2. Type-Cast-Operator
        2. Operatoren für Objekte
          1. String-Verkettung
          2. Referenzgleichheit und -ungleichheit
          3. Der instanceof-Operator
          4. Der new-Operator
          5. Member-Zugriff
          6. Methodenaufruf
          7. Zugriff auf Array-Elemente
        3. Welche Operatoren es nicht gibt
      8. Operator-Vorrangregeln
    3. 6. Anweisungen
      1. Elementare Anweisungen
        1. Die leere Anweisung
          1. Syntax
          2. Bedeutung
        2. Der Block
          1. Syntax
          2. Bedeutung
        3. Variablendeklarationen
          1. Syntax
          2. Bedeutung
        4. Ausdrucksanweisungen
          1. Syntax
          2. Bedeutung
      2. Verzweigungen
        1. Die if-Anweisung
          1. Syntax
          2. Bedeutung
          3. Dangling else
          4. Bedingtes Kompilieren
        2. Die switch-Anweisung
          1. Syntax
          2. Bedeutung
      3. Schleifen
        1. Die while-Schleife
          1. Syntax
          2. Bedeutung
        2. Die do-Schleife
          1. Syntax
          2. Bedeutung
        3. Die for-Schleife
          1. Syntax
          2. Bedeutung
          3. break und continue
          4. Die erweiterte for-Schleife
      4. Sonstige Anweisungen
        1. Die assert-Anweisung
          1. Syntax
          2. Bedeutung
          3. An- und Abschalten der Assertions
          4. Anwendungen
          5. Nebeneffekte
          6. Kompatibilität
    4. 7. Grundlagen der objektorientierten Programmierung
      1. Konzepte objektorientierter Programmiersprachen
        1. Abstraktion
        2. Kapselung
        3. Wiederverwendung
        4. Beziehungen
          1. Generalisierung und Spezialisierung
          2. Aggregation und Komposition
          3. Verwendungs- und Aufrufbeziehungen
        5. Polymorphismus
        6. Fazit
      2. Klassen und Objekte in Java
        1. Klassen
        2. Objekte
      3. Methoden
        1. Definition
        2. Aufruf
        3. Parameter
        4. Variable Parameterlisten
        5. Rückgabewert
        6. Überladen von Methoden
          1. Die Signatur einer Methode
        7. Konstruktoren
          1. Default-Konstruktoren
          2. Verkettung von Konstruktoren
          3. Initialisierungsreihenfolge
        8. Destruktoren
    5. 8. Vererbung, Polymorphismus und statische Elemente
      1. Grundlagen der Vererbung
        1. Ableiten einer Klasse
        2. Die Klasse Object
        3. Überlagern von Methoden
          1. Dynamische Methodensuche
          2. Aufrufen einer verdeckten Methode
        4. Vererbung von Konstruktoren
          1. Konstruktorenverkettung
          2. Der Default-Konstruktor
          3. Überlagerte Konstruktoren
          4. Destruktorenverkettung
      2. Modifier
        1. Sichtbarkeit
        2. Die Attribute im Überblick
          1. private
          2. protected
          3. public
          4. Standard (package scoped)
          5. static
          6. final
          7. transient
          8. volatile
      3. Statische Methoden und Membervariablen
        1. Klassenvariablen
        2. Konstanten
        3. Klassenmethoden
          1. Die statische Methode main
        4. Statische Initialisierer
      4. Abstrakte Klassen und Polymorphismus
        1. Abstrakte Klassen
        2. Ein Beispiel für Polymorphismus
        3. Polymorphe Methodenaufrufe in Konstruktoren
    6. 9. Strings
      1. Grundlagen der Klasse String
        1. Konstruktoren
        2. Zeichenextraktion
        3. Die Länge der Zeichenkette
        4. Vergleichen von Zeichenketten
        5. Suchen in Zeichenketten
        6. Ersetzen von Zeichenketten
        7. Zerlegen von Zeichenketten
        8. Konvertierungsfunktionen
      2. Weitere Eigenschaften
        1. Die Klasse String ist final
        2. Was ist ein String für den Compiler?
          1. String-Literale
          2. String-Verkettung und -Zuweisung
        3. String-Objekte sind nicht dynamisch
      3. Die Klasse StringBuilder
        1. Konstruktoren
        2. Einfügen von Elementen
        3. Löschen von Elementen
        4. Verändern von Elementen
        5. Längeninformationen
        6. Konvertierung in einen String
      4. Das Interface CharSequence
        1. Parameterübergabe von beliebigen Zeichenketten
      5. Die Klasse StringJoiner
      6. Ausgabeformatierung
        1. Grundlagen
        2. Die Formatangaben
  5. III. Weiterführende Spracheigenschaften
    1. 10. Interfaces
      1. Grundlagen von Interfaces
        1. Definition
        2. Implementierung
        3. Verwendung
      2. Das Interface Comparable
      3. Mehrfachimplementierung und Vererbung
        1. Mehrfachimplementierung
        2. Vererbung von Interfaces
        3. Ableiten von Interfaces
      4. Weitere Anwendungen von Interfaces
        1. Konstanten in Interfaces
          1. static import
        2. Implementierung von Flags
        3. Nachbildung von Funktionszeigern
      5. Interfaces und Hilfsklassen
        1. Die Default-Implementierung
        2. Delegation an die Default-Implementierung
        3. Die leere Implementierung
        4. Default-Methoden an Interfaces
        5. Statische Methoden an Interfaces
    2. 11. Lokale Klassen und Wrapper-Klassen
      1. Lokale und anonyme Klassen
        1. Nichtstatische lokale Klassen
          1. Klassen in Klassen
          2. Klassen in Methoden
        2. Anonyme Klassen
        3. Statische lokale Klassen
      2. Wrapper-Klassen
        1. Vordefinierte Wrapper-Klassen
          1. Instanzierung
          2. Rückgabe des Wertes
          3. Parsen von Strings
          4. Konstanten
        2. Call by Reference
        3. Autoboxing und Autounboxing
      3. Aufzählungstypen
        1. Grundlagen
        2. Erweiterung der Aufzählungsklasse
      4. Lambda-Ausdrücke
        1. Grundlegende Ideen
        2. Syntaktische Vereinfachungen
        3. Das Paket java.util.function
        4. Closures
        5. Methoden-Referenzen
    3. 12. Exceptions
      1. Behandlung von Exceptions
        1. Die try-catch-Anweisung
        2. Das Fehlerobjekt
        3. Die Fehlerklassen von Java
        4. Fortfahren nach Fehlern
        5. Mehr als eine catch-Klausel
        6. Zusammenfassen mehrerer catch-Klauseln
        7. Die finally-Klausel
      2. Weitergabe von Exceptions
        1. Die catch-or-throw-Regel
        2. Weitergabe einer Exception
          1. Die Klasse RuntimeException
        3. Exakte Weitergabe von Exceptions
        4. Auslösen von Ausnahmen
      3. Automatisches Schließen von Ressourcen
    4. 13. Strukturierung von Java-Programmen
      1. Programmelemente
        1. Anweisungen
        2. Blöcke
        3. Methoden
        4. Klassen
        5. Pakete
        6. Applikationen
        7. Applets
      2. Pakete
        1. Verwendung von Paketen
          1. Der Import von java.lang
          2. Die vordefinierten Pakete im JDK
        2. Die Bedeutung der Paketnamen
          1. Laden von Klassen
          2. Umgekehrte Domain-Namen
        3. Einbinden zusätzlicher Pakete
        4. Erstellen eigener Pakete
          1. Benannte Pakete
          2. Das Default-Paket
          3. Das public-Attribut
      3. Der Entwicklungszyklus
        1. Schematische Darstellung
        2. Projektverwaltung
          1. Getrenntes Kompilieren
          2. Java und ant
      4. Auslieferung von Java-Programmen
        1. Weitergabe des Bytecodes
          1. Direkte Weitergabe der Klassendateien
          2. Verwendung eines jar-Archivs
          3. Ausführbare jar-Archive
        2. Einbinden von Ressourcendateien
      5. Java Web Start
        1. Einleitung und Funktionsweise
        2. Erstellen einer WebStart-Applikation
          1. Erzeugen der .jar-Dateien
          2. Anlegen der Deskriptordatei
          3. Die Anwendung auf dem Webserver installieren
          4. Starten der Anwendung
        3. Das jnlp-API
          1. Services
          2. Ein einfaches Beispiel
    5. 14. Design-Patterns
      1. Singleton
      2. Immutable
      3. Interface
      4. Factory
        1. Factory-Methode
        2. Factory-Klasse
        3. Abstrakte Factory
      5. Iterator
      6. Delegate
      7. Composite
      8. Visitor
      9. Observer
  6. IV. Elementare Klassenbibliotheken
    1. 15. Collections I
      1. Die Klasse Vector
        1. Einfügen von Elementen
        2. Zugriff auf Elemente
        3. Der Vektor als Iterator
      2. Die Klasse Stack
      3. Die Klasse Hashtable
        1. Einfügen von Elementen
        2. Zugriff auf Elemente
        3. Hashtable als Iterator
        4. Die Klasse Properties
      4. Die Klasse BitSet
        1. Elementweise Operationen
        2. Mengenorientierte Operationen
    2. 16. Collections II
      1. Die Collection des Typs List
        1. Abstrakte Eigenschaften
        2. Implementierungen
      2. Iteratoren
        1. Das Interface Iterator
        2. Das Interface ListIterator
        3. Die forEach-Methode
      3. Die Collection des Typs Set
        1. Abstrakte Eigenschaften
        2. Implementierungen
      4. Die Collection des Typs Map
        1. Abstrakte Eigenschaften
        2. Implementierungen
      5. Sortierte Collections
        1. Comparable und Comparator
        2. SortedSet und TreeSet
        3. SortedMap und TreeMap
      6. Die Klasse Collections
        1. Sortieren und Suchen
        2. Synchronisieren von Collections
        3. Erzeugen unveränderlicher Collections
      7. Typisierte Klassen und generische Collections
        1. Grundlagen
        2. Collections mit mehreren Typparametern
        3. Eine eigene typisierte Listenklasse
        4. Typkompatibilität
          1. Ober- und Unterklassen in generischen Typen
          2. Die Wildcard ?
          3. Gebundene Wildcards
        5. Sonstiges
    3. 17. Utility-Klassen I
      1. Die Klasse Random
        1. Initialisierung des Zufallszahlengenerators
        2. Erzeugen von Zufallszahlen
          1. Gleichverteilte Zufallszahlen
          2. Normalverteilte Zufallszahlen
      2. Die Klassen Date, Calendar und GregorianCalendar
        1. Konstruktoren
        2. Abfragen und Setzen von Datumsbestandteilen
        3. Vergleiche und Datums-/Zeitarithmetik
        4. Umwandlung zwischen Date und Calendar
      3. Die Klasse System
        1. System-Properties
        2. in, err und out
        3. exit
        4. gc
        5. currentTimeMillis
        6. arraycopy
      4. Die Klasse RunTime
        1. Grundlagen
        2. Interaktion mit dem externen Programm
      5. Die Klasse Arrays
    4. 18. Utility-Klassen II
      1. Reguläre Ausdrücke
        1. Die Klasse Pattern
        2. Die Klasse Matcher
        3. Vergleich einer Zeichenkette mit einem regulären Ausdruck
        4. Teilen einer Zeichenkette mit einem regulären Ausdruck
      2. Die Klasse Math
        1. Winkelfunktionen
        2. Minimum und Maximum
        3. Arithmetik
        4. Runden und Abschneiden
      3. Die Klassen BigInteger und BigDecimal
        1. Die Klasse BigInteger
        2. Die Klasse BigDecimal
      4. Internationalisierung und Lokalisierung
        1. Die Klasse Locale
        2. Formatieren von Zahlen
        3. Formatieren von Datum und Uhrzeit
        4. Laden von Ressourcen
          1. Die Methode getBundle
          2. Eigene Ressourcenklassen erstellen
          3. Die Verkettung von ResourceBundles
          4. Die Klasse PropertyResourceBundle
  7. V. Ein-/Ausgabe
    1. 19. Character-Streams
      1. Allgemeine Konzepte
      2. Ausgabe-Streams
        1. Die abstrakte Klasse Writer
        2. Auswahl des Ausgabegeräts
          1. OutputStreamWriter und FileWriter
          2. StringWriter und CharArrayWriter
        3. Schachteln von Ausgabe-Streams
          1. BufferedWriter
          2. PrintWriter
          3. FilterWriter
      3. Eingabe-Streams
        1. Die abstrakte Klasse Reader
        2. Auswahl des Eingabegeräts
          1. InputStreamReader und FileReader
          2. StringReader und CharArrayReader
        3. Schachteln von Eingabe-Streams
          1. BufferedReader
          2. LineNumberReader
          3. FilterReader und PushbackReader
    2. 20. Byte-Streams
      1. Ausgabe-Streams
        1. Die Basisklasse OutputStream
        2. Aus OutputStream direkt abgeleitete Klassen
          1. FileOutputStream
          2. ByteArrayOutputStream
          3. ObjectOutputStream
          4. PipedOutputStream
        3. Aus FilterOutputStream abgeleitete Klassen
          1. BufferedOutputStream
          2. PrintStream
          3. DataOutput und DataOutputStream
          4. Komprimieren von Dateien
          5. Berechnung von Prüfsummen
      2. Eingabe-Streams
        1. Die Basisklasse InputStream
        2. Aus InputStream direkt abgeleitete Klassen
          1. FileInputStream
          2. ByteArrayInputStream
          3. ObjectInputStream
          4. SequenceInputStream
          5. PipedInputStream
        3. Aus FilterInputStream abgeleitete Klassen
          1. FilterInputStream
          2. BufferedInputStream
          3. PushbackInputStream
          4. DataInputStream und DataInput
          5. CheckedInputStream
          6. Entpacken von Dateien
    3. 21. Random-Access-I/O
      1. Grundlegende Operationen
      2. Navigation in der Datei
        1. Positionierung des Dateizeigers
        2. Die Länge der Datei
      3. Lesezugriffe
      4. Schreibzugriffe
    4. 22. Datei- und Verzeichnis-Handling
      1. Konstruktion eines File-Objekts
      2. Zugriff auf Teile des Pfadnamens
      3. Informationen über die Datei
      4. Zugriff auf Verzeichniseinträge
        1. Lesen von Verzeichniseinträgen
        2. Ändern von Verzeichniseinträgen
      5. Temporäre Dateien und Lockdateien
        1. Temporäre Dateien
        2. Lockdateien
      6. Filehandling mit dem Path-Interface
        1. Informationen über den Pfad
        2. Services der Files-Klasse
        3. Die Klassen FileSystem und FileStorage
        4. Überwachen von Verzeichnissen
  8. VI. Grafikprogrammierung
    1. 23. Grafikausgabe
      1. Grundlagen der Grafikausgabe
        1. Anlegen eines Fensters
        2. Die Methode paint
        3. Das grafische Koordinatensystem
        4. Schließen eines Fensters
      2. Elementare Grafikroutinen
        1. Linie
        2. Rechteck
        3. Polygon
        4. Kreis
        5. Kreisbogen
      3. Weiterführende Funktionen
        1. Linien- oder Füllmodus
        2. Kopieren und Löschen von Flächen
        3. Die Clipping-Region
    2. 24. Textausgabe
      1. Ausgabefunktionen
      2. Unterschiedliche Schriftarten
        1. Font-Objekte
        2. Standardschriftarten
      3. Eigenschaften von Schriftarten
        1. Font-Informationen
        2. Font-Metriken
    3. 25. Farben
      1. Das Java-Farbmodell
      2. Erzeugen von Farben
      3. Verwenden von Farben
      4. Systemfarben
    4. 26. Fenster
      1. Die Hierarchie der Fensterklassen
      2. Aufrufen und Schließen eines Fensters
      3. Visuelle Eigenschaften
      4. Anzeigezustand
      5. Fensterelemente
        1. Der Fenstertitel
        2. Das Icon des Fensters
        3. Der Mauscursor
        4. Die Vorder- und Hintergrundfarbe
        5. Der Standardfont
    5. 27. Bitmaps und Animationen
      1. Bitmaps
        1. Laden und Anzeigen einer Bitmap
          1. Die Klasse MediaTracker
        2. Entwicklung einer eigenen Bitmap-Komponente
      2. Animation
        1. Prinzipielle Vorgehensweise
          1. Die repaint-Schleife
          2. Verwendung von Threads
        2. Abspielen einer Folge von Bitmaps
        3. Animation mit Grafikprimitiven
        4. Reduktion des Bildschirmflackerns
          1. Bildschirm nicht löschen
          2. Nur den wirklich benötigten Teil des Bildschirms löschen
          3. Doppelpufferung
  9. VII. Dialogprogramme
    1. 28. Event-Handling
      1. Grundlagen des Event-Handlings
        1. Ereignistypen
        2. Ereignisempfänger
        3. Ereignisquellen
        4. Adapterklassen
        5. Zusammenfassung
          1. Focus-Ereignisse
          2. Key-Ereignisse
          3. Mouse-Ereignisse
          4. MouseMotion-Ereignisse
          5. Component-Ereignisse
          6. Container-Ereignisse
          7. Window-Ereignisse
          8. Action-Ereignisse
          9. Adjustment-Ereignisse
          10. Item-Ereignisse
          11. Text-Ereignisse
      2. Entwurfsmuster für den Nachrichtenverkehr
        1. Variante 1: Implementierung eines EventListener-Interface
        2. Variante 2: Lokale und anonyme Klassen
          1. Lokale Klassen
          2. Anonyme Klassen
        3. Variante 3: Trennung von GUI- und Anwendungscode
        4. Variante 4: Überlagern der Event-Handler in den Komponenten
        5. Ausblick
    2. 29. Low-Level-Events
      1. Window-Events
      2. Component-Events
      3. Mouse-Events
      4. MouseMotion-Events
      5. Focus-Events
      6. Key-Events
    3. 30. Menüs
      1. Menüleiste
      2. Menüs
      3. Menüeinträge
        1. Einfache Menüeinträge
        2. CheckboxMenuItem
        3. Beschleunigertasten
        4. Untermenüs
      4. Action-Events
      5. Kontextmenüs
      6. Datenaustausch mit der Zwischenablage
        1. Überblick
        2. Kommunikation mit der Zwischenablage
    4. 31. GUI-Dialoge
      1. Erstellen eines Dialogs
        1. Anlegen eines Dialogfensters
        2. Zuordnen eines Layoutmanagers
        3. Einfügen von Dialogelementen
        4. Anzeigen des Dialogfensters
      2. Die Layoutmanager
        1. FlowLayout
        2. GridLayout
          1. Die Größe der Komponenten
        3. BorderLayout
        4. GridBagLayout
        5. Null-Layout
        6. Schachteln von Layoutmanagern
      3. Modale Dialoge
    5. 32. AWT-Dialogelemente
      1. Rahmenprogramm
      2. Label
      3. Button
      4. Checkbox
      5. CheckboxGroup
      6. TextField
      7. TextArea
      8. Choice
      9. List
      10. Scrollbar
      11. ScrollPane
    6. 33. Eigene Dialogelemente
      1. Die Klasse Canvas
      2. Entwicklung einer 7-Segment-Anzeige
        1. Anforderungen
        2. Bildschirmanzeige
        3. Ereignisbehandlung
      3. Einbinden der Komponente
    7. 34. Drucken
      1. Drucken mit dem Java 2D Printing API
        1. Überblick
        2. Zusammenspiel der Klassen
          1. Die Klasse PrinterJob
          2. Die Klassen Paper und PageFormat
          3. Die Konfigurationsdialoge
          4. Das Interface Printable
          5. Das Interface Pageable und die Klasse Book
        3. Ausdrucken einer Textdatei
          1. Die Hilfsklasse FilePrintHelper
          2. Die Klasse SimpleFilePrinter
      2. Drucken mit dem Java Print Service API
        1. Überblick
          1. Die Klasse DocFlavor
          2. Die Interfaces Attribute und AttributeSet
          3. Das Interface Doc
          4. Das Interface PrintService und die Klasse PrintServiceLookup
        2. Ausdrucken einer Grafikdatei
      3. Drucken mit dem Desktop API
  10. VIII. Swing
    1. 35. Grundlagen
      1. Eigenschaften und Architektur von Swing
        1. Leichtgewichtige Komponenten
        2. Pluggable Look-and-Feel
        3. Das Model-View-Controller-Prinzip
      2. Ein einführendes Beispiel
        1. Das Beispielprogramm
        2. Die import-Anweisungen
        3. JFrame
        4. JPanel
        5. JLabel
        6. JTextField
        7. Tooltips und Umrandungen
        8. JList und JScrollPane
        9. JButton
        10. Umschalten des Look-and-Feel
    2. 36. Container, Fenster und Menüs
      1. Hauptfenster
        1. JFrame
          1. RootPane, LayeredPane und ContentPane
          2. Dialogelemente platzieren
        2. JWindow
        3. JDialog
        4. JOptionPane
          1. Anzeigen einer Nachricht
          2. Eingabe einer Bestätigung
          3. Eingabe von Daten
        5. JInternalFrame
          1. Der Desktop
          2. Die Kindfenster
          3. Beispielprogramm
      2. Menüs
        1. Grundlagen
          1. JMenuBar
          2. JMenu
          3. JMenuItem
        2. Weitere Möglichkeiten
          1. Untermenüs
          2. Icons in Menüeinträgen
          3. Checkboxes und Radiobuttons in Menüeinträgen
        3. Kontextmenüs
      3. Weitere Swing-Container
        1. JComponent
          1. Umrandungen
          2. Tooltips
          3. Bildschirmdarstellung der Komponente
          4. Debug-Grafik
          5. Transparenter Hintergrund
          6. Doppelpufferung
          7. Größenvorgaben
          8. Invalidierung/Validierung
          9. Die Fokusreihenfolge
          10. Registrieren von Tastaturkommandos
        2. JPanel und JLayeredPane
          1. JPanel
          2. JLayeredPane
    3. 37. Komponenten I
      1. Label und Textfelder
        1. JLabel
        2. JTextField
        3. JFormattedTextField
        4. JPasswordField
        5. JTextArea
        6. JSpinner
      2. Buttons
        1. JButton
        2. JCheckBox
        3. JRadioButton
      3. Listen und Comboboxen
        1. JList
          1. Selektieren von Elementen
          2. Den Listeninhalt dynamisch verändern
          3. Beispiel
        2. JComboBox
      4. Quasianaloge Komponenten
        1. JScrollBar
        2. JSlider
        3. JProgressBar
      5. JLayer
      6. JFileChooser
    4. 38. Komponenten II
      1. Spezielle Panels
        1. JScrollPane
        2. JSplitPane
        3. JTabbedPane
      2. JTable
        1. Erzeugen von Tabellen
        2. Konfiguration der Tabelle
        3. Selektieren von Elementen
          1. Selektionsmodi
          2. Abfragen der Selektion
          3. Verändern der Selektion
        4. Zugriff auf den Inhalt der Tabelle
          1. Die Daten in der Tabelle
          2. Editieren von Tabellenelementen
        5. Das Tabellenmodell
          1. Beispiel
        6. Das Spaltenmodell
        7. Rendering der Zellen
        8. Reaktion auf Ereignisse
      3. JTree
        1. Erzeugen eines Baums
        2. Selektieren von Knoten
          1. Konfiguration der Selektionsmöglichkeit
          2. Abfragen der Selektion
          3. Verändern der Selektion
        3. Öffnen und Schließen der Knoten
        4. Verändern der Baumstruktur
  11. IX. Weiterführende Themen
    1. 39. Multithreading
      1. Die Klasse Thread
        1. Erzeugen eines neuen Threads
        2. Abbrechen eines Threads
        3. Weitere Methoden
          1. sleep
          2. isAlive
          3. join
      2. Das Interface Runnable
        1. Implementieren von Runnable
        2. Multithreading durch Wrapper-Klassen
      3. Synchronisation
        1. Synchronisationsprobleme
        2. Monitore
          1. Anwendung von synchronized auf einen Block von Anweisungen
          2. Anwendung von synchronized auf eine Methode
        3. wait und notify
        4. BlockingQueue
        5. PipedInputStream und PipedOutputStream
      4. Verwalten von Threads
        1. Priorität und Name
        2. Thread-Gruppen
      5. Die Klasse Executors
      6. Fork and Join
    2. 40. Serialisierung
      1. Grundlagen
        1. Schreiben von Objekten
        2. Lesen von Objekten
      2. Weitere Aspekte der Serialisierung
        1. Versionierung
        2. Nichtserialisierte Membervariablen
        3. Objektreferenzen
        4. Serialisieren von Collections
      3. Anwendungen
        1. Ein einfacher Objektspeicher
        2. Kopieren von Objekten
    3. 41. Reflection
      1. Die Klassen Object und Class
        1. Die Klasse Object
        2. Die Klasse Class
      2. Methoden- und Konstruktorenaufrufe
        1. Parameterlose Methoden
        2. Parametrisierte Methoden
        3. Parametrisierte Konstruktoren
      3. Zugriff auf Membervariablen
      4. Arrays
        1. Erzeugen von Arrays
        2. Zugriff auf Array-Elemente
      5. Annotationen
        1. Grundlagen
        2. Eine einfache Annotation
          1. Die Annotationsklasse
          2. Verwendung von Annotationen
        3. Annotationen mit einem Wert
        4. Beliebige Schlüssel-Wert-Paare in Annotationen
        5. Standardwerte für Attribute
        6. Einschränken von Annotationen
          1. Einschränken der Verwendbarkeit
          2. Einschränken der Sichtbarkeit
        7. Auslesen von Annotationen
    4. 42. XML-Verarbeitung
      1. Grundlagen
        1. Aufbau eines XML-Dokuments
          1. Prolog
          2. Elemente
          3. Attribute
          4. Kommentare
        2. Document Type Definition
          1. Aufbau einer DTD
          2. Elementdefinition
          3. Attributdefinition
          4. Einbinden einer DTD
        3. XML Schema Definition
          1. Elementdefinition
          2. Attributdefinition
          3. Kommentare
          4. Einbinden einer XSD
      2. Verarbeiten von XML-Dokumenten mit Java
        1. Document Object Model – DOM
        2. Simple API for XML – SAX
        3. Streaming API for XML – StAX
        4. Java Architecture for XML Binding – JAXB
    5. 43. Datenbankzugriffe mit JDBC
      1. Grundlagen von JDBC
        1. Die Architektur von JDBC
          1. Treibertypen
          2. Mehrstufige Client-Server-Architekturen
          3. SQL-2 Entry Level
          4. JDBC-Versionen
        2. Öffnen einer Verbindung
        3. Erzeugen von Anweisungsobjekten
        4. Datenbankabfragen
        5. Datenbankänderungen
        6. Die Klasse SQLException
        7. Die Klasse SQLWarning
      2. Die DirDB-Beispieldatenbank
        1. Anforderungen und Design
        2. Das Rahmenprogramm
        3. Die Verbindung zur Datenbank herstellen
          1. Systemvoraussetzungen
        4. Anlegen und Füllen der Tabellen
        5. Zählen der Verzeichnisse und Dateien
        6. Suchen von Dateien und Verzeichnissen
        7. Die zehn größten Dateien
        8. Speicherverschwendung durch Clustering
      3. Weiterführende Themen
        1. Metadaten
        2. Escape-Kommandos
        3. Transaktionen
        4. JDBC-Datentypen
        5. Umgang mit JDBC-Objekten
        6. Prepared Statements
        7. SQL-Kurzreferenz
          1. Ändern von Datenstrukturen
          2. Ändern von Daten
          3. Lesen von Daten
    6. 44. Netzwerkprogrammierung
      1. Grundlagen der Netzwerkprogrammierung
        1. Protokolle
        2. Adressierung von Daten
          1. IP-Adressen
          2. Domain-Namen
        3. Ports und Applikationen
        4. Request for Comments
        5. Firewalls und Proxys
      2. Client-Sockets
        1. Adressierung
        2. Aufbau einer einfachen Socket-Verbindung
        3. Lesen und Schreiben von Daten
        4. Zugriff auf einen Webserver
          1. Anpassungen für das HTTP-1.1-Protokoll
          2. Zugriff auf einen Webserver unter Verwendung der Klasse URL
      3. Server-Sockets
        1. Die Klasse ServerSocket
        2. Verbindungen zu mehreren Clients
        3. Entwicklung eines einfachen Webservers
      4. Daten mit Hilfe der Klasse URL lesen
    7. 45. Remote Method Invocation
      1. Grundlagen
        1. Arbeitsweise von RMI
        2. Einzelheiten der Kommunikation
      2. Aufbau eines einfachen Uhrzeit-Service
        1. Vorgehensweise
        2. Das Remote-Interface
        3. Implementierung des Remote-Interface
          1. Die Implementierungsklasse
        4. Registrieren der Objekte
          1. Starten der RMI-Registry
          2. Das Programm zur Registrierung des Remote-Objekts
          3. Ändern der Policy-Datei
          4. Registrierung des Remote-Objekts
        5. Zugriff auf den Uhrzeit-Service
        6. Ausblick
    8. 46. Sicherheit und Kryptografie
      1. Einfache Verschlüsselungen
        1. Substitution
        2. Exklusiv-ODER
        3. Vorsicht mit diesen einfachen Verfahren
      2. Message Digests
        1. Authentifizierung
        2. »Unwissende« Beweise
        3. Fingerprints
      3. Kryptografische Zufallszahlen
      4. Public-Key-Verschlüsselung
      5. Digitale Unterschriften
        1. Erzeugen und Verwalten von Schlüsseln mit dem JDK
        2. Erstellen einer digitalen Unterschrift
        3. Verifizieren einer digitalen Unterschrift
      6. Zertifikate
      7. Spezielle Sicherheitsmechanismen in Java
        1. Sprachsicherheit
        2. Das Sandbox-Konzept
        3. Policy-Dateien
  12. A. Über die Autoren
  13. Stichwortverzeichnis
  14. Kolophon
  15. Impressum