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 Generics, innere Klassen
10 Die Klassenbibliothek
11 Threads und nebenläufige Programmierung
12 Datenstrukturen und Algorithmen
13 Raum und Zeit
14 Dateien und Datenströme
15 Die eXtensible Markup Language (XML)
16 Grafische Oberflächen mit Swing
17 Grafikprogrammierung
18 Netzwerkprogrammierung
19 Verteilte Programmierung mit RMI und Web–Services
20 JavaServer Pages und Servlets
21 Applets
22 Midlets und die Java ME
23 Datenbankmanagement mit JDBC
24 Reflection und Annotationen
25 Logging und Monitoring
26 Sicherheitskonzepte
27 Java Native Interface (JNI)
28 Dienstprogramme für die Java-Umgebung
Stichwort

Download:
- ZIP, ca. 14,1 MB
Buch bestellen
Ihre Meinung?

Spacer
Java ist auch eine Insel (8. Auflage) von Christian Ullenboom
Programmieren mit der Java Standard Edition Version 6
Buch: Java ist auch eine Insel (8. Auflage)

Java ist auch eine Insel (8. Aufl.)
8., aktual. Auflage, geb., mit DVD
1.475 S., 49,90 Euro
Galileo Computing
ISBN 978-3-8362-1371-4

Nützliche Links:
Diese 8. Auflage des Java-Kultbuches wurde gründlich überarbeitet und aktualisiert. 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, JavaBeans, RMI, XML-Verarbeitung mit Java, Servlets und Java ServerPages, JDBC und vielem mehr. Neu in dieser Fassung: JAXB-API, umfangreichere Abschnitte zu regulären Ausdrücken und viele neue Beispiele.

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 8. 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 benutzerdefinierten überladenen Operatoren
1.3.9 Java als Sprache, Laufzeitumgebung und Bibliothek
1.3.10 Wofür sich Java weniger 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 Java-Plattformen: Java SE, Java EE und Java ME

1.5.1 Java SE-Plattform
1.5.2 Java für die Kleinen
1.5.3 Java für die Großen

1.6 Installation von Suns Java Platform Standard Edition (Java SE)

1.6.1 Das Java SE von Sun
1.6.2 Download vom JDK
1.6.3 Java SE unter Windows installieren

1.7 Das erste Programm compilieren und testen

1.7.1 Ein Quadratzahlen-Programm
1.7.2 Der Compilerlauf
1.7.3 Die Laufzeitumgebung
1.7.4 Häufige Compiler- und Interpreterprobleme

1.8 Entwicklungsumgebungen im Allgemeinen

1.8.1 Die Entwicklungsumgebung Eclipse
1.8.2 NetBeans von Sun
1.8.3 Ein Wort zu Microsoft, Java und zu J++

1.9 Eclipse im Speziellen

1.9.1 Eclipse starten
1.9.2 Das erste Projekt anlegen
1.9.3 Eine Klasse hinzufügen
1.9.4 Übersetzen und Ausführen
1.9.5 JDK statt JRE
1.9.6 Start eines Programms ohne Speicheraufforderung
1.9.7 Projekt einfügen, Workspace für die Programme wechseln
1.9.8 Plugins für Eclipse

1.10 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

2 Sprachbeschreibung

2.1 Elemente der Programmiersprache Java

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

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 Funktionsaufrufe als Anweisungen
2.2.5 print(), println() und printf() für Bildschirmausgaben
2.2.6 Ausdrucksanweisung
2.2.7 Erste Idee der Objektorientierung
2.2.8 Modifizierer
2.2.9 Anweisungen und Blöcke

2.3 Datentypen, Typisierung, Variablen und Zuweisungen

2.3.1 Primitive Datentypen im Überblick
2.3.2 Variablendeklarationen
2.3.3 Zuweisungsoperator
2.3.4 Variablendeklaration mit Wertinitialisierung
2.3.5 Wahrheitswerte
2.3.6 Ganzzahlige Datentypen
2.3.7 Die Fließkommazahlen float und double
2.3.8 Alphanumerische Zeichen
2.3.9 Gute Namen, schlechte Namen

2.4 Blöcke, Initialisierung und Sichtbarkeit

2.4.1 Blöcke und Anweisungen
2.4.2 Initialisierung von lokalen Variablen
2.4.3 Sichtbarkeit und Gültigkeitsbereich

2.5 Ausdrücke, Operanden und Operatoren

2.5.1 Arithmetische Operatoren
2.5.2 Unäres Minus und Plus
2.5.3 Zuweisung mit Operation
2.5.4 Präfix- oder Postfix-Inkrement und -Dekrement
2.5.5 Die relationalen Operatoren und die Gleichheitsoperatoren
2.5.6 Logische Operatoren Und, Oder, Xor, Nicht
2.5.7 Rang der Operatoren in der Auswertungsreihenfolge
2.5.8 Die Typanpassung (das Casting)
2.5.9 Überladenes Plus für Strings

2.6 Bedingte Anweisungen oder Fallunterscheidungen

2.6.1 Die if-Anweisung
2.6.2 Die Alternative mit einer if/else-Anweisung wählen
2.6.3 Die switch-Anweisung bietet die Alternative

2.7 Schleifen

2.7.1 Die while-Schleife
2.7.2 Die do-while-Schleife
2.7.3 Die for-Schleife
2.7.4 Schleifenbedingungen und Vergleiche mit ==
2.7.5 Ausbruch planen mit break und Wiedereinstieg mit continue
2.7.6 break und continue mit Sprungmarken

2.8 Methoden einer Klasse

2.8.1 Bestandteil einer Funktion
2.8.2 Signatur-Beschreibung in der Java-API
2.8.3 Aufruf einer Methode
2.8.4 Methoden ohne Parameter deklarieren
2.8.5 Statische Methoden (Klassenmethoden)
2.8.6 Parameter, Argument und Wertübergabe
2.8.7 Methoden vorzeitig mit return beenden
2.8.8 Nicht erreichbarer Quellcode bei Funktionen
2.8.9 Rückgabewerte
2.8.10 Methoden überladen
2.8.11 Vorgegebener Wert für nicht aufgeführte Argumente
2.8.12 Finale lokale Variablen
2.8.13 Rekursive Methoden

2.9 Weitere Operatoren

2.9.1 Bits und Bytes
2.9.2 Operationen auf Bit-Ebene
2.9.3 Die Verschiebeoperatoren
2.9.4 Ein Bit setzen, löschen, umdrehen und testen
2.9.5 Bit-Funktionen der Integer- und Long-Klasse
2.9.6 Der Bedingungsoperator
2.9.7 Operator vermisst

2.10 Einfache Benutzereingaben

2.11 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

3 Klassen und Objekte

3.1 Objektorientierte Programmierung

3.1.1 Warum überhaupt OOP?
3.1.2 Denk ich an Java, denk ich an Wiederverwendbarkeit

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.3.3 UML-Werkzeuge

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.5 Pakete und import-Deklarationen nutzen

3.5.1 Volle Qualifizierung und import-Deklaration
3.5.2 import *

3.6 Mit Referenzen arbeiten

3.6.1 Zuweisungen bei Referenzen
3.6.2 Methoden 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.7.3 Die null-Referenz

3.8 Wrapper-Klassen und Autoboxing

