Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Mathematisches
6 Eigene Klassen schreiben
7 Angewandte Objektorientierung
8 Exceptions
9 Die Funktionsbibliothek
10 Threads und nebenläufige Programmierung
11 Raum und Zeit
12 Datenstrukturen und Algorithmen
13 Dateien und Datenströme
14 Die eXtensible Markup Language (XML)
15 Grafische Oberflächen mit Swing
16 Grafikprogrammierung
17 Netzwerkprogrammierung
18 Verteilte Programmierung mit RMI und Web-Services
19 JavaServer Pages und Servlets
20 Applets
21 Midlets und die Java ME
22 Datenbankmanagement mit JDBC
23 Reflection und Annotationen
24 Logging und Monitoring
25 Sicherheitskonzepte
26 Java Native Interface (JNI)
27 Dienstprogramme für die Java-Umgebung
A Die Begleit-DVD
Stichwort

Download:
- ZIP, ca. 12,5 MB
Buch bestellen
Ihre Meinung?

Spacer
Java ist auch eine Insel von Christian Ullenboom
Programmieren mit der Java Standard Edition Version 6
Buch: Java ist auch eine Insel

Java ist auch eine Insel
7., aktualisierte Auflage
geb., mit DVD (November 2007)
1492 S., 49,90 Euro
Galileo Computing
ISBN 978-3-8362-1146-8

Nützliche Links:
Diese 7. Auflage des Java-Kultbuches wurde gründlich überarbeitet, aktualisiert und erweitert. Alle wichtigen Neuerungen zu Java 6 wurden aufgenommen und auch erste Ausblicke auf die Version 7.

Besonders Einsteiger mit Programmierkenntnissen und Industrieprogrammierer profitieren von diesem umfassenden Werk. Tipps und Tricks aus den Java-FAQs werden regelmäßig mit in die Insel aufgenommen, um wirklich das abzudecken, was Sie im Alltag brauchen. Die Einführung in die Sprache Java ist anschaulich und immer praxisorientiert. Schnell geht es weiter mit fortgeschrittenen Themen wie Threads, Swing, Netzwerkprogrammierung, Java Beans, RMI, XML und Java, Servlets und Java Server Pages, JDBC und vielem mehr.

Nutzen Sie die HTML-Version der Insel (inkl. Syntax-Highlighting) zum Reinschnuppern oder als immer verfügbare Ergänzung zu Ihrem Buch.

Auf unserer Katalogseite steht Ihnen ab sofort zusätzlich eine Volltextsuche im Buch zur Verfügung.

Die gedruckte Version des Buches erhalten Sie in unserem Online-Shop - versandkostenfrei innerhalb Deutschlands und Österreichs.
Zum Online-Shop

Inhaltsverzeichnis

Vorwort

Vorwort zur 6. Auflage

Vorwort zur 7. Auflage

Galileo Computing - Zum Seitenanfang

1 Java ist auch eine Sprache

1.1 Der erste Kontakt

1.2 Historischer Hintergrund

1.3 Eigenschaften von Java

1.3.1 Bytecode und die virtuelle Maschine
1.3.2 Objektorientierung in Java
1.3.3 Java-Security-Modell
1.3.4 Zeiger und Referenzen
1.3.5 Bring den Müll raus, Garbage-Collector!
1.3.6 Ausnahmebehandlung
1.3.7 Kein Präprozessor für Textersetzungen
1.3.8 Keine überladenen Operatoren
1.3.9 Java als Sprache, Laufzeitumgebung und Bibliothek
1.3.10 Wofür sich Java nicht eignet
1.3.11 Java im Vergleich zu anderen Sprachen
1.3.12 Java ist Open Source

1.4 Die Rolle von Java im Web

1.4.1 Vollwertige Applikationen statt Applets

1.5 Die Java Platform Standard Edition (Java SE)

1.5.1 JDK und JRE
1.5.2 Java-Versionen
1.5.3 Java für die Kleinen
1.5.4 Java für die Großen
1.5.5 Installationsanleitung für Java SE

1.6 Das erste Programm compilieren und testen

1.6.1 Ein Quadratzahlen-Programm
1.6.2 Der Compilerlauf
1.6.3 Die Laufzeitumgebung
1.6.4 Häufige Compiler- und Interpreterprobleme

1.7 Entwicklungsumgebungen im Allgemeinen

1.7.1 Die Entwicklungsumgebung Eclipse
1.7.2 NetBeans von Sun
1.7.3 Ein Wort zu Microsoft, Java und zu J++

1.8 Eclipse im Speziellen

1.8.1 Eclipse starten
1.8.2 Das erste Projekt anlegen
1.8.3 Eine Klasse hinzufügen
1.8.4 Übersetzen und Ausführen
1.8.5 JDK statt JRE
1.8.6 Start eines Programms ohne Speicheraufforderung
1.8.7 Projekt einfügen oder Workspace für die Aufgaben wechseln
1.8.8 Plugins für Eclipse
1.8.9 Eclipse Web Tools Platform (WTP)

1.9 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

2 Sprachbeschreibung

2.1 Elemente der Programmiersprache Java

2.1.1 Textkodierung durch Unicode-Zeichen
2.1.2 Literale
2.1.3 Bezeichner
2.1.4 Reservierte Schlüsselwörter
2.1.5 Token
2.1.6 Kommentare

2.2 Anweisungen formen Programme

2.2.1 Anweisungen
2.2.2 Eine Klasse bildet den Rahmen
2.2.3 Die Reise beginnt am main()
2.2.4 Programme übersetzen und starten
2.2.5 Funktionsaufrufe als Ausdrücke und Anweisungen
2.2.6 print(), println() und printf() für Bildschirmausgaben
2.2.7 Modifizierer
2.2.8 Anweisungen und Blöcke

2.3 Datentypen

2.3.1 Primitive Datentypen im Überblick
2.3.2 Wahrheitswerte
2.3.3 Variablendeklarationen
2.3.4 Ganzzahlige Datentypen
2.3.5 Die Fließkommazahlen float und double
2.3.6 Alphanumerische Zeichen

2.4 Ausdrücke, Operanden und Operatoren

2.4.1 Zuweisungsoperator
2.4.2 Arithmetische Operatoren
2.4.3 Unäres Minus und Plus
2.4.4 Zuweisung mit Operation
2.4.5 Präfix- oder Postfix-Inkrement und -Dekrement
2.4.6 Die relationalen Operatoren und die Gleichheitsoperatoren
2.4.7 Logische Operatoren Und, Oder, Xor, Nicht
2.4.8 Rang der Operatoren in der Auswertungsreihenfolge
2.4.9 Die Typanpassung (das Casting)
2.4.10 Überladenes Plus für Strings
2.4.11 Was C(++)-Programmierer vermissen könnten

2.5 Bedingte Anweisungen oder Fallunterscheidungen

2.5.1 Die if-Anweisung
2.5.2 Die Alternative mit einer if/else-Anweisung wählen
2.5.3 Die switch-Anweisung bietet die Alternative

2.6 Schleifen

2.6.1 Die while-Schleife
2.6.2 Schleifenbedingungen und Vergleiche mit ==
2.6.3 Die do-while-Schleife
2.6.4 Die for-Schleife
2.6.5 Ausbruch planen mit break und Wiedereinstieg mit continue
2.6.6 break und continue mit Sprungmarken

2.7 Methoden einer Klasse

2.7.1 Bestandteil einer Funktion
2.7.2 Beschreibungen in der Java-API
2.7.3 Aufruf einer Methode
2.7.4 Methoden ohne Parameter
2.7.5 Statische Funktionen (Klassenmethoden)
2.7.6 Parameter, Argument und Wertübergabe
2.7.7 Methoden vorzeitig mit return beenden
2.7.8 Nicht erreichbarer Quellcode bei Funktionen
2.7.9 Rückgabewerte
2.7.10 Methoden überladen
2.7.11 Vorgegebener Wert für nicht aufgeführte Argumente
2.7.12 Finale lokale Variablen
2.7.13 Rekursive Funktionen
2.7.14 Die Türme von Hanoi

2.8 Weitere Operatoren

2.8.1 Bits und Bytes
2.8.2 Operationen auf Bit-Ebene
2.8.3 Die Verschiebeoperatoren
2.8.4 Ein Bit setzen, löschen, umdrehen und testen
2.8.5 Bit-Funktionen der Integer- und Long-Klasse
2.8.6 Der Bedingungsoperator

2.9 Einfache Benutzereingaben

2.10 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

3 Klassen und Objekte

3.1 Objektorientierte Programmierung

3.1.1 Warum überhaupt OOP?
3.1.2 Wiederverwertbarkeit

3.2 Eigenschaften einer Klasse

3.2.1 Die Klasse Point

3.3 Die UML (Unified Modeling Language)

3.3.1 Hintergrund und Geschichte zur UML
3.3.2 Wichtige Diagrammtypen der UML

3.4 Neue Objekte erzeugen