3.8.1 Erzeugen von Wrapper-Objekten
3.8.2 Konvertierungen in eine String-Repräsentation
3.8.3 Die Klasse Integer
3.8.4 Die Klassen Double und Float für Fließkommazahlen
3.8.5 Die Basisklasse Number für numerische Wrapper-Objekte
3.8.6 Die Boolean-Klasse
3.8.7 Autoboxing: Boxing und Unboxing

3.9 Compilationseinheiten und eigene Pakete schnüren

3.9.1 Die package-Anweisung
3.9.2 Importieren von Klassen mit import
3.9.3 Hierarchische Strukturen und das Default-Package
3.9.4 Paketnamen
3.9.5 Klassen mit gleichen Namen in unterschiedlichen Paketen
3.9.6 Compilationseinheit (Compilation Unit)
3.9.7 Statischer Import
3.9.8 Eine Verzeichnisstruktur für eigene Projekte

3.10 Arrays

3.10.1 Deklaration von Arrays
3.10.2 Arrays mit Inhalt
3.10.3 Die Länge eines Arrays über das Attribut length
3.10.4 Zugriff auf die Elemente über den Index
3.10.5 Array-Objekte mit new erzeugen
3.10.6 Fehler bei Arrays
3.10.7 Die erweiterte for-Schleife
3.10.8 Arrays mit nicht-primitiven Elementen
3.10.9 Mehrdimensionale Arrays
3.10.10 Vorinitialisierte Arrays
3.10.11 Mehrere Rückgabewerte
3.10.12 Methode mit variabler Argumentanzahl (Vararg)
3.10.13 Klonen kann sich lohnen – Arrays vermehren
3.10.14 Feldinhalte kopieren
3.10.15 Die Klasse Arrays zum Vergleichen, Füllen und Suchen

3.11 Der Einstiegspunkt für das Laufzeitsystem: main()

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

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 String-Repräsentationen konvertieren
4.3.2 String in primitives Element konvertieren

4.4 Veränderbare Zeichenketten mit StringBuilder/StringBuffer

4.4.1 Anlegen von StringBuilder-/StringBuffer-Objekten
4.4.2 Die Länge eines StringBuilder-/StringBuffer-Objekts
4.4.3 Daten anhängen
4.4.4 Zeichen(folgen) setzen, erfragen, löschen und umdrehen
4.4.5 Vergleichen von String/StringBuilder/StringBuffer
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 Arbeiten mit der Fassade: String.matches()
4.6.2 Die Klassen Pattern und Matcher
4.6.3 Quantifizierer und Wiederholungen
4.6.4 Finden und nicht matchen
4.6.5 Gierige und nicht gierige Operatoren
4.6.6 Mit MatchResult alle Ergebnisse einsammeln

4.7 Zerlegen von Zeichenketten

4.7.1 Splitten von Zeichenketten mit split()
4.7.2 Die Klasse Scanner
4.7.3 StringTokenizer
4.7.4 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.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 Methoden 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 Kein Public Viewing – Passwörter sind privat
6.2.3 Wieso nicht freie Methoden und Variablen für alle?
6.2.4 Privat ist nicht ganz privat: Es kommt darauf an, wer’s sieht
6.2.5 Zugriffsmethoden für Attribute deklarieren
6.2.6 Setter und Getter nach der JavaBeans-Spezifikation
6.2.7 Paketsichtbar
6.2.8 Zusammenfassung zur Sichtbarkeit

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 Variablen zum Datenaustausch
6.3.6 Statische Eigenschaften und Objekteigenschaften

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)sichere 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 Default-Konstruktor
6.5.3 Parametrisierte und überladene Konstruktoren
6.5.4 Copy-Konstruktor
6.5.5 Einen anderen Konstruktor der gleichen Klasse aufrufen
6.5.6 Ihr fehlt uns nicht – der Garbage-Collector
6.5.7 Private Konstruktoren, Utility-Klassen, Singleton, Fabriken

6.6 Klassen- und Objektinitialisierung

6.6.1 Initialisierung von Objektvariablen
6.6.2 Statische Blöcke als Klasseninitialisierer
6.6.3 Initialisierung von Klassenvariablen
6.6.4 Exemplarinitialisierer (Instanzinitialisierer)
6.6.5 Finale Werte im Konstruktor und in statischen Blöcken setzen

6.7 Assoziationen zwischen Objekten

6.7.1 Unidirektionale 1:1-Beziehung
6.7.2 Bidirektionale 1:1-Beziehungen
6.7.3 Unidirektionale 1:n-Beziehung

6.8 Vererbung

6.8.1 Vererbung in Java
6.8.2 Spielobjekte modelliert
6.8.3 Implizite Basisklasse java.lang.Object
6.8.4 Einfach- und Mehrfachvererbung
6.8.5 Sichtbarkeit protected
6.8.6 Konstruktoren in der Vererbung und super

6.9 Typen in Hierarchien

6.9.1 Automatische und explizite Typanpassung
6.9.2 Das Substitutionsprinzip
6.9.3 Typen mit dem binären Operator instanceof testen

6.10 Methoden überschreiben

6.10.1 Methoden in Unterklassen mit neuem Verhalten ausstatten
6.10.2 Mit super an die Eltern
6.10.3 Finale Klassen und finale Methoden
6.10.4 Kovariante Rückgabetypen
6.10.5 Array-Typen und Kovarianz

6.11 Dynamisches Binden/Polymorphie

6.11.1 Unpolymorph bei privaten, statischen und finalen Methoden
6.11.2 Polymorphie bei Konstruktoraufrufen

6.12 Abstrakte Klassen und abstrakte Methoden

6.12.1 Abstrakte Klassen
6.12.2 Abstrakte Methoden

6.13 Schnittstellen

6.13.1 Deklarieren von Schnittstellen
6.13.2 Implementieren von Schnittstellen
6.13.3 Markierungsschnittstellen
6.13.4 Ein Polymorphie-Beispiel mit Schnittstellen
6.13.5 Die Mehrfachvererbung bei Schnittstellen
6.13.6 Keine Kollisionsgefahr bei Mehrfachvererbung
6.13.7 Erweitern von Interfaces – Subinterfaces
6.13.8 Vererbte Konstanten bei Schnittstellen
6.13.9 Abstrakte Klassen und Schnittstellen im Vergleich

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) Typen und Eigenschaften
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.2 Design-Pattern (Entwurfsmuster)

7.2.1 Motivation für Design-Pattern
7.2.2 Das Beobachter-Pattern (Observer/Observable)
7.2.3 Ereignisse über Listener

7.3 Service-Factory

7.3.1 Arbeiten mit dem ServiceLoader
7.3.2 Utility-Klasse Lookup als ServiceLoader-Fassade

7.4 JavaBean

7.4.1 Properties (Eigenschaften)
7.4.2 Einfache Eigenschaften
7.4.3 Indizierte Eigenschaften
7.4.4 Gebundene Eigenschaften
7.4.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.4 Rückgabewerte bei ausgelösten Ausnahmen

8.5 Der Stack-Trace

8.5.1 Stack-Trace erfragen

8.6 Assertions

8.6.1 Assertions in eigenen Programmen nutzen
8.6.2 Assertions aktivieren
Galileo Computing - Zum Seitenanfang

9 Generics, innere Klassen

9.1 Generische Datentypen

9.1.1 Einfache Klassenschablonen
9.1.2 Einfache Methodenschablonen
9.1.3 Umsetzen der Generics, Typlöschung und Raw-Types
9.1.4 Generics und Arrays
9.1.5 Einschränken der Typen
9.1.6 Generics und Vererbung, Invarianz
9.1.7 Wildcards

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

9.2.1 Statische innere Klassen und Schnittstellen
9.2.2 Mitglieds- oder Elementklassen
9.2.3 Lokale Klassen
9.2.4 Anonyme innere Klassen
9.2.5 this und Vererbung
Galileo Computing - Zum Seitenanfang

10 Die Klassenbibliothek

10.1 Die Java-Klassenphilosophie

10.1.1 Übersicht über die Pakete der Standardbibliothek

10.2 Object ist die Mutter aller Klassen

10.2.1 Klassenobjekte
10.2.2 Objektidentifikation mit toString()
10.2.3 Objektgleichheit mit equals() und Identität
10.2.4 Klonen eines Objekts mit clone()
10.2.5 Hashcodes über hashCode() liefern
10.2.6 Aufräumen mit finalize()
10.2.7 Synchronisation

10.3 Die Spezial-Oberklasse Enum

10.3.1 Methoden auf Enum-Objekten
10.3.2 enum mit eigenen Konstruktoren und Methoden

10.4 Klassenlader (Class Loader)

10.4.1 Woher die kleinen Klassen kommen
10.4.2 Setzen des Klassenpfades
10.4.3 Die wichtigsten drei Typen von Klassenladern
10.4.4 Der java.lang.ClassLoader
10.4.5 Hot Deployment mit dem URL-Classloader
10.4.6 Das jre/lib/endorsed-Verzeichnis

10.5 Die Utility-Klasse System und Properties

10.5.1 Systemeigenschaften der Java-Umgebung
10.5.2 line.separator
10.5.3 Property von der Konsole aus setzen
10.5.4 Umgebungsvariablen des Betriebssystems
10.5.5 Einfache Zeitmessung und Profiling

10.6 Ausführen externer Programme und Skripte

10.6.1 ProcessBuilder und Prozesskontrolle mit Process
10.6.2 Einen Browser/E-Mail-Client/Editor aufrufen
10.6.3 Ausführen von Skripten

10.7 Benutzereinstellungen

10.7.1 Benutzereinstellungen speichern
10.7.2 Einträge einfügen, auslesen und löschen
10.7.3 Auslesen der Daten und Schreiben in anderem Format
10.7.4 Auf Ereignisse horchen
10.7.5 Zugriff auf die gesamte Windows-Registry

10.8 Musik abspielen

10.8.1 Die Arbeit mit AudioClip
10.8.2 Java Sound API

10.9 Annotationen

10.9.1 Annotationstypen @Override, @Deprecated, @SuppressWarnings
10.9.2 Annotationen für Web-Services

10.10 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

11 Threads und nebenläufige Programmierung

11.1 Nebenläufigkeit

11.1.1 Threads und Prozesse
11.1.2 Wie parallele Programme die Geschwindigkeit steigern können
11.1.3 Was Java für Nebenläufigkeit alles bietet

11.2 Threads erzeugen

11.2.1 Threads über die Schnittstelle Runnable implementieren
11.2.2 Thread mit Runnable starten
11.2.3 Der Name eines Threads
11.2.4 Die Klasse Thread erweitern
11.2.5 Wer bin ich?

11.3 Die Zustände eines Threads

11.3.1 Threads schlafen
11.3.2 Mit yield() auf Rechenzeit verzichten
11.3.3 Das Ende eines Threads
11.3.4 UncaughtExceptionHandler für unbehandelte Ausnahmen
11.3.5 Einen Thread höflich mit Interrupt beenden
11.3.6 Der stop() von außen und die Rettung mit ThreadDeath
11.3.7 Ein Rendezvous mit join()
11.3.8 Barrier und Austausch mit Exchanger
11.3.9 Arbeit niederlegen und wieder aufnehmen
11.3.10 Priorität
11.3.11 Der Thread als Dämon

11.4 Der Ausführer (Executor) kommt

11.4.1 Die Schnittstelle Executor
11.4.2 Die Thread-Pools
11.4.3 Threads mit Rückgabe über Callable
11.4.4 Mehrere Callable abarbeiten
11.4.5 Mit ScheduledExecutorService wiederholende Ausgaben und Zeitsteuerungen

11.5 Synchronisation über kritische Abschnitte

11.5.1 Gemeinsam genutzte Daten
11.5.2 Probleme beim gemeinsamen Zugriff und kritische Abschnitte
11.5.3 Punkte parallel initialisieren
11.5.4 i++ sieht atomar aus, ist es aber nicht
11.5.5 Kritische Abschnitte schützen
11.5.6 Schützen mit ReentrantLock
11.5.7 Synchronisieren mit synchronized
11.5.8 Synchronized-Methoden der Klasse StringBuffer
11.5.9 Mit synchronized synchronisierte Blöcke
11.5.10 Dann machen wir doch gleich alles synchronisiert!
11.5.11 Lock-Freigabe im Fall von Exceptions
11.5.12 Mit synchronized nachträglich synchronisieren
11.5.13 Monitore sind reentrant – gut für die Geschwindigkeit
11.5.14 Synchronisierte Methodenaufrufe zusammenfassen
11.5.15 Deadlocks

11.6 Synchronisation über Warten und Benachrichtigen

11.6.1 Die Schnittstelle Condition
11.6.2 It’s Disco-Time
11.6.3 Warten mit wait() und Aufwecken mit notify()
11.6.4 Falls der Lock fehlt: IllegalMonitorStateException
11.6.5 Semaphor

11.7 Atomare Operationen und frische Werte mit volatile

11.7.1 Der Modifizierer volatile bei Objekt-/Klassenvariablen
11.7.2 Das Paket java.util.concurrent.atomic

11.8 Mit dem Thread verbundene Variablen

11.8.1 ThreadLocal
11.8.2 InheritableThreadLocal

11.9 Gruppen von Threads in einer Thread-Gruppe

11.9.1 Aktive Threads in der Umgebung
11.9.2 Etwas über die aktuelle Thread-Gruppe herausfinden
11.9.3 Threads in einer Thread-Gruppe anlegen
11.9.4 Methoden von Thread und ThreadGroup im Vergleich

11.10 Zeitgesteuerte Abläufe

11.10.1 Die Klassen Timer und TimerTask
11.10.2 Job-Scheduler Quartz

11.11 Einen Abbruch der virtuellen Maschine erkennen

11.12 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

12 Datenstrukturen und Algorithmen

12.1 Datenstrukturen und die Collection-API

12.1.1 Designprinzip mit Schnittstellen, abstrakten und 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 Auswahlkriterium ArrayList oder LinkedList
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 equals(), hashCode() und IdentityHashMap
12.8.4 Das Problem von veränderbaren Elementen
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 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 Methodenübersicht
12.12.4 Primzahlen in einem BitSet verwalten
Galileo Computing - Zum Seitenanfang

13 Raum und Zeit

13.1 Weltzeit

13.2 Wichtige Datum-Klassen im Überblick

13.3 Sprachen der Länder

13.3.1 Sprachen und Regionen über Locale-Objekte