3.4.1 Anlegen eines Exemplars einer Klasse mit dem new-Operator
3.4.2 Deklarieren von Referenzvariablen
3.4.3 Zugriff auf Variablen und Methoden mit dem ».«
3.4.4 Konstruktoren nutzen
3.4.5 Die API-Dokumentation

3.5 Import und Pakete

3.6 Mit Referenzen arbeiten

3.6.1 Die null-Referenz
3.6.2 Zuweisungen bei Referenzen
3.6.3 Funktionen mit nicht-primitiven Parametern

3.7 Identität und Gleichheit

3.7.1 Identität von Objekten
3.7.2 Gleichheit und die Methode equals()

3.8 Wrapper-Klassen und Autoboxing

3.8.1 Die Basisklasse Number für numerische Wrapper-Objekte
3.8.2 Die Klasse Integer
3.8.3 Unterschiedliche Ausgabeformate
3.8.4 Autoboxing: Boxing und Unboxing
3.8.5 Die Boolean-Klasse
3.8.6 Die Klassen Double und Float für Fließkommazahlen

3.9 Arrays

3.9.1 Deklaration von Arrays
3.9.2 Arrays mit Inhalt
3.9.3 Die Länge eines Arrays über das Attribut length
3.9.4 Zugriff auf die Elemente über den Index
3.9.5 Array-Objekte erzeugen
3.9.6 Fehler bei Arrays
3.9.7 Vorinitialisierte Arrays
3.9.8 Die erweiterte for-Schleife
3.9.9 Arrays mit nicht-primitiven Elementen
3.9.10 Mehrdimensionale Arrays
3.9.11 Die Wahrheit über die Array-Initialisierung
3.9.12 Mehrere Rückgabewerte
3.9.13 Methode mit variabler Argumentanzahl (Vararg)
3.9.14 Klonen kann sich lohnen – Arrays vermehren
3.9.15 Feldinhalte kopieren
3.9.16 Die Klasse Arrays zum Vergleichen, Füllen und Suchen

3.10 Der Einstiegspunkt für das Laufzeitsystem main()

3.10.1 Kommandozeilen-Argumente verarbeiten
3.10.2 Der Rückgabewert von main() und System.exit()

3.11 Eigene Pakete schnüren

3.11.1 Die package-Anweisung
3.11.2 Importieren von Klassen mit import
3.11.3 Hierarchische Strukturen und das Default-Package
3.11.4 Paketnamen
3.11.5 Klassen mit gleichen Namen in unterschiedlichen Paketen
3.11.6 Statisches Import
3.11.7 Eine Verzeichnisstruktur für eigene Projekte

3.12 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

4 Der Umgang mit Zeichenketten

4.1 Einzelne Zeichen mit der Character-Klasse behandeln

4.2 Strings und deren Anwendung

4.2.1 String-Literale als String-Objekte für konstante Zeichenketten
4.2.2 String-Länge und Test auf Leerstring
4.2.3 Nach enthaltenen Zeichen und Zeichenfolgen suchen
4.2.4 Gut, dass wir verglichen haben
4.2.5 String-Teile extrahieren
4.2.6 Strings anhängen, Groß-/Kleinschreibung und Leerraum
4.2.7 Suchen und ersetzen
4.2.8 String-Objekte mit Konstruktoren neu anlegen

4.3 Konvertieren zwischen Primitiven und Strings

4.3.1 Unterschiedliche Typen in Zeichenketten konvertieren
4.3.2 String in primitives Element konvertieren

4.4 Veränderbare Zeichenketten mit StringBuffer/StringBuilder

4.4.1 Anlegen von StringBuffer/StringBuilder-Objekten
4.4.2 Die Länge eines StringBuffer/-Builder-Objekts
4.4.3 Daten anhängen
4.4.4 Zeichen(folgen) setzen, erfragen, löschen und umdrehen
4.4.5 Vergleichen von String/StringBuffer/StringBuilder
4.4.6 hashCode() bei StringBuffer/StringBuilder

4.5 Sprachabhängiges Vergleichen und Normalisierung

4.5.1 Die Klasse Collator
4.5.2 Effiziente interne Speicherung für die Sortierung
4.5.3 Normalisierung

4.6 Reguläre Ausdrücke

4.6.1 Die Klassen Pattern und Matcher
4.6.2 Mit MatchResult alle Ergebnisse einsammeln

4.7 Zerlegen von Zeichenketten

4.7.1 Splitten von Zeichenketten mit split()
4.7.2 split() in Pattern
4.7.3 Die Klasse Scanner
4.7.4 StringTokenizer
4.7.5 BreakIterator als Zeichen-, Wort-, Zeilen- und Satztrenner

4.8 Zeichenkodierungen und Base64

4.8.1 Über die Klasse String Kodierungen vornehmen
4.8.2 Konvertieren mit OutputStreamWriter-Klassen
4.8.3 Das Paket java.nio.charset
4.8.4 Base64-Kodierung

4.9 Formatieren von Ausgaben

4.9.1 Formatieren mit format() aus String
4.9.2 Die Format-Klassen im Überblick
4.9.3 Zahlen, Prozente und Währungen mit NumberFormat und DecimalFormat formatieren
4.9.4 Ausgaben mit MessageFormat formatieren

4.10 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

5 Mathematisches

5.1 Repräsentation ganzer Zahlen – das Zweierkomplement

5.2 Fließkommaarithmetik in Java

5.2.1 Mantisse und Exponent
5.2.2 Spezialwerte Unendlich, Null, NaN

5.3 Wertebereich eines Typs und Überlaufkontrolle

5.3.1 Behandlung des Überlaufs

5.4 Die Eigenschaften der Klasse Math

5.4.1 Attribute
5.4.2 Absolutwerte und Maximum/Minimum
5.4.3 Winkelfunktionen
5.4.4 Runden von Werten
5.4.5 Wurzel und Exponentialfunktionen
5.4.6 Der Logarithmus
5.4.7 Rest der ganzzahligen Division
5.4.8 Zufallszahlen

5.5 Mathe bitte strikt

5.5.1 Strikt Fließkomma mit strictfp
5.5.2 Die Klassen Math und StrictMath

5.6 Die Random-Klasse

5.6.1 Objekte aufbauen und der Seed
5.6.2 Zufallszahlen erzeugen
5.6.3 Pseudo-Zufallszahlen in der Normalverteilung

5.7 Große Zahlen

5.7.1 Die Klasse BigInteger
5.7.2 Funktionen von BigInteger
5.7.3 Ganz lange Fakultäten
5.7.4 Große Fließkommazahlen mit BigDecimal
5.7.5 Mit MathContext komfortabel die Rechengenauigkeit setzen

5.8 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

6 Eigene Klassen schreiben

6.1 Eigene Klassen mit Eigenschaften deklarieren

6.1.1 Attribute deklarieren
6.1.2 Methoden deklarieren
6.1.3 Die this-Referenz

6.2 Privatsphäre und Sichtbarkeit

6.2.1 Für die Öffentlichkeit: public
6.2.2 Paketsichtbar
6.2.3 Kein Public Viewing – Passwörter sind privat
6.2.4 Wieso nicht freie Methoden und Variablen für alle?
6.2.5 Privat ist nicht ganz privat: Es kommt darauf an, wer’s sieht
6.2.6 Zugriffsmethoden für Attribute deklarieren
6.2.7 Setter und Getter nach der JavaBeans-Spezifikation

6.3 Statische Methoden und statische Attribute

6.3.1 Warum statische Eigenschaften sinnvoll sind
6.3.2 Statische Eigenschaften mit static
6.3.3 Statische Eigenschaften über Referenzen nutzen?
6.3.4 Warum die Groß- und Kleinschreibung wichtig ist
6.3.5 Statische Eigenschaften und Objekteigenschaften
6.3.6 Statische Variablen zum Datenaustausch
6.3.7 Statische Blöcke als Klasseninitialisierer

6.4 Konstanten und Aufzählungen

6.4.1 Konstanten über öffentliche statische finale Variablen
6.4.2 Eincompilierte Belegungen der Klassenvariablen
6.4.3 Typ(un)sicherere Aufzählungen
6.4.4 Aufzählungen mit enum

6.5 Objekte anlegen und zerstören

6.5.1 Konstruktoren schreiben
6.5.2 Der Standard-Konstruktor
6.5.3 Parametrisierte und überladene Konstruktoren
6.5.4 Konstruktor nimmt ein Objekt vom eigenen Typ an (Copy-Konstruktor)
6.5.5 Einen anderen Konstruktor der gleichen Klasse aufrufen
6.5.6 Initialisierung der Objekt- und Klassenvariablen
6.5.7 Finale Werte im Konstruktor und in statischen Blöcken setzen
6.5.8 Exemplarinitialisierer (Instanzinitialisierer)
6.5.9 Ihr fehlt uns nicht – der Garbage-Collector
6.5.10 Implizit erzeugte String-Objekte
6.5.11 Private Konstruktoren, Utility-Klassen, Singleton, Fabriken