13.4 Internationalisierung und Lokalisierung

13.4.1 ResourceBundle-Objekte und Ressource-Dateien
13.4.2 Ressource-Dateien zur Lokalisierung
13.4.3 Die Klasse ResourceBundle
13.4.4 Ladestrategie für ResourceBundle-Objekte

13.5 Die Klasse Date

13.5.1 Objekte erzeugen und Methoden nutzen
13.5.2 Date-Objekte nicht immutable

13.6 Calendar und GregorianCalendar

13.6.1 Die abstrakte Klasse Calendar
13.6.2 Der gregorianische Kalender
13.6.3 Ostertage
13.6.4 Abfragen und Setzen von Datumselementen

13.7 Formatieren und Parsen von Datumsangaben

13.7.1 Ausgaben mit printf()
13.7.2 Mit DateFormat und SimpleDateFormat formatieren
13.7.3 Parsen von Datumswerten

13.8 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

14 Dateien und Datenströme

14.1 Datei und Verzeichnis

14.1.1 Dateien und Verzeichnisse mit der Klasse File
14.1.2 Verzeichnis oder Datei? Existiert es?
14.1.3 Verzeichnis- und Dateieigenschaften/-attribute
14.1.4 Wurzelverzeichnis, Laufwerksnamen, Plattenspeicher
14.1.5 Umbenennen und Verzeichnisse anlegen
14.1.6 Verzeichnisse listen und Dateien filtern
14.1.7 Dateien berühren, neue Dateien anlegen, temporäre Dateien
14.1.8 Dateien und Verzeichnisse löschen
14.1.9 Verzeichnisse nach Dateien iterativ durchsuchen
14.1.10 URL- und URI-Objekte aus einem File-Objekt ableiten
14.1.11 Mit Locking Dateien sperren
14.1.12 Sicherheitsprüfung

14.2 Dateien mit wahlfreiem Zugriff

14.2.1 Ein RandomAccessFile zum Lesen und Schreiben öffnen
14.2.2 Aus dem RandomAccessFile lesen
14.2.3 Schreiben mit RandomAccessFile
14.2.4 Die Länge des RandomAccessFile
14.2.5 Hin und her in der Datei

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

14.3.1 Mit dem FileWriter Texte in Dateien schreiben
14.3.2 Zeichen mit der Klasse FileReader lesen
14.3.3 Kopieren mit FileOutputStream und FileInputStream
14.3.4 Das FileDescriptor-Objekt

14.4 Basisklassen für die Ein-/Ausgabe

14.4.1 Die abstrakten Basisklassen
14.4.2 Übersicht über Ein-/Ausgabeklassen
14.4.3 Die abstrakte Basisklasse OutputStream
14.4.4 Die Schnittstellen Closeable und Flushable
14.4.5 Ein Datenschlucker
14.4.6 Die abstrakte Basisklasse InputStream
14.4.7 Ressourcen aus dem Klassenpfad und aus Jar–Archiven laden
14.4.8 Ströme mit SequenceInputStream zusammensetzen
14.4.9 Die abstrakte Basisklasse Writer
14.4.10 Die Schnittstelle Appendable
14.4.11 Die abstrakte Basisklasse Reader

14.5 Formatierte Textausgaben

14.5.1 Die Klassen PrintWriter und PrintStream
14.5.2 System.out, System.err und System.in
14.5.3 Geschützte Passwort-Eingaben mit der Klasse Console

14.6 Schreiben und Lesen aus Strings und Byte-Feldern

14.6.1 Mit dem StringWriter ein String-Objekt füllen
14.6.2 CharArrayWriter
14.6.3 StringReader und CharArrayReader
14.6.4 Mit ByteArrayOutputStream in ein Byte-Feld schreiben
14.6.5 Mit ByteArrayInputStream aus einem Byte-Feld lesen

14.7 Datenströme filtern und verketten

14.7.1 Streams als Filter verketten
14.7.2 Gepufferte Ausgaben mit BufferedWriter/BufferedOutputStream
14.7.3 Gepufferte Eingaben mit BufferedReader/BufferedInputStream
14.7.4 LineNumberReader zählt automatisch Zeilen mit
14.7.5 Daten mit der Klasse PushbackReader zurücklegen
14.7.6 DataOutputStream/DataInputStream
14.7.7 Basisklassen für Filter
14.7.8 Die Basisklasse FilterWriter
14.7.9 Ein LowerCaseWriter
14.7.10 Eingaben mit der Klasse FilterReader filtern

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

14.8.1 Datenkonvertierung durch den OutputStreamWriter
14.8.2 Automatische Konvertierungen mit dem InputStreamReader

14.9 Kommunikation zwischen Threads mit Pipes

14.9.1 PipedOutputStream und PipedInputStream
14.9.2 PipedWriter und PipedReader

14.10 Datenkompression

14.10.1 Java-Unterstützung beim Komprimieren
14.10.2 Datenströme komprimieren
14.10.3 Zip-Archive
14.10.4 Jar-Archive

14.11 Prüfsummen

14.11.1 Die Schnittstelle Checksum
14.11.2 Die Klasse CRC32
14.11.3 Die Adler32-Klasse

14.12 Persistente Objekte und Serialisierung

14.12.1 Objekte mit der Standard-Serialisierung speichern und lesen
14.12.2 Zwei einfache Anwendungen der Serialisierung
14.12.3 Die Schnittstelle Serializable
14.12.4 Nicht serialisierbare Attribute aussparen
14.12.5 Das Abspeichern selbst in die Hand nehmen
14.12.6 Tiefe Objektkopien
14.12.7 Versionenverwaltung und die SUID
14.12.8 Wie die ArrayList serialisiert
14.12.9 Probleme mit der Serialisierung
14.12.10 Serialisieren in XML-Dateien
14.12.11 JavaBeans Persistence
14.12.12 XStream

14.13 Tokenizer

14.13.1 StreamTokenizer
14.13.2 CSV-Dateien verarbeiten

14.14 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

15 Die eXtensible Markup Language (XML)

15.1 Auszeichnungssprachen

15.1.1 Die Standard Generalized Markup Language (SGML)
15.1.2 Extensible Markup Language (XML)

15.2 Eigenschaften von XML-Dokumenten

15.2.1 Elemente und Attribute
15.2.2 Beschreibungssprache für den Aufbau von XML-Dokumenten
15.2.3 Schema – eine Alternative zu DTD
15.2.4 Namensraum (Namespace)
15.2.5 XML-Applikationen

15.3 Die Java-APIs für XML

15.3.1 Das Document Object Model (DOM)
15.3.2 Simple API for XML Parsing (SAX)
15.3.3 Pull-API StAX
15.3.4 Java Document Object Model (JDOM)
15.3.5 JAXP als Java-Schnittstelle zu XML
15.3.6 DOM-Bäume einlesen mit JAXP

15.4 Serielle Verarbeitung mit StAX

15.4.1 Unterschiede der Verarbeitungsmodelle
15.4.2 XML-Dateien mit dem Cursor-Verfahren lesen
15.4.3 XML-Dateien mit dem Iterator-Verfahren verarbeiten
15.4.4 Mit Filtern arbeiten
15.4.5 XML-Dokumente schreiben

15.5 Serielle Verarbeitung von XML mit SAX