6.6 Assoziationen zwischen Objekten

6.6.1 Unidirektionale 1:1-Beziehung
6.6.2 Bidirektionale 1:1-Beziehungen
6.6.3 Unidirektionale 1:n-Beziehung

6.7 Vererbung

6.7.1 Vererbung in Java
6.7.2 Spielobjekte modelliert
6.7.3 Einfach- und Mehrfachvererbung
6.7.4 Sichtbarkeit protected
6.7.5 Konstruktoren in der Vererbung und super
6.7.6 Automatische und explizite Typanpassung
6.7.7 Das Substitutionsprinzip
6.7.8 Typen mit dem binären Operator instanceof testen
6.7.9 Methoden überschreiben
6.7.10 Mit super an die Eltern
6.7.11 Kovariante Rückgabetypen
6.7.12 Array-Typen und Kovarianz
6.7.13 Zusammenfassung zur Sichtbarkeit

6.8 Dynamisches Binden

6.8.1 Unpolymorph bei privaten, statischen und finalen Methoden
6.8.2 Polymorphie bei Konstruktoraufrufen
6.8.3 Finale Klassen
6.8.4 Nicht überschreibbare (finale) Methoden

6.9 Abstrakte Klassen und abstrakte Methoden

6.9.1 Abstrakte Klassen
6.9.2 Abstrakte Methoden

6.10 Schnittstellen

6.10.1 Deklarieren von Schnittstellen
6.10.2 Implementieren von Schnittstellen
6.10.3 Markierungsschnittstellen
6.10.4 Ein Polymorphie-Beispiel mit Schnittstellen
6.10.5 Die Mehrfachvererbung bei Schnittstellen
6.10.6 Keine Kollisionsgefahr bei Mehrfachvererbung
6.10.7 Erweitern von Interfaces – Subinterfaces
6.10.8 Vererbte Konstanten bei Schnittstellen
6.10.9 Schnittstellenmethoden, die nicht implementiert werden müssen
6.10.10 Abstrakte Klassen und Schnittstellen im Vergleich

6.11 Geschachtelte (innere) Klassen, Schnittstellen, Aufzählungen

6.11.1 Statische innere Klassen und Schnittstellen
6.11.2 Mitglieds- oder Elementklassen
6.11.3 Lokale Klassen
6.11.4 Anonyme innere Klassen
6.11.5 this und Vererbung

6.12 Generische Datentypen

6.12.1 Einfache Klassenschablonen
6.12.2 Einfache Methodenschablonen
6.12.3 Umsetzen der Generics, Typlöschung und Raw-Types
6.12.4 Einschränken der Typen
6.12.5 Generics und Vererbung, Invarianz
6.12.6 Wildcards

6.13 Die Spezial-Oberklasse Enum

6.13.1 Methoden auf Enum-Objekten
6.13.2 enum mit eigenen Konstruktoren und Methoden

6.14 Dokumentationskommentare mit JavaDoc

6.14.1 Einen Dokumentationskommentar setzen
6.14.2 Mit javadoc eine Dokumentation erstellen
6.14.3 HTML-Tags in Dokumentationskommentaren
6.14.4 Generierte Dateien
6.14.5 Dokumentationskommentare im Überblick
6.14.6 JavaDoc und Doclets
6.14.7 Veraltete (deprecated) Klassen, Konstruktoren und Methoden
Galileo Computing - Zum Seitenanfang

7 Angewandte Objektorientierung

7.1 Schnittstellen in der Anwendung

7.1.1 CharSequence als Beispiel einer Schnittstelle
7.1.2 Die Schnittstelle Iterable
7.1.3 Funktionszeiger
7.1.4 Implementierung einer verketteten Liste

7.2 Design-Pattern (Entwurfsmuster)

7.2.1 Design-Pattern
7.2.2 Das Beobachter-Pattern (Observer/Observable)
7.2.3 Ereignisse über Listener
7.2.4 Multicast und Unicast

7.3 JavaBean

7.3.1 Properties (Eigenschaften)
7.3.2 Einfache Eigenschaften
7.3.3 Indizierte Eigenschaften
7.3.4 Gebundene Eigenschaften
7.3.5 Veto-Eigenschaften – dagegen!
Galileo Computing - Zum Seitenanfang

8 Exceptions

8.1 Problembereiche einzäunen

8.1.1 Exceptions in Java mit try und catch
8.1.2 Eine Datei mit RandomAccessFile auslesen
8.1.3 Ablauf einer Ausnahmesituation
8.1.4 Wiederholung abgebrochener Bereiche
8.1.5 throws im Methodenkopf angeben
8.1.6 Abschlussbehandlung mit finally
8.1.7 Nicht erreichbare catch-Klauseln

8.2 Die Klassenhierarchie der Fehler

8.2.1 Die Exception-Hierarchie
8.2.2 Oberausnahmen auffangen
8.2.3 Alles geht als Exception durch
8.2.4 RuntimeException muss nicht aufgefangen werden
8.2.5 Harte Fehler: Error

8.3 Auslösen eigener Exceptions

8.3.1 Mit throw Ausnahmen auslösen
8.3.2 Neue Exception-Klassen deklarieren
8.3.3 Abfangen und Weiterleiten
8.3.4 Geschachtelte Ausnahmen
8.3.5 Rückgabewerte bei ausgelösten Ausnahmen

8.4 Der Stack-Trace

8.4.1 Stack-Trace erfragen

8.5 Assertions

8.5.1 Assertions in eigenen Programmen nutzen
8.5.2 Assertions aktivieren
Galileo Computing - Zum Seitenanfang

9 Die Funktionsbibliothek

9.1 Die Java-Klassenphilosophie

9.1.1 Übersicht über die Pakete der Standardbibliothek

9.2 Object ist die Mutter aller Oberklassen

9.2.1 Klassenobjekte
9.2.2 Objektidentifikation mit toString()
9.2.3 Objektgleichheit mit equals() und Identität
9.2.4 Klonen eines Objekts mit clone()
9.2.5 Hashcodes über hashCode() liefern
9.2.6 Aufräumen mit finalize()
9.2.7 Synchronisation

9.3 Klassenlader (Class Loader)

9.3.1 Woher die kleinen Klassen kommen
9.3.2 Setzen des Klassenpfades
9.3.3 Die wichtigsten drei Typen von Klassenladern
9.3.4 Der java.lang.ClassLoader
9.3.5 Hot Deployment mit dem URL-ClassLoader
9.3.6 Das jre/lib/endorsed-Verzeichnis
9.3.7 getContextClassLoader() vom Thread

9.4 Die Utility-Klasse System und Properties

9.4.1 Systemeigenschaften der Java-Umgebung
9.4.2 line.separator
9.4.3 Browser-Version abfragen
9.4.4 Property von der Konsole aus setzen
9.4.5 Umgebungsvariablen des Betriebssystems
9.4.6 Einfache Zeitmessung und Profiling

9.5 Ausführen externer Programme und Skripte

9.5.1 ProcessBuilder und Prozesskontrolle mit Process
9.5.2 Einen Browser/E-Mail-Client/Editor aufrufen
9.5.3 Ausführen von Skripten

9.6 Benutzereinstellungen

9.6.1 Benutzereinstellungen in Windows-Registry oder XML-Dokumenten
9.6.2 Einträge einfügen, auslesen und löschen
9.6.3 Auslesen der Daten und Schreiben in anderem Format
9.6.4 Auf Ereignisse horchen
9.6.5 Zugriff auf die gesamte Windows-Registry

9.7 Musik abspielen

9.7.1 Die Arbeit mit AudioClip
9.7.2 Java Sound API

9.8 Annotationen

9.8.1 Annotationstypen
9.8.2 Common Annotations
9.8.3 Annotationen für Web-Services
9.8.4 Annotationen für XML-Mapping

9.9 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

10 Threads und nebenläufige Programmierung

10.1 Nebenläufigkeit

10.1.1 Threads und Prozesse
10.1.2 Wie parallele Programme die Geschwindigkeit steigern können
10.1.3 Was Java für Nebenläufigkeit alles bietet

10.2 Threads erzeugen

10.2.1 Threads über die Schnittstelle Runnable implementieren
10.2.2 Thread mit Runnable starten
10.2.3 Der Name eines Threads
10.2.4 Die Klasse Thread erweitern
10.2.5 Wer bin ich?

10.3 Die Zustände eines Threads

10.3.1 Threads schlafen
10.3.2 Mit yield() auf Rechenzeit verzichten
10.3.3 Das Ende eines Threads
10.3.4 UncaughtExceptionHandler für unbehandelte Ausnahmen
10.3.5 Einen Thread höflich mit Interrupt beenden
10.3.6 Der stop() von außen und die Rettung mit ThreadDeath
10.3.7 Ein Rendezvous mit join()
10.3.8 Barrier und Austausch mit Exchanger
10.3.9 Arbeit niederlegen und wieder aufnehmen
10.3.10 Priorität
10.3.11 Der Thread ist ein Dämon

10.4 Der Ausführer (Executor) kommt

10.4.1 Die Schnittstelle Executor
10.4.2 Die Thread-Pools
10.4.3 Threads mit Rückgabe über Callable
10.4.4 Mehrere Callable abarbeiten
10.4.5 Mit ScheduledExecutorService wiederholende Ausgaben und Zeitsteuerungen

10.5 Synchronisation über kritische Abschnitte

10.5.1 Gemeinsam genutzte Daten
10.5.2 Probleme beim gemeinsamen Zugriff und kritische Abschnitte
10.5.3 Punkte parallel initialisieren
10.5.4 i++ sieht atomar aus, ist es aber nicht
10.5.5 Kritische Abschnitte schützen
10.5.6 Schützen mit ReentrantLock
10.5.7 Synchronisieren mit synchronized
10.5.8 Synchronized-Methoden der Klasse StringBuffer
10.5.9 Mit synchronized synchronisierte Blöcke
10.5.10 Dann machen wir doch gleich alles synchronisiert!
10.5.11 Lock-Freigabe im Fall von Exceptions
10.5.12 Mit synchronized nachträglich synchronisieren
10.5.13 Monitore sind reentrant – gut für die Geschwindigkeit
10.5.14 Synchronisierte Methodenaufrufe zusammenfassen
10.5.15 Deadlocks

10.6 Synchronisation über Warten und Benachrichtigen

10.6.1 Die Schnittstelle Condition
10.6.2 Beispiel: Erzeuger-Verbraucher-Programm
10.6.3 Warten mit wait() und Aufwecken mit notify()
10.6.4 Falls der Lock fehlt: IllegalMonitorStateException
10.6.5 Semaphor

10.7 Atomare Operationen und frische Werte mit volatile

10.7.1 Der Modifizierer volatile bei Objekt-/Klassenvariablen
10.7.2 Das Paket java.util.concurrent.atomic

10.8 Mit dem Thread verbundene Variablen

10.8.1 ThreadLocal
10.8.2 InheritableThreadLocal

10.9 Gruppen von Threads in einer Thread-Gruppe

10.9.1 Aktive Threads in der Umgebung
10.9.2 Etwas über die aktuelle Thread-Gruppe herausfinden
10.9.3 Threads in einer Thread-Gruppe anlegen
10.9.4 Methoden von Thread und ThreadGroup im Vergleich

10.10 Zeitgesteuerte Abläufe

10.10.1 Die Klassen Timer und TimerTask
10.10.2 Job-Scheduler Quartz

10.11 Einen Abbruch der virtuellen Maschine erkennen

10.12 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

11 Raum und Zeit

11.1 Weltzeit

11.2 Wichtige Datum-Klassen im Überblick

11.3 Sprachen der Länder

11.3.1 Sprachen und Regionen über Locale-Objekte

11.4 Internationalisierung und Lokalisierung

11.4.1 ResourceBundle-Objekte und Ressource-Dateien
11.4.2 Ressource-Dateien zur Lokalisierung
11.4.3 Die Klasse ResourceBundle
11.4.4 Ladestrategie für ResourceBundle-Objekte

11.5 Zeitzonen

11.5.1 Zeitzonen durch die Klasse TimeZone repräsentieren

11.6 Die Klasse Date

11.6.1 Objekte erzeugen und Methoden nutzen

11.7 Calendar und GregorianCalendar

11.7.1 Die abstrakte Klasse Calendar
11.7.2 Der gregorianische Kalender
11.7.3 Ostertage
11.7.4 Abfragen und Setzen von Datumselementen

11.8 Formatieren und Parsen von Datumsangaben

11.8.1 Ausgaben mit printf()
11.8.2 Mit DateFormat und SimpleDateFormat formatieren
11.8.3 Parsen von Datumswerten

11.9 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

12 Datenstrukturen und Algorithmen

12.1 Datenstrukturen und die Collection-API

12.1.1 Designprinzip mit Schnittstellen, abstrakten Klassen, konkreten Klassen
12.1.2 Die Basis-Schnittstellen Collection und Map
12.1.3 Das erste Programm mit Container-Klassen
12.1.4 Die Schnittstelle Collection
12.1.5 Schnittstellen, die Collection erweitern, und Map
12.1.6 Konkrete Container-Klassen
12.1.7 Welche Klasse nehmen?
12.1.8 Generische Datentypen in der Collection-API
12.1.9 Die Schnittstelle Iterable und das erweiterte for

12.2 Mit einem Iterator durch die Daten wandern

12.2.1 Die Schnittstellen Enumeration und Iterator
12.2.2 Iteratoren von Sammlungen und das erweiterte for
12.2.3 Fail-Fast Iterator und die ConcurrentModificationException

12.3 Listen

12.3.1 ArrayList oder LinkedList? Speicherung im Feld oder in einer verketteten Liste
12.3.2 Die Schnittstelle List
12.3.3 ArrayList
12.3.4 LinkedList
12.3.5 Der Feld-Adapter Arrays.asList()
12.3.6 toArray() von Collection verstehen – die Gefahr einer Falle erkennen
12.3.7 Primitive Elemente in den Collection-Datenstrukturen

12.4 Vergleichen von Objekten

12.4.1 Die Schnittstellen Comparator und Comparable
12.4.2 Algorithmen mit Such- und Sortiermöglichkeiten
12.4.3 Den größten und kleinsten Wert einer Collection finden
12.4.4 Sortieren

12.5 Mengen (Sets)

12.5.1 HashSet
12.5.2 TreeSet – die Menge durch Bäume
12.5.3 LinkedHashSet

12.6 Stack (Kellerspeicher, Stapel)

12.6.1 Die Methoden von Stack
12.6.2 Ein Stack ist ein Vector – aha!

12.7 Queues (Schlangen) und Deques

12.7.1 Die Schnittstelle Queue
12.7.2 Blockierende Queues und Prioritätswarteschlangen
12.7.3 Deque-Klassen

12.8 Assoziative Speicher

12.8.1 Die Klassen HashMap und TreeMap
12.8.2 Einfügen und Abfragen der Datenstruktur
12.8.3 Die Bedeutung von equals(), hashCode() und IdentityHashMap
12.8.4 Elemente im Assoziativspeicher müssen unveränderbar bleiben
12.8.5 Aufzählungen und Sichten auf den Assoziativspeicher
12.8.6 Der Gleichheitstest, Hash-Wert und Klon einer Hash-Tabelle
12.8.7 Die Arbeitsweise einer Hash-Tabelle
12.8.8 Multi-Maps

12.9 Die Properties-Klasse

12.9.1 Properties setzen und lesen
12.9.2 Properties verketten
12.9.3 Eigenschaften ausgeben
12.9.4 Hierarchische Eigenschaften
12.9.5 Properties speichern
12.9.6 Klassenbeziehungen: Properties und Hashtable

12.10 Algorithmen in Collections

12.10.1 Listenoperationen: Ersetzen, Kopieren, Füllen, Umdrehen, Rotieren, Durchmischen
12.10.2 Mit der Halbierungssuche nach Elementen fahnden
12.10.3 Nicht-änderbare Datenstrukturen
12.10.4 Häufigkeit eines Elements
12.10.5 nCopies()
12.10.6 Singletons

12.11 Synchronisation der Datenstrukturen

12.11.1 Lock-Free-Algorithmen aus java.util.concurrent
12.11.2 Wrapper zur Synchronisation
12.11.3 CopyOnWriteArrayList und CopyOnWriteArraySet

12.12 Die Klasse BitSet für Bitmengen

12.12.1 Ein BitSet anlegen, füllen und erfragen
12.12.2 Mengenorientierte Operationen
12.12.3 Funktionsübersicht
12.12.4 Primzahlen in einem BitSet verwalten
Galileo Computing - Zum Seitenanfang

13 Dateien und Datenströme

13.1 Datei und Verzeichnis

13.1.1 Dateien und Verzeichnisse mit der Klasse File
13.1.2 Verzeichnis oder Datei? Existiert es?
13.1.3 Verzeichnis- und Dateieigenschaften/-attribute
13.1.4 Wurzelverzeichnis, Laufwerksnamen, Plattenspeicher
13.1.5 Umbenennen und Verzeichnisse anlegen
13.1.6 Verzeichnisse listen und Dateien filtern
13.1.7 Dateien berühren, neue Dateien anlegen, temporäre Dateien
13.1.8 Dateien und Verzeichnisse löschen
13.1.9 Verzeichnisse nach Dateien iterativ durchsuchen
13.1.10 URL- und URI-Objekte aus einem File-Objekt ableiten
13.1.11 Mit Locking Dateien sperren
13.1.12 Sicherheitsprüfung
13.1.13 Mime-Typen mit dem JavaBeans Activation Framework (JAF)
13.1.14 Zugriff auf SMB-Server mit jCIFS

13.2 Dateien mit wahlfreiem Zugriff