15.5.1 Schnittstellen von SAX
15.5.2 SAX-Parser erzeugen
15.5.3 Operationen der Schnittstelle ContentHandler
15.5.4 ErrorHandler und EntityResolver

15.6 XML-Dateien mit JDOM verarbeiten

15.6.1 JDOM beziehen
15.6.2 Paketübersicht
15.6.3 Die Document-Klasse
15.6.4 Eingaben aus der Datei lesen
15.6.5 Das Dokument im XML-Format ausgeben
15.6.6 Der Dokumenttyp
15.6.7 Elemente
15.6.8 Zugriff auf Elementinhalte
15.6.9 Liste mit Unterelementen erzeugen
15.6.10 Neue Elemente einfügen und ändern
15.6.11 Attributinhalte lesen und ändern
15.6.12 XPath

15.7 Transformationen mit XSLT

15.7.1 Templates und XPath als Kernelemente von XSLT
15.7.2 Umwandlung von XML-Dateien mit JDOM und JAXP

15.8 Java Architecture for XML Binding (JAXB)

15.8.1 Beans für JAXB aufbauen
15.8.2 JAXBContext und die Marshaller/Unmarshaller
15.8.3 Weitere JAXB-Annotationen

15.9 HTML-Dokumente einlesen

15.10 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

16 Grafische Oberflächen mit Swing

16.1 Das Abstract Window Toolkit und Swing

16.1.1 SwingSet-Demos
16.1.2 Abstract Window Toolkit (AWT)
16.1.3 Java Foundation Classes
16.1.4 Was Swing von AWT unterscheidet
16.1.5 Die Klasse Toolkit

16.2 Fenster unter grafischen Oberflächen

16.2.1 Swing-Fenster darstellen
16.2.2 Fenster schließbar machen – setDefaultCloseOperation()
16.2.3 AWT-Fenster darstellen
16.2.4 Sichtbarkeit des Fensters
16.2.5 Größe und Position des Fensters verändern
16.2.6 Unterklassen der Fenster-Klassen bilden
16.2.7 Fenster- und Dialog-Dekoration, Transparenz
16.2.8 Dynamisches Layout während einer Größenänderung

16.3 Beschriftungen (JLabel)

16.3.1 Mehrzeiliger Text, HTML in der Darstellung

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

16.5 Es tut sich was – Ereignisse beim AWT

16.5.1 Die Klasse AWTEvent
16.5.2 Events auf verschiedenen Ebenen
16.5.3 Swings Ereignisquellen und Horcher (Listener)
16.5.4 Listener implementieren
16.5.5 Listener bei dem Ereignisauslöser anmelden/abmelden
16.5.6 Aufrufen der Listener im AWT-Event-Thread
16.5.7 Adapterklassen nutzen
16.5.8 Innere Mitgliedsklassen und innere anonyme Klassen

16.6 Schaltflächen

16.6.1 Normale Schaltflächen (JButton)
16.6.2 Der aufmerksame ActionListener
16.6.3 Basisklasse AbstractButton
16.6.4 Wechselknopf (JToggleButton)

16.7 Swing Action

16.8 JComponent und Component als Basis aller Komponenten

16.8.1 Tooltips
16.8.2 Rahmen (Border)
16.8.3 Fokus und Navigation
16.8.4 Ereignisse jeder Komponente
16.8.5 Die Größe und Position einer Komponente
16.8.6 Komponenten-Ereignisse
16.8.7 Hinzufügen von Komponenten
16.8.8 UI-Delegate – der wahre Zeichner
16.8.9 Undurchsichtige (opake) Komponente
16.8.10 Properties und Listener für Änderungen

16.9 Container

16.9.1 Standardcontainer (JPanel)
16.9.2 Bereich mit automatischen Rollbalken (JScrollPane)
16.9.3 Reiter (JTabbedPane)
16.9.4 Teilungs-Komponente (JSplitPane)

16.10 Alles Auslegungssache: die Layoutmanager

16.10.1 Übersicht über Layoutmanager
16.10.2 Zuweisen eines Layoutmanagers
16.10.3 Im Fluss mit FlowLayout
16.10.4 Mit BorderLayout in allen Himmelsrichtungen
16.10.5 Rasteranordnung mit GridLayout
16.10.6 Der GridBagLayout-Manager
16.10.7 Null-Layout
16.10.8 BoxLayout
16.10.9 Weitere Layoutmanager

16.11 Rollbalken und Schieberegler

16.11.1 Schieberegler (JSlider)
16.11.2 Rollbalken (JScrollBar)

16.12 Kontrollfelder, Optionsfelder, Kontrollfeldgruppen

16.12.1 Kontrollfelder (JCheckBox)
16.12.2 ItemSelectable, ItemListener und das ItemEvent
16.12.3 Sich gegenseitig ausschließende Optionen (JRadioButton)

16.13 Fortschritte bei Operationen überwachen

16.13.1 Fortschrittsbalken (JProgressBar)
16.13.2 Dialog mit Fortschrittsanzeige (ProgressMonitor)

16.14 Menüs und Symbolleisten

16.14.1 Die Menüleisten und die Einträge
16.14.2 Menüeinträge definieren
16.14.3 Einträge durch Action-Objekte beschreiben
16.14.4 Mit der Tastatur: Mnemonics und Shortcut
16.14.5 Der Tastatur-Shortcut (Accelerator)
16.14.6 Tastenkürzel (Mnemonics)
16.14.7 Symbolleisten alias Toolbars
16.14.8 Popup-Menüs
16.14.9 System-Tray nutzen

16.15 Das Model-View-Controller-Konzept

16.16 Auswahlmenüs, Listen und Spinner

16.16.1 Auswahlmenü (JComboBox)
16.16.2 Zuordnung einer Taste mit einem Eintrag
16.16.3 Datumsauswahl
16.16.4 Listen (JList)
16.16.5 Drehfeld (JSpinner)

16.17 Texteingabefelder

16.17.1 Text in einer Eingabezeile
16.17.2 Die Oberklasse der Text-Komponenten (JTextComponent)
16.17.3 Geschützte Eingaben (JPasswordField)
16.17.4 Validierende Eingabefelder (JFormattedTextField)
16.17.5 Einfache mehrzeilige Textfelder (JTextArea)
16.17.6 Editor-Klasse (JEditorPane)

16.18 Tabellen (JTable)

16.18.1 Ein eigenes Tabellen-Model
16.18.2 Basisklasse für eigene Modelle (AbstractTableModel)
16.18.3 Vorgefertigtes Standard-Modell (DefaultTableModel)
16.18.4 Ein eigener Renderer für Tabellen
16.18.5 Zell-Editoren
16.18.6 Größe und Umrandung der Zellen
16.18.7 Spalteninformationen
16.18.8 Tabellenkopf von Swing-Tabellen
16.18.9 Selektionen einer Tabelle
16.18.10 Automatisches Sortieren und Filtern mit RowSorter

16.19 Bäume (JTree)

16.19.1 JTree und sein TreeModel und TreeNode
16.19.2 Selektionen bemerken
16.19.3 Das TreeModel von JTree

16.20 JRootPane und JDesktopPane

16.20.1 Wurzelkomponente der Top-Level-Komponenten (JRootPane)
16.20.2 JDesktopPane und die Kinder JInternalFrame

16.21 Dialoge und Window-Objekte

16.21.1 JWindow und JDialog
16.21.2 Modal oder nicht-modal
16.21.3 Standarddialoge mit JOptionPane
16.21.4 Der Dateiauswahldialog

16.22 Flexibles Java-Look-and-Feel

16.22.1 Look and Feel global setzen
16.22.2 UIManager
16.22.3 Windowsoptik mit JGoodies Looks verbessern

16.23 Die Zwischenablage (Clipboard)

16.23.1 Clipboard-Objekte
16.23.2 Auf den Inhalt zugreifen mit Transferable
16.23.3 DataFlavor ist das Format der Daten in der Zwischenablage
16.23.4 Einfügungen in der Zwischenablage erkennen
16.23.5 Drag

16.24 Undo durchführen

16.25 AWT, Swing und die Threads

16.25.1 Ereignisschlange (EventQueue) und AWT-Event-Thread
16.25.2 Swing ist nicht Thread-sicher
16.25.3 invokeLater() und invokeAndWait()
16.25.4 SwingWorker
16.25.5 Eigene Ereignisse in die Queue setzen
16.25.6 Auf alle Ereignisse hören

16.26 Barrierefreiheit mit der Java Accessibility API

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

16.28 Alternativen zu AWT und Swing

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

16.29 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

17 Grafikprogrammierung

17.1 Grundlegendes zum Zeichnen

17.1.1 Die paint()-Methode für das AWT-Frame
17.1.2 Zeichnen von Inhalten mit JFrame
17.1.3 Auffordern zum Neuzeichnen mit repaint()
17.1.4 Grundbegriffe: Koordinaten, Punkte, Pixel
17.1.5 Die ereignisorientierte Programmierung ändert Fensterinhalte
17.1.6 Java 2D-API

17.2 Einfache Zeichenmethoden

17.2.1 Linien
17.2.2 Rechtecke
17.2.3 Ovale und Kreisbögen
17.2.4 Polygone und Polylines

17.3 Zeichenketten schreiben und Fonts

17.3.1 Zeichenfolgen schreiben
17.3.2 Die Font-Klasse
17.3.3 Einen neuen Font aus einem gegebenen Font ableiten
17.3.4 Zeichensätze des Systems ermitteln
17.3.5 Neue TrueType-Fonts in Java nutzen
17.3.6 Font-Metadaten durch FontMetrics

17.4 Geometrische Objekte

17.4.1 Die Schnittstelle Shape
17.4.2 Kreisförmiges
17.4.3 Kurviges
17.4.4 Area und die konstruktive Flächengeometrie
17.4.5 Pfade
17.4.6 Punkt in einer Form, Schnitt von Linien, Abstand Punkt/Linie

17.5 Das Innere und Äußere einer Form

17.5.1 Farben und die Paint-Schnittstelle
17.5.2 Farben mit der Klasse Color
17.5.3 Die Farben des Systems über SystemColor
17.5.4 Composite und Xor
17.5.5 Dicke und Art der Linien von Formen bestimmen über Stroke

17.6 Bilder

17.6.1 Eine Übersicht über die Bilder-Bibliotheken
17.6.2 Bilder mit ImageIO lesen
17.6.3 Ein Bild zeichnen
17.6.4 Programm-Icon/Fenster-Icon setzen
17.6.5 Splash-Screen
17.6.6 Bilder im Speicher erzeugen
17.6.7 Pixel für Pixel auslesen und schreiben
17.6.8 Bilder skalieren
17.6.9 Schreiben mit ImageIO
17.6.10 Asynchrones Laden mit getImage() und dem MediaTracker

17.7 Weitere Eigenschaften von Graphics

17.7.1 Eine Kopie von Graphics erstellen
17.7.2 Koordinatensystem verschieben
17.7.3 Beschnitt (Clipping)
17.7.4 Zeichenhinweise durch RenderingHints
17.7.5 Transformationen mit einem AffineTransform-Objekt

17.8 Drucken

17.8.1 Drucken der Inhalte
17.8.2 Bekannte Drucker

17.9 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

18 Netzwerkprogrammierung

18.1 Grundlegende Begriffe

18.1.1 Internet-Standards und RFC

18.2 URI und URL

18.2.1 URI
18.2.2 Die Klasse URL
18.2.3 Informationen über eine URL
18.2.4 Der Zugriff auf die Daten über die Klasse URL
18.2.5 Verbindungen durch einen Proxy-Server

18.3 Die Klasse URLConnection

18.3.1 Methoden und Anwendung von URLConnection
18.3.2 Protokoll- und Content-Handler
18.3.3 Im Detail: vom URL zur URLConnection
18.3.4 Der Protokoll-Handler für Jar-Dateien
18.3.5 Basic Authentication/Proxy-Authentifizierung

18.4 Mit GET und POST Daten übergeben

18.4.1 Kodieren der Parameter für Serverprogramme
18.4.2 Eine Suchmaschine ansprechen

18.5 Host- und IP-Adressen

18.5.1 Lebt der Rechner?
18.5.2 IP-Adresse des lokalen Hosts
18.5.3 Das Netz ist Klasse ...

18.6 NetworkInterface

18.7 Mit dem Socket zum Server

18.7.1 Das Netzwerk ist der Computer
18.7.2 Sockets
18.7.3 Eine Verbindung zum Server aufbauen
18.7.4 Server unter Spannung: die Ströme
18.7.5 Die Verbindung wieder abbauen
18.7.6 Informationen über den Socket
18.7.7 Reine Verbindungsdaten über SocketAddress

18.8 Client-Server-Kommunikation

18.8.1 Warten auf Verbindungen
18.8.2 Ein Multiplikationsserver
18.8.3 Blockierendes Lesen
18.8.4 Von außen erreichbar sein

18.9 Apache Jakarta Commons HttpClient und Net

18.9.1 Jakarta Commons HttpClient
18.9.2 Jakarta Commons Net

18.10 Arbeitsweise eines Webservers

18.10.1 Das Hypertext Transfer Protocol (HTTP)
18.10.2 Anfragen an den Server
18.10.3 Die Antworten vom Server
18.10.4 Webserver mit com.sun.net.httpserver.HttpServer

18.11 Datagram-Sockets

18.11.1 Die Klasse DatagramSocket
18.11.2 Datagramme und die Klasse DatagramPacket
18.11.3 Auf ein hereinkommendes Paket warten
18.11.4 Ein Paket zum Senden vorbereiten
18.11.5 Methoden der Klasse DatagramPacket
18.11.6 Das Paket senden

18.12 E-Mail

18.12.1 Wie eine E-Mail um die Welt geht
18.12.2 Das Simple Mail Transfer Protocol und RFC 822
18.12.3 POP (Post Office Protocol)
18.12.4 Die JavaMail API
18.12.5 E-Mails mittels POP3 abrufen
18.12.6 E-Mails versenden
18.12.7 Ereignisse und Suchen

18.13 Tiefer liegende Netzwerkeigenschaften

18.13.1 Internet Control Message Protocol (ICMP)
18.13.2 MAC-Adresse

18.14 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

19 Verteilte Programmierung mit RMI und Web–Services

19.1 Entfernte Objekte und Methoden

19.1.1 Stellvertreter helfen bei entfernten Methodenaufrufen
19.1.2 Standards für entfernte Objekte