13.2.1 Ein RandomAccessFile zum Lesen und Schreiben öffnen
13.2.2 Aus dem RandomAccessFile lesen
13.2.3 Schreiben mit RandomAccessFile
13.2.4 Die Länge des RandomAccessFile
13.2.5 Hin und her in der Datei
13.2.6 Wahlfreier Zugriff und Pufferung mit Unified I/O

13.3 Stream-Klassen und Reader/Writer am Beispiel von Dateien

13.3.1 Mit dem FileWriter Texte in Dateien schreiben
13.3.2 Zeichen mit der Klasse FileReader lesen
13.3.3 Kopieren mit FileOutputStream und FileInputStream
13.3.4 Das FileDescriptor-Objekt

13.4 Basisklassen für die Ein-/Ausgabe

13.4.1 Die abstrakten Basisklassen
13.4.2 Übersicht über Ein-/Ausgabeklassen
13.4.3 Die abstrakte Basisklasse OutputStream
13.4.4 Die Schnittstellen Closeable und Flushable
13.4.5 Ein Datenschlucker
13.4.6 Die abstrakte Basisklasse InputStream
13.4.7 Ressourcen wie Grafiken aus dem Klassenpfad und aus Jar–Archiven laden
13.4.8 Ströme mit SequenceInputStream zusammensetzen
13.4.9 Die abstrakte Basisklasse Writer
13.4.10 Die Schnittstelle Appendable
13.4.11 Die abstrakte Basisklasse Reader

13.5 Formatierte Textausgaben

13.5.1 Die Klassen PrintWriter und PrintStream
13.5.2 System.out, System.err und System.in
13.5.3 Geschützte Passwort-Eingaben mit der Klasse Console

13.6 Schreiben und Lesen aus Strings und Byte-Feldern

13.6.1 Mit dem StringWriter ein String-Objekt füllen
13.6.2 CharArrayWriter
13.6.3 StringReader und CharArrayReader
13.6.4 Mit ByteArrayOutputStream in ein Byte-Feld schreiben
13.6.5 Mit ByteArrayInputStream aus einem Byte-Feld lesen

13.7 Datenströme filtern und verketten

13.7.1 Streams als Filter verketten
13.7.2 Gepufferte Ausgaben mit BufferedWriter und BufferedOutputStream
13.7.3 Gepufferte Eingaben mit BufferedReader und BufferedInputStream
13.7.4 LineNumberReader zählt automatisch Zeilen mit
13.7.5 Daten mit der Klasse PushbackReader zurücklegen
13.7.6 DataOutputStream/DataInputStream
13.7.7 Basisklassen für Filter
13.7.8 Die Basisklasse FilterWriter
13.7.9 Ein LowerCaseWriter
13.7.10 Eingaben mit der Klasse FilterReader filtern

13.8 Vermittler zwischen Byte-Streams und Unicode-Strömen

13.8.1 Datenkonvertierung durch den OutputStreamWriter
13.8.2 Automatische Konvertierungen mit dem InputStreamReader

13.9 Kommunikation zwischen Threads mit Pipes

13.9.1 PipedOutputStream und PipedInputStream
13.9.2 PipedWriter und PipedReader

13.10 Datenkompression

13.10.1 Java-Unterstützung beim Komprimieren und Zusammenpacken
13.10.2 Datenströme komprimieren
13.10.3 Zip-Archive
13.10.4 Jar-Archive

13.11 Prüfsummen

13.11.1 Die Schnittstelle Checksum
13.11.2 Die Klasse CRC32
13.11.3 Die Adler32-Klasse

13.12 Persistente Objekte und Serialisierung

13.12.1 Objekte mit der Standard-Serialisierung speichern und lesen
13.12.2 Zwei einfache Anwendungen der Serialisierung
13.12.3 Die Schnittstelle Serializable
13.12.4 Nicht serialisierbare Attribute aussparen
13.12.5 Das Abspeichern selbst in die Hand nehmen
13.12.6 Tiefe Objektkopien
13.12.7 Versionenverwaltung und die SUID
13.12.8 Wie die ArrayList serialisiert
13.12.9 Probleme mit der Serialisierung
13.12.10 Serialisieren in XML-Dateien
13.12.11 JavaBeans Persistence
13.12.12 XStream

13.13 Tokenizer

13.13.1 StreamTokenizer
13.13.2 CSV-(Comma Separated Values-)Dateien verarbeiten

13.14 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

14 Die eXtensible Markup Language (XML)

14.1 Auszeichnungssprachen

14.1.1 Die Standard Generalized Markup Language (SGML)
14.1.2 Extensible Markup Language (XML)

14.2 Eigenschaften von XML-Dokumenten

14.2.1 Elemente und Attribute
14.2.2 Beschreibungssprache für den Aufbau von XML-Dokumenten
14.2.3 Schema – eine Alternative zu DTD
14.2.4 Namensraum (Namespace)
14.2.5 XML-Applikationen

14.3 Die Java-APIs für XML

14.3.1 Das Document Object Model (DOM)
14.3.2 Simple API for XML Parsing (SAX)
14.3.3 Pull-API StAX
14.3.4 Java Document Object Model (JDOM)
14.3.5 JAXP als Java-Schnittstelle zu XML
14.3.6 DOM-Bäume einlesen mit JAXP

14.4 Serielle Verarbeitung mit StAX

14.4.1 Unterschiede der Verarbeitungsmodelle
14.4.2 XML-Dateien mit dem Cursor-Verfahren lesen
14.4.3 XML-Dateien mit dem Iterator-Verfahren verarbeiten
14.4.4 Mit Filtern arbeiten
14.4.5 XML-Dokumente schreiben

14.5 Serielle Verarbeitung von XML mit SAX

14.5.1 Schnittstellen von SAX
14.5.2 SAX-Parser erzeugen
14.5.3 Die wichtigsten Methoden der Schnittstelle ContentHandler
14.5.4 ErrorHandler und EntityResolver

14.6 XML-Dateien mit JDOM verarbeiten

14.6.1 JDOM beziehen
14.6.2 Paketübersicht
14.6.3 Die Document-Klasse
14.6.4 Eingaben aus der Datei lesen
14.6.5 Das Dokument im XML-Format ausgeben
14.6.6 Der Dokumenttyp
14.6.7 Elemente
14.6.8 Zugriff auf Elementinhalte
14.6.9 Liste mit Unterelementen erzeugen
14.6.10 Neue Elemente einfügen und ändern
14.6.11 Attributinhalte lesen und ändern
14.6.12 XPath

14.7 Transformationen mit XSLT

14.7.1 Templates und XPath als Kernelemente von XSLT
14.7.2 Umwandlung von XML-Dateien mit JDOM und JAXP

14.8 Java Architecture for XML Binding (JAXB)

14.8.1 Beans für JAXB aufbauen
14.8.2 JAXBContext und die Marshaller/ Unmarshaller

14.9 HTML-Dokumente einlesen

14.10 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

15 Grafische Oberflächen mit Swing

15.1 Das Abstract Window Toolkit und Swing

15.1.1 Abstract Window Toolkit (AWT)
15.1.2 Java Foundation Classes
15.1.3 Was Swing von AWT unterscheidet
15.1.4 Die Klasse Toolkit

15.2 Fenster unter grafischen Oberflächen

15.2.1 Swing-Fenster darstellen
15.2.2 AWT-Fenster darstellen
15.2.3 Sichtbarkeit des Fensters
15.2.4 Größe und Position des Fensters verändern
15.2.5 Unterklassen der Fenster-Klassen bilden
15.2.6 Fenster- und Dialog-Dekoration
15.2.7 Dynamisches Layout während einer Größenänderung

15.3 Beschriftungen (JLabel)

15.3.1 Mehrzeiliger Text, HTML in der Darstellung

15.4 Icon und ImageIcon für Bilder auf Swing-Komponenten

15.4.1 Die Schnittstelle Icon

15.5 Es tut sich was – Ereignisse beim AWT

15.5.1 Die Klasse AWTEvent
15.5.2 Events auf verschiedenen Ebenen
15.5.3 Swings Ereignisquellen und Horcher (Listener)
15.5.4 Listener implementieren
15.5.5 Listener bei dem Ereignisauslöser anmelden/abmelden
15.5.6 Aufrufen der Listener im AWT-Event-Thread
15.5.7 Adapterklassen nutzen
15.5.8 Innere Mitgliedsklassen und innere anonyme Klassen

15.6 Schaltflächen

15.6.1 Normale Schaltflächen (JButton)
15.6.2 Der aufmerksame ActionListener
15.6.3 Basisklasse AbstractButton
15.6.4 Wechselknopf (JToggleButton)

15.7 Swing Action

15.7.1 javax.swing.Action
15.7.2 Eigenschaften der Action-Objekte

15.8 JComponent und Component als Basis aller Komponenten

15.8.1 Tooltips
15.8.2 Rahmen (Border)
15.8.3 Fokus und Navigation
15.8.4 Ereignisse jeder Komponente
15.8.5 Die Größe und Position einer Komponente
15.8.6 Komponenten-Ereignisse
15.8.7 Hinzufügen von Komponenten
15.8.8 UI-Delegate – der wahre Zeichner
15.8.9 Undurchsichtige (opak) Komponente
15.8.10 Properties und Listener für Änderungen
15.8.11 Swing-Beschriftungen eine andere Sprache geben

15.9 Container

15.9.1 Standardcontainer (JPanel)
15.9.2 Bereich mit automatischen Rollbalken (JScrollPane)
15.9.3 Reiter (JTabbedPane)
15.9.4 Teilung-Komponente (JSplitPane)

15.10 Alles Auslegungssache: die Layoutmanager

15.10.1 Übersicht über Layoutmanager
15.10.2 Zuweisen eines Layoutmanagers
15.10.3 Im Fluss mit FlowLayout
15.10.4 Mit BorderLayout in allen Himmelsrichtungen
15.10.5 Rasteranordnung mit GridLayout
15.10.6 Der GridBagLayout-Manager
15.10.7 Null-Layout
15.10.8 BoxLayout
15.10.9 Weitere Layoutmanager

15.11 Rollbalken und Schieberegler

15.11.1 Schieberegler (JSlider)
15.11.2 Rollbalken (JScrollBar)

15.12 Kontrollfelder, Optionsfelder, Kontrollfeldgruppen

15.12.1 Kontrollfelder (JCheckBox)
15.12.2 ItemSelectable, ItemListener und das ItemEvent
15.12.3 Sich gegenseitig ausschließende Optionen (JRadioButton)

15.13 Fortschritte bei Operationen überwachen

15.13.1 Fortschrittsbalken (JProgressBar)
15.13.2 Dialog mit Fortschrittsanzeige (ProgressMonitor)

15.14 Menüs und Symbolleisten

15.14.1 Die Menüleisten und die Einträge
15.14.2 Menüeinträge definieren
15.14.3 Einträge durch Action-Objekte beschreiben
15.14.4 Mit der Tastatur: Mnemonics und Shortcut
15.14.5 Der Tastatur-Shortcut (Accelerator)
15.14.6 Tastenkürzel (Mnemonics)
15.14.7 Symbolleisten alias Toolbars
15.14.8 Popup-Menüs
15.14.9 System-Tray nutzen

15.15 Das Model-View-Controller-Konzept

15.16 Auswahlmenüs, Listen und Spinner

15.16.1 Auswahlmenü (JComboBox)
15.16.2 Zuordnung einer Taste mit einem Eintrag
15.16.3 Datumsauswahl
15.16.4 Listen (JList)
15.16.5 Drehfeld (JSpinner)

15.17 Texteingabefelder

15.17.1 Text in einer Eingabezeile
15.17.2 Die Oberklasse der Text-Komponenten (JTextComponent)
15.17.3 Geschützte Eingaben (JPasswordField)
15.17.4 Validierende Eingabefelder (JFormattedTextField)
15.17.5 Einfache mehrzeilige Textfelder (JTextArea)
15.17.6 Editor-Klasse (JEditorPane)

15.18 Tabellen (JTable)

15.18.1 Ein eigenes Tabellen-Model
15.18.2 Basisklasse für eigene Modelle (AbstractTableModel)
15.18.3 Vorgefertigtes Standard-Modell (DefaultTableModel)
15.18.4 Ein eigener Renderer für Tabellen
15.18.5 Zell-Editoren
15.18.6 Größe und Umrandung der Zellen
15.18.7 Spalteninformationen
15.18.8 Tabellenkopf von Swing-Tabellen
15.18.9 Selektionen einer Tabelle
15.18.10 Automatisches Sortieren und Filtern mit RowSorter
15.18.11 Ein professionelles Tabellenlayout mit JGrid

15.19 Bäume (JTree)

15.19.1 JTree und sein TreeModel und TreeNode
15.19.2 Selektionen bemerken
15.19.3 Das TreeModel von JTree

15.20 JRootPane, JLayeredPane und JDesktopPane

15.20.1 Wurzelkomponente der Top-Level-Komponenten (JRootPane)
15.20.2 JLayeredPane
15.20.3 JDesktopPane und die Kinder JInternalFrame

15.21 Dialoge und Window-Objekte

15.21.1 JWindow und JDialog
15.21.2 Modal oder nicht-modal
15.21.3 Standarddialoge mit JOptionPane
15.21.4 Der Farbauswahldialog JColorChooser
15.21.5 Der Dateiauswahldialog

15.22 Flexibles Java-Look

15.22.1 L & F global setzen
15.22.2 UIManager
15.22.3 Verbessern des Aussehens unter Windows mit JGoodies Looks

15.23 Die Zwischenablage (Clipboard)

15.23.1 Clipboard-Objekte
15.23.2 Auf den Inhalt zugreifen mit Transferable
15.23.3 DataFlavor ist das Format der Daten in der Zwischenablage
15.23.4 Einfügungen in der Zwischenablage erkennen
15.23.5 Drag

15.24 Undo durchführen

15.25 AWT, Swing und die Threads

15.25.1 Ereignisschlange (EventQueue) und AWT-Event-Thread
15.25.2 Swing ist nicht Thread-sicher
15.25.3 Swing-Elemente mit invokeLater() und invokeAndWait() bedienen
15.25.4 SwingWorker
15.25.5 Eigene Ereignisse in die Queue setzen
15.25.6 Auf alle Ereignisse hören

15.26 Barrierefreiheit mit der Java Accessibility API

15.27 Benutzerinteraktionen automatisieren

15.27.1 Automatisch in die Tasten hauen
15.27.2 Mausoperationen
15.27.3 Methoden zur Zeitsteuerung
15.27.4 Screenshots
15.27.5 MouseInfo und PointerInfo

15.28 Zeitliches Ausführen mit dem javax.swing.Timer

15.29 Alternativen zu AWT und Swing

15.29.1 XML-Beschreibungen der Oberfläche: Swixml, XUL/Luxor
15.29.2 SWT (Standard Widget Toolkit)

15.30 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

16 Grafikprogrammierung

16.1 Grundlegendes zum Zeichnen

16.1.1 Die paint()-Methode für das AWT-Frame
16.1.2 Zeichen von Inhalten mit JFrame
16.1.3 Auffordern zum Neuzeichnen mit repaint()
16.1.4 Grundbegriffe: Koordinaten, Punkte, Pixel
16.1.5 Die ereignisorientierte Programmierung ändert Fensterinhalte
16.1.6 Java 2D-API

16.2 Einfache Zeichenfunktionen

16.2.1 Linien
16.2.2 Rechtecke
16.2.3 Ovale und Kreisbögen
16.2.4 Polygone und Polylines

16.3 Zeichenketten schreiben und Fonts

16.3.1 Zeichenfolgen schreiben
16.3.2 Die Font-Klasse
16.3.3 Einen neuen Font aus einem gegebenen Font ableiten
16.3.4 Zeichensätze des Systems ermitteln
16.3.5 Neue TrueType-Fonts in Java nutzen
16.3.6 Font-Metadaten durch FontMetrics

16.4 Geometrische Objekte

16.4.1 Die Schnittstelle Shape
16.4.2 Kreisförmiges
16.4.3 Kurviges
16.4.4 Area und die konstruktive Flächengeometrie
16.4.5 Pfade
16.4.6 Punkt in Form, Schnitt von Linien, Abstand Punkt/Linie und Weiteres

16.5 Das Innere und Äußere einer Form

16.5.1 Farben und die Paint-Schnittstelle
16.5.2 Farben mit der Klasse Color
16.5.3 Die Farben des Systems über SystemColor
16.5.4 Composite und Xor
16.5.5 Dicke und Art der Linien von Formen bestimmen über Stroke

16.6 Bilder

16.6.1 Eine Übersicht über die Bilder-Bibliotheken
16.6.2 Bilder mit ImageIO lesen
16.6.3 Ein Bild zeichnen
16.6.4 Programm-Icon/Fenster-Icon setzen
16.6.5 Splash-Screen
16.6.6 Bilder im Speicher erzeugen
16.6.7 Pixel für Pixel auslesen und schreiben
16.6.8 Bilder skalieren
16.6.9 Schreiben mit ImageIO
16.6.10 Asynchrones Laden mit getImage() und dem MediaTracker
16.6.11 Selbst definierte Cursor
16.6.12 VolatileImage

16.7 Weitere Eigenschaften von Graphics

16.7.1 Eine Kopie von Graphics erstellen
16.7.2 Koordinatensystem verschieben
16.7.3 Beschnitt (Clipping)

16.8 Zeichenhinweise durch RenderingHints

16.9 Transformationen mit einem AffineTransform-Objekt

16.10 Drucken

16.10.1 Drucken der Inhalte
16.10.2 Bekannte Drucker

16.11 Grafikverarbeitung ohne grafische Oberfläche

16.11.1 Xvfb-Server
16.11.2 Pure Java AWT Toolkit (PJA)