19.2 Java Remote Method Invocation

19.2.1 Zusammenspiel von Server, Registry und Client
19.2.2 Wie die Stellvertreter die Daten übertragen
19.2.3 Probleme mit entfernten Methoden
19.2.4 Nutzen von RMI bei Middleware-Lösungen
19.2.5 Zentrale Klassen und Schnittstellen
19.2.6 Entfernte und lokale Objekte im Vergleich

19.3 Auf der Serverseite

19.3.1 Entfernte Schnittstelle deklarieren
19.3.2 Remote-Objekt-Implementierung
19.3.3 Stellvertreterobjekte
19.3.4 Der Namensdienst (RegistryRegistry)
19.3.5 Remote-Objekt-Implementierung exportieren und beim Namensdienst anmelden
19.3.6 Einfaches Logging
19.3.7 Aufräumen mit dem DGC

19.4 Auf der Clientseite

19.5 Entfernte Objekte übergeben und laden

19.5.1 Klassen vom RMI-Klassenlader nachladen

19.6 Weitere Eigenschaften von RMI

19.6.1 RMI und CORBA
19.6.2 RMI über HTTP getunnelt
19.6.3 Automatische Remote-Objekt-Aktivierung

19.7 Daily Soap

19.7.1 SOAP-Protokoll
19.7.2 Die technische Realisierung
19.7.3 SOAP-Implementierungen
19.7.4 @WebService in Java 6
19.7.5 Einen Web-Service definieren
19.7.6 Web-Services veröffentlichen
19.7.7 Einen JAX-WS-Client implementieren

19.8 Java Message Service (JMSJMS)

19.9 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

20 JavaServer Pages und Servlets

20.1 Dynamisch generierte Webseiten

20.1.1 Was sind Servlets?
20.1.2 Was sind JavaServer Pages?

20.2 Servlets und JSPs mit Tomcat entwickeln

20.2.1 Servlet-Container
20.2.2 Entwicklung der Servlet-/JSP-Spezifikationen
20.2.3 Webserver mit Servlet-Funktionalität
20.2.4 Tomcat installieren
20.2.5 Ablageort für eigene JSPs
20.2.6 Web-Applikationen
20.2.7 Zuordnung von Web-Applikationen zu physikalischen Verzeichnissen
20.2.8 Web-Projekt mit Eclipse IDE for Java EE Developers entwickeln

20.3 Statisches und Dynamisches

20.3.1 Statischer Template-Code
20.3.2 Dynamische Inhalte
20.3.3 Kommentare

20.4 Die Expression Language (EL)

20.4.1 Operatoren der EL
20.4.2 Literale
20.4.3 Implizite EL-Objekte

20.5 Formulardaten

20.5.1 Einen Parameter auslesen
20.5.2 HTML-Formulare

20.6 Auf Beans zurückgreifen

20.6.1 Beans in JSPs anlegen
20.6.2 Properties einer Bean im EL-Ausdruck erfragen
20.6.3 Properties mit <jsp:setProperty> setzen
20.6.4 Bean-Klasse zum Testen von E-Mail-Adressen
20.6.5 Parameterwerte in Bean übertragen

20.7 JSP-Tag-Libraries

20.7.1 Standard Tag Library (JSTL)

20.8 Einbinden und Weiterleiten

20.8.1 Einbinden von Inhalten
20.8.2 Forward und Redirect
20.8.3 Applets einbinden

20.9 Scripting-Elemente in JSPs

20.9.1 Scriptlets
20.9.2 JSP-Ausdrücke
20.9.3 JSP-Deklarationen
20.9.4 Quoting
20.9.5 Entsprechende XML-Tags
20.9.6 Implizite Objekte für Scriptlets und JSP-Ausdrücke

20.10 JSP-Direktiven

20.10.1 page-Direktiven im Überblick
20.10.2 Mit JSPs Bilder generieren

20.11 Sitzungsverfolgung (Session Tracking)

20.11.1 Lösungen für Sitzungsverfolgung
20.11.2 Auf Session-Dateien zurückgreifen

20.12 Servlets

20.12.1 Servlets compilieren
20.12.2 Servlet-Mapping
20.12.3 Der Lebenszyklus eines Servlets
20.12.4 Mehrere Anfragen beim Servlet und die Thread-Sicherheit
20.12.5 Servlets und Sessions
20.12.6 Weiterleiten und Einbinden von Servlet-Inhalten

20.13 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

21 Applets

21.1 Applets in der Wiege von Java

21.1.1 (J)Applet und Applikationen
21.1.2 Das erste Hallo-Applet
21.1.3 HTML Converter
21.1.4 Fehler in Applets finden

21.2 Die Applet-API

21.2.1 Die Zyklen eines Applets
21.2.2 Parameter an das Applet übergeben
21.2.3 Wie das Applet den Browser-Inhalt ändern kann
21.2.4 Den Ursprung des Applets erfragen
21.2.5 Datenaustausch zwischen Applets
21.2.6 Was ein Applet alles darf
21.2.7 Ist Java im Browser aktiviert?
21.2.8 Applet unter Netscape oder Microsoft Internet Explorer?

21.3 Webstart

Galileo Computing - Zum Seitenanfang

22 Midlets und die Java ME

22.1 Java Platform, Micro Edition (Java ME)

22.2 Konfigurationen

22.2.1 Connected Limited Device Configuration (CLDC)
22.2.2 Connected Device Configuration (CDC)

22.3 Profile

22.3.1 Mobile Information Device Profile (MIDP)
22.3.2 Weitere Profile

22.4 Wireless Toolkits

22.4.1 Sun Java Wireless Toolkit for CLDC
22.4.2 Eclipse-Plugin

22.5 Die Midlet-API

22.5.1 Paketstruktur Mobile Information Device Profile (2.0)

22.6 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

23 Datenbankmanagement mit JDBC

23.1 Das relationale Modell

23.2 Datenbanken und Tools

23.2.1 HSQLDB
23.2.2 Weitere Datenbanken
23.2.3 Eclipse-Plugins zum Durchschauen von Datenbanken

23.3 JDBC und Datenbanktreiber

23.3.1 Treibertypen
23.3.2 JDBC-Versionen

23.4 Eine Beispielabfrage

23.4.1 Schritte zur Datenbankabfrage
23.4.2 Client für HSQLDB-Datenbank

23.5 Mit Java an eine Datenbank andocken

23.5.1 Der Treiber-Manager
23.5.2 Den Treiber laden
23.5.3 Eine Aufzählung aller Treiber
23.5.4 Log-Informationen
23.5.5 Verbindung zur Datenbank auf- und abbauen
23.5.6 DataSource
23.5.7 Gepoolte Verbindungen

23.6 Datenbankabfragen

23.6.1 Abfragen über das Statement-Objekt
23.6.2 Ergebnisse einer Abfrage in ResultSet
23.6.3 Java und SQL-Datentypen
23.6.4 Unicode in der Spalte korrekt auslesen
23.6.5 Eine SQL-NULL und wasNull() bei ResultSet
23.6.6 Wie viele Zeilen hat ein ResultSet?

23.7 Die Ausnahmen bei JDBC

23.8 Elemente einer Datenbank hinzufügen und aktualisieren

23.8.1 Batch-Updates

23.9 ResultSets in Bohnen durch RowSet

23.9.1 Die Schnittstelle RowSet
23.9.2 Implementierungen von RowSet
23.9.3 Der Typ CachedRowSet
23.9.4 Der Typ WebRowSet

23.10 Vorbereitete Anweisungen (Prepared Statements)

23.10.1 PreparedStatement-Objekte vorbereiten
23.10.2 Werte für die Platzhalter eines PreparedStatement

23.11 Transaktionen

23.12 Metadaten

23.12.1 Metadaten über die Tabelle
23.12.2 Informationen über die Datenbank

23.13 Einführung in SQL

23.13.1 Ein Rundgang durch SQL-Abfragen
23.13.2 Datenabfrage mit der Data Query Language (DQL)
23.13.3 Tabellen mit der Data Definition Language (DDL) anlegen

23.14 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

24 Reflection und Annotationen

24.1 Metadaten

24.1.1 Metadaten durch JavaDoc-Tags

24.2 Metadaten der Klassen mit dem Class-Objekt

24.2.1 An ein Class-Objekt kommen
24.2.2 Was das Class-Objekt beschreibt
24.2.3 Der Name der Klasse
24.2.4 instanceof mit Class-Objekten
24.2.5 Oberklassen finden
24.2.6 Implementierte Interfaces einer Klasse oder eines Interfaces
24.2.7 Modifizierer und die Klasse Modifier
24.2.8 Die Arbeit auf dem Feld

24.3 Attribute, Methoden und Konstruktoren

24.3.1 Reflections – Gespür für Attribute einer Klasse
24.3.2 Methoden einer Klasse erfragen
24.3.3 Properties einer Bean erfragen
24.3.4 Konstruktoren einer Klasse
24.3.5 Annotationen

24.4 Objekte erzeugen und manipulieren

24.4.1 Objekte erzeugen
24.4.2 Die Belegung der Variablen erfragen
24.4.3 Eine generische toString()-Funktion
24.4.4 Variablen setzen
24.4.5 Private Attribute ändern

24.5 Methoden aufrufen

24.5.1 Statische Methoden aufrufen
24.5.2 Dynamische Methodenaufrufe bei festen Methoden beschleunigen

24.6 Annotationen

24.6.1 Neue Annotationen definieren
24.6.2 Annotationen mit genau einem Element
24.6.3 Beliebige Schlüssel-Werte-Paare
24.6.4 Vorbelegte Elemente
24.6.5 Annotieren von Annotationstypen
24.6.6 Annotationen zur Laufzeit auslesen
24.6.7 Mögliche Nachteile von Annotationen
24.6.8 XDoclet

24.7 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

25 Logging und Monitoring

25.1 Logging mit Java

25.1.1 Logging-APIs
25.1.2 Logging mit log4j

25.2 Überwachen von Systemzuständen

25.3 MBean-Typen, MBean-Server und weitere Begriffe

25.3.1 MXBeans des Systems

25.4 Geschwätzige Programme und JConsole

25.4.1 JConsole

25.5 Der MBeanServer

25.6 Eine eigene Standard-MBean

25.6.1 Management-Schnittstelle
25.6.2 Implementierung der Managed-Ressource
25.6.3 Anmeldung beim Server
25.6.4 Eigene Bean in JConsole

25.7 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

26 Sicherheitskonzepte

26.1 Zentrale Elemente der Java-Sicherheit

26.1.1 Security-API der Java SE
26.1.2 Cryptographic Service Providers

26.2 Der Sandkasten (Sandbox)

26.3 Sicherheitsmanager (Security Manager)

26.3.1 Der Sicherheitsmanager bei Applets
26.3.2 Sicherheitsmanager aktivieren
26.3.3 Rechte durch Policy-Dateien vergeben
26.3.4 Erstellen von Rechtedateien mit dem grafischen Policy-Tool
26.3.5 Kritik an den Policies

26.4 Signierung

26.4.1 Warum signieren?
26.4.2 Digitale Ausweise und die Zertifizierungsstelle
26.4.3 Mit keytool Schlüssel erzeugen
26.4.4 Signieren mit jarsigner

26.5 Digitale Unterschriften

26.5.1 Die MDx-Reihe
26.5.2 Secure Hash Algorithm (SHA)
26.5.3 Mit der Security-API einen Fingerabdruck berechnen
26.5.4 Die Klasse MessageDigest

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

26.6.1 Den Schlüssel bitte
26.6.2 Verschlüsseln mit Cipher
26.6.3 Verschlüsseln von Datenströmen

26.7 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

27 Java Native Interface (JNI)

27.1 Java Native Interface und Invocation-API

27.2 Einbinden einer C-Funktion in ein Java-Programm

27.2.1 Schreiben des Java-Codes
27.2.2 Compilieren des Java-Programms
27.2.3 Erzeugen der Header-Datei
27.2.4 Implementierung der Funktion in C
27.2.5 Übersetzen der C-Programme und Erzeugen der dynamischen Bibliothek
27.2.6 Suchort der dynamischen Bibliothek

27.3 Nativ die Stringlänge ermitteln

27.4 Erweiterte JNI-Eigenschaften

27.4.1 Klassendefinitionen
27.4.2 Zugriff auf Attribute

27.5 Einfache Anbindung von existierenden Bibliotheken

27.5.1 C++ Klassen ansprechen
27.5.2 COM-Schnittstellen anzapfen

27.6 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

28 Dienstprogramme für die Java-Umgebung

28.1 Die Werkzeuge im Überblick

28.2 Java-Compiler

28.2.1 Bytecode-Compiler javac
28.2.2 Native Compiler
28.2.3 Java-Programme in ein natives ausführbares Programm einpacken

28.3 Der Java-Interpreter java

28.3.1 Der Unterschied zwischen java.exe und javaw.exe

28.4 Das Archivformat Jar

28.4.1 Das Dienstprogramm Jar benutzen
28.4.2 Das Manifest
28.4.3 Applikationen in Jar-Archiven starten
28.4.4 Applets in Jar-Archiven

28.5 Monitoringprogramme

28.5.1 jps
28.5.2 jstat
28.5.3 jmap
28.5.4 jstack

28.6 Ant

28.6.1 Bezug und Installation von Ant
28.6.2 Properties
28.6.3 Externe und vordefinierte Properties
28.6.4 Weitere Ant-Tasks
28.6.5 Das Obfuscator-Programm ProGuard

28.7 Weitere Dienstprogramme

28.7.1 Sourcecode Beautifier
28.7.2 Java-Programme als Systemdienst ausführen

28.8 Zum Weiterlesen



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

 Tipp
Zum Katalog: Coding for Fun





 Coding for Fun


 Buchempfehlungen
Zum Katalog: Objektorientierte Programmierung





 Objektorientierte
 Programmierung


Zum Katalog: Einstieg in Eclipse 3.4






 Einstieg in
 Eclipse 3.4


Zum Katalog: Java 6 lernen mit Eclipse






 Java 6 lernen
 mit Eclipse


Zum Katalog: NetBeans Platform 6






 NetBeans
 Platform 6


Zum Katalog: Java und XML






 Java und XML


Zum Katalog: Visual C# 2008






 Visual C# 2008


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Katalog: C++ von A bis Z






 C++ von A bis Z


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2009
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