16.12 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

17 Netzwerkprogrammierung

17.1 Grundlegende Begriffe

17.1.1 Internet-Standards und RFC

17.2 URI und URL

17.2.1 URI
17.2.2 Die Klasse URL
17.2.3 Informationen über eine URL
17.2.4 Der Zugriff auf die Daten über die Klasse URL
17.2.5 Verbindungen durch einen Proxy-Server

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: vom URL zur URLConnection
17.3.4 Der Protokoll-Handler für Jar-Dateien
17.3.5 Passwort-geschützte Seiten mit Basic Authentication/ Proxy-Authentifizierung

17.4 Mit GET und POST Daten übergeben

17.4.1 Kodieren der Parameter für Serverprogramme
17.4.2 Eine Suchmaschine ansprechen

17.5 Host- und IP-Adressen

17.5.1 Lebt der Rechner?
17.5.2 Das Netz ist Klasse ...
17.5.3 IP-Adresse des lokalen Hosts

17.6 NetworkInterface

17.7 Mit dem Socket zum Server

17.7.1 Das Netzwerk ist der Computer
17.7.2 Sockets
17.7.3 Eine Verbindung zum Server aufbauen
17.7.4 Server unter Spannung: die Ströme
17.7.5 Die Verbindung wieder abbauen
17.7.6 Informationen über den Socket
17.7.7 Reine Verbindungsdaten über SocketAddress

17.8 Client/Server-Kommunikation

17.8.1 Warten auf Verbindungen
17.8.2 Ein Multiplikationsserver
17.8.3 Blockierendes Lesen
17.8.4 Von außen erreichbar sein

17.9 Apache Jakarta Commons HttpClient und Net

17.9.1 Jakarta Commons HttpClient
17.9.2 Jakarta Commons Net

17.10 Arbeitsweise eines Webservers

17.10.1 Das Hypertext Transfer Protocol (HTTP)
17.10.2 Anfragen an den Server
17.10.3 Die Antworten vom Server
17.10.4 Webserver mit com.sun.net.httpserver.HttpServer

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.12 E-Mail

17.12.1 Wie eine E-Mail um die Welt geht
17.12.2 Das Simple Mail Transfer Protocol und RFC 822
17.12.3 POP (Post Office Protocol)
17.12.4 Die JavaMail API
17.12.5 E-Mails mittels POP3 abrufen
17.12.6 E-Mails versenden
17.12.7 Ereignisse und Suchen

17.13 Tiefer liegende Netzwerkeigenschaften

17.13.1 Internet Control Message Protocol (ICMP)
17.13.2 MAC-Adresse

17.14 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

18 Verteilte Programmierung mit RMI und Web-Services

18.1 Entfernte Objekte und Methoden

18.1.1 Stellvertreter helfen bei entfernten Methodenaufrufen
18.1.2 Standards für entfernte Objekte

18.2 Java Remote Method Invocation

18.2.1 Zusammenspiel von Server, Registry und Client
18.2.2 Wie die Stellvertreter die Daten übertragen
18.2.3 Probleme mit entfernten Methoden
18.2.4 Nutzen von RMI bei Middleware-Lösungen
18.2.5 Zentrale Klassen und Schnittstellen
18.2.6 Entfernte und lokale Objekte im Vergleich

18.3 Auf der Serverseite

18.3.1 Entfernte Schnittstelle deklarieren
18.3.2 Remote-Objekt-Implementierung
18.3.3 Stellvertreterobjekte
18.3.4 Der Namensdienst (Registry)
18.3.5 Remote-Objekt-Implementierung exportieren und beim Namensdienst anmelden
18.3.6 Einfaches Logging
18.3.7 Aufräumen mit dem DGC

18.4 Auf der Clientseite

18.5 Entfernte Objekte übergeben und laden

18.5.1 Klassen vom RMI-Klassenlader nachladen

18.6 Weitere Eigenschaften von RMI

18.6.1 RMI und CORBA
18.6.2 RMI über HTTP getunnelt
18.6.3 Automatische Remote-Objekt-Aktivierung

18.7 Daily Soap

18.7.1 SOAP-Protokoll
18.7.2 Die technische Realisierung
18.7.3 SOAP-Implementierungen
18.7.4 @WebService in Java 6
18.7.5 Einen Web-Service definieren
18.7.6 Web-Services veröffentlichen
18.7.7 Einen JAX-WS-Client implementieren

18.8 Java Message Service (JMS)

18.9 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

19 JavaServer Pages und Servlets

19.1 Dynamisch generierte Webseiten

19.1.1 Was sind Servlets?
19.1.2 Was sind JavaServer Pages?

19.2 Servlets und JSPs mit Tomcat entwickeln

19.2.1 Servlet-Container
19.2.2 Entwicklung der Servlet/JSP-Spezifikationen
19.2.3 Webserver mit Servlet-Funktionalität
19.2.4 Tomcat
19.2.5 Ablageort für eigene JSP-Seiten
19.2.6 Web-Applikationen
19.2.7 Zuordnung von Web-Applikationen zu physikalischen Verzeichnissen
19.2.8 Mit dem WTP ein Web-Projekt entwickeln

19.3 Statisches und Dynamisches

19.3.1 Statischer Template-Code
19.3.2 Dynamische Inhalte
19.3.3 Kommentare

19.4 Die Expression Language (EL)

19.4.1 Operatoren der EL
19.4.2 Literale
19.4.3 Implizite EL-Objekte

19.5 Formulardaten

19.6 Auf Beans zurückgreifen

19.6.1 Beans in JSP-Seiten anlegen
19.6.2 Properties einer Bean im EL-Ausdruck erfragen
19.6.3 Properties mit <jsp:setProperty> setzen
19.6.4 Bean-Klasse zum Testen von E-Mail-Adressen
19.6.5 Parameterwerte in Bean übertragen

19.7 JSP Tag-Libraries

19.7.1 Standard Tag Library (JSTL)
19.7.2 Jakarta Taglibs Project

19.8 Einbinden und Weiterleiten

19.8.1 Einbinden von Inhalten
19.8.2 Forward und Redirect
19.8.3 Applets einbinden

19.9 Skripten von JSPs

19.9.1 Scriptlets
19.9.2 JSP-Ausdrücke
19.9.3 JSP-Deklarationen
19.9.4 Quoting
19.9.5 Entsprechende XML-Tags
19.9.6 Implizite Objekte für Scriptlets und JSP-Ausdrücke

19.10 JSP-Direktiven

19.10.1 page-Direktiven im Überblick
19.10.2 Mit JSPs Bilder generieren

19.11 Sitzungsverfolgung (Session Tracking)

19.11.1 Lösungen für Sitzungsverfolgung
19.11.2 Auf Session-Dateien zurückgreifen

19.12 Servlets

19.12.1 Servlets compilieren
19.12.2 Servlet-Mapping
19.12.3 Der Lebenszyklus eines Servlets
19.12.4 Mehrere Anfragen beim Servlet und die Thread-Sicherheit
19.12.5 Servlets und Sessions
19.12.6 Weiterleiten und Einbinden von Servlet-Inhalten

19.13 Internationalisierung

19.13.1 Die Länderkennung des Anfragers auslesen
19.13.2 Länderkennung für die Ausgabe setzen
19.13.3 Westeuropäische Texte senden

19.14 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

20 Applets

20.1 Applets in der Wiege von Java

20.1.1 (J)Applet und Applikationen
20.1.2 Das erste Hallo-Applet
20.1.3 Die Zyklen eines Applets
20.1.4 Parameter an das Applet übergeben
20.1.5 Wie das Applet den Browser-Inhalt ändern kann
20.1.6 Den Ursprung des Applets erfragen
20.1.7 Datenaustausch zwischen Applets
20.1.8 Was ein Applet alles darf

20.2 Fehler in Applets finden

20.2.1 Ist Java im Browser aktiviert?
20.2.2 Läuft das Applet unter Netscape oder Microsoft Explorer?
20.2.3 Datenaustausch zwischen Applets und Java-Skripten

20.3 Webstart

Galileo Computing - Zum Seitenanfang

21 Midlets und die Java ME

21.1 Java Platform, Micro Edition (Java ME)

21.2 Konfigurationen

21.2.1 Connected Limited Device Configuration (CLDC)
21.2.2 Connected Device Configuration (CDC)

21.3 Profile

21.3.1 Mobile Information Device Profile (MIDP)
21.3.2 Weitere Profile

21.4 Wireless Toolkits

21.4.1 Sun Java Wireless Toolkit for CLDC
21.4.2 Eclipse-Plugin

21.5 Die Midlet-API

21.5.1 Paketstruktur Mobile Information Device Profile (2.0)

21.6 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

22 Datenbankmanagement mit JDBC

22.1 Das relationale Modell

22.2 Datenbanken und Tools

22.2.1 HSQLDB
22.2.2 Weitere Datenbanken
22.2.3 Eclipse-Plugins zum Durchschauen von Datenbanken

22.3 JDBC und Datenbanktreiber

22.3.1 Treibertypen
22.3.2 JDBC-Versionen

22.4 Eine Beispielabfrage

22.4.1 Schritte zur Datenbankabfrage
22.4.2 Client für HSQLDB-Datenbank

22.5 Mit Java an eine Datenbank andocken

22.5.1 Der Treiber-Manager
22.5.2 Den Treiber laden
22.5.3 Eine Aufzählung aller Treiber
22.5.4 Log-Informationen
22.5.5 Verbindung zur Datenbank auf- und abbauen
22.5.6 DataSource
22.5.7 Gepoolte Verbindungen

22.6 Datenbankabfragen

22.6.1 Abfragen über das Statement-Objekt
22.6.2 Ergebnisse einer Abfrage in ResultSet
22.6.3 Java und SQL-Datentypen
22.6.4 Unicode in der Spalte korrekt auslesen
22.6.5 Eine SQL-NULL und wasNull() bei ResultSet
22.6.6 Wie viele Zeilen hat ein ResultSet?

22.7 Die Ausnahmen bei JDBC

22.8 Elemente einer Datenbank hinzufügen und aktualisieren

22.8.1 Batch-Updates

22.9 ResultSets in Bohnen durch RowSet

22.9.1 Die Schnittstelle RowSet
22.9.2 Implementierungen von RowSet
22.9.3 Der Typ CachedRowSet
22.9.4 Der Typ WebRowSet

22.10 Vorbereitete Anweisungen (Prepared Statements)

22.10.1 PreparedStatement-Objekte vorbereiten
22.10.2 Werte für die Platzhalter eines PreparedStatement

22.11 Transaktionen

22.12 Metadaten

22.12.1 Metadaten über die Tabelle
22.12.2 Informationen über die Datenbank

22.13 Einführung in SQL

22.13.1 Ein Rundgang durch SQL-Anfragen
22.13.2 Datenabfrage mit der Data Query Language (DQL)
22.13.3 Tabellen mit der Data Definition Language (DDL) anlegen

22.14 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

23 Reflection und Annotationen

23.1 Metadaten

23.1.1 Metadaten durch Java-Doc Tags
23.1.2 XDoclet

23.2 Metadaten der Klassen mit dem Class-Objekt

23.2.1 An ein Class-Objekt kommen
23.2.2 Was das Class-Objekt beschreibt
23.2.3 Der Name der Klasse
23.2.4 instanceof mit Class-Objekten
23.2.5 Oberklassen finden
23.2.6 Implementierte Interfaces einer Klasse oder eines Interfaces
23.2.7 Modifizierer und die Klasse Modifier
23.2.8 Die Arbeit auf dem Feld

23.3 Attribute, Methoden und Konstruktoren

23.3.1 Reflections Gespür für Attribute einer Klasse
23.3.2 Methoden einer Klasse erfragen
23.3.3 Properties einer Bean erfragen
23.3.4 Konstruktoren einer Klasse
23.3.5 Annotationen

23.4 Objekte erzeugen und manipulieren

23.4.1 Objekte erzeugen
23.4.2 Die Belegung der Variablen erfragen
23.4.3 Eine generische toString()-Funktion
23.4.4 Variablen setzen
23.4.5 Private Attribute ändern

23.5 Methoden aufrufen

23.5.1 Statische Methoden aufrufen
23.5.2 Dynamische Methodenaufrufe bei festen Methoden beschleunigen

23.6 Informationen und Identifizierung von Paketen

23.6.1 Geladene Pakete

23.7 Annotationen

23.7.1 Neue Annotationen definieren
23.7.2 Annotationen mit genau einem Element
23.7.3 Beliebige Schlüssel-Werte-Paare
23.7.4 Vorbelegte Elemente
23.7.5 Annotieren von Annotationstypen
23.7.6 Annotationen zur Laufzeit ausgelesen
23.7.7 Mögliche Nachteile von Annotationen
Galileo Computing - Zum Seitenanfang

24 Logging und Monitoring

24.1 Die Logging-API

24.1.1 Einfaches Logging
24.1.2 Log-Level
24.1.3 Logging in eine Datei

24.2 Überwachen von Systemzuständen

24.3 MBean-Typen, MBean-Server und weitere Begriffe

24.3.1 MXBeans des Systems

24.4 Geschwätzige Programme und JConsole

24.4.1 JConsole

24.5 Der MBeanServer

24.6 Eine eigene Standard-MBean

24.6.1 Management-Schnittstelle
24.6.2 Implementierung der managed Ressource
24.6.3 Anmeldung beim Server
24.6.4 Eigene Bean in JConsole
24.6.5 JMX mit RMI-Adaptor

24.7 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

25 Sicherheitskonzepte

25.1 Zentrale Elemente der Java-Sicherheit

25.1.1 Security-API der Java SE
25.1.2 Cryptographic Service Providers

25.2 Der Sandkasten (Sandbox)

25.3 Sicherheitsmanager (Security Manager)

25.3.1 Der Sicherheitsmanager bei Applets
25.3.2 Sicherheitsmanager aktivieren
25.3.3 Wie nutzen die Java-Bibliotheken den Sicherheitsmanager?
25.3.4 Rechte durch Policy-Dateien vergeben
25.3.5 Erstellen von Rechtedateien mit dem grafischen Policy-Tool
25.3.6 Kritik an den Policies

25.4 Signierung

25.4.1 Warum signieren?
25.4.2 Digitale Ausweise und die Zertifizierungsstelle
25.4.3 Mit keytool Schlüssel erzeugen
25.4.4 Signieren mit jarsigner

25.5 Digitale Unterschriften

25.5.1 Die MDx-Reihe
25.5.2 Secure Hash Algorithm (SHA)
25.5.3 Mit der Security-API einen Fingerabdruck berechnen
25.5.4 Die Klasse MessageDigest
25.5.5 Unix-Crypt

25.6 Verschlüsseln von Daten(-strömen)

25.6.1 Den Schlüssel bitte
25.6.2 Verschlüsseln mit Cipher
25.6.3 Verschlüsseln von Datenströmen

25.7 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

26 Java Native Interface (JNI)

26.1 Java Native Interface und Invocation-API

26.2 Einbinden einer C-Funktion in ein Java-Programm

26.2.1 Schreiben des Java-Codes
26.2.2 Compilieren des Java-Programms
26.2.3 Erzeugen der Header-Datei
26.2.4 Implementierung der Methode in C
26.2.5 Übersetzen der C-Programme und Erzeugen der dynamischen Bibliothek
26.2.6 Suchort der dynamischen Bibliothek

26.3 Nativ die Stringlänge ermitteln

26.4 Erweiterte JNI-Eigenschaften

26.4.1 Klassendefinitionen
26.4.2 Zugriff auf Attribute

26.5 Einfache Anbindung von existierenden Bibliotheken

26.5.1 C++ Klassen ansprechen
26.5.2 COM-Schnittstellen anzapfen

26.6 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

27 Dienstprogramme für die Java-Umgebung

27.1 Die Werkzeuge im Überblick

27.2 Java-Compiler

27.2.1 Bytecode Compiler javac
27.2.2 Native Compiler
27.2.3 Java-Programme in ein natives ausführbares Programm einpacken

27.3 Der Java-Interpreter java

27.3.1 Der Unterschied zwischen java.exe und javaw.exe

27.4 Das Archivformat Jar

27.4.1 Das Dienstprogramm Jar benutzen
27.4.2 Das Manifest
27.4.3 Applikationen in Jar-Archiven starten
27.4.4 Applets in Jar-Archiven

27.5 Monitoringprogramme

27.5.1 jps
27.5.2 jstat
27.5.3 jmap
27.5.4 jstack

27.6 Ant

27.6.1 Bezug und Installation von Ant
27.6.2 Properties
27.6.3 Externe und vordefinierte Properties
27.6.4 Weitere Ant-Tasks

27.7 Decompiler und Obfuscatoren

27.7.1 Der Decompiler Jad
27.7.2 Das Obfuscator-Programm ProGuard

27.8 Weitere Dienstprogramme

27.8.1 Sourcecode Beautifier
27.8.2 Java-Programme als Systemdienst ausführen

27.9 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

A Die Begleit-DVD



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






  
  Zum Katalog
Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel

Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Einstieg in Java 6






 Einstieg in Java 6


Zum Katalog: Java 6 lernen mit Eclipse






 Java 6 lernen
 mit Eclipse


Zum Katalog: NetBeans Platform 6






 NetBeans Platform 6


Zum Katalog: Einstieg in Eclipse 3.3






 Einstieg in Eclipse 3.3


Zum Katalog: Eclipse 3 für Java-Entwickler - Videotraining






 Eclipse 3 für
 Java-Entwickler
 - Videotraining


Zum Katalog: Hibernate






 Hibernate


Zum Katalog: Java und XML






 Java und XML


Zum Katalog: Cocoon 2 und Tomcat






 Cocoon 2 und Tomcat


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2008
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, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de