Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.
 
Inhaltsverzeichnis
Vorwort
1 Neues in Java 8 und Java 7
2 Fortgeschrittene String-Verarbeitung
3 Threads und nebenläufige Programmierung
4 Datenstrukturen und Algorithmen
5 Raum und Zeit
6 Dateien, Verzeichnisse und Dateizugriffe
7 Datenströme
8 Die eXtensible Markup Language (XML)
9 Dateiformate
10 Grafische Oberflächen mit Swing
11 Grafikprogrammierung
12 JavaFX
13 Netzwerkprogrammierung
14 Verteilte Programmierung mit RMI
15 RESTful und SOAP-Web-Services
16 Technologien für die Infrastruktur
17 Typen, Reflection und Annotationen
18 Dynamische Übersetzung und Skriptsprachen
19 Logging und Monitoring
20 Sicherheitskonzepte
21 Datenbankmanagement mit JDBC
22 Java Native Interface (JNI)
23 Dienstprogramme für die Java-Umgebung
Stichwortverzeichnis

Buch bestellen
Ihre Meinung?

Spacer
 
Java SE 8 Standard-Bibliothek von Christian Ullenboom
Das Handbuch für Java-Entwickler
Buch: Java SE 8 Standard-Bibliothek

Java SE 8 Standard-Bibliothek

Die Fortsetzung des Java-Kultbuchs für Entwickler! Hier bekommen Sie umfassendes und kompetentes Praxiswissen zu den vielen Bibliotheken und Technologien in einem Band. Am Beispiel konkreter Java-Projekte zeigt Christian Ullenboom, was man wissen muss über Datenstrukturen und Algorithmen, Swing, JavaFX, Netaczwerk- und Grafikprogrammierung, RMI und Web-Services, JDBC, Reflection und Annotationen, Logging und Monitoring, Java Native Interface (JNI) und vieles mehr. Dieses Buch ist Ihr unersetzlicher Begleiter bei der täglichen Arbeit!
Nutzen Sie die HTML-Version (inkl. Syntax-Highlighting) zum Reinschnuppern oder als immer verfügbare Ergänzung zu Ihrem Buch.


 

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

Inhaltsverzeichnis

Vorwort

Organisation der Kapitel

 
Zum Seitenanfang

1   Neues in Java 8 und Java 7

1.1   Sprachänderungen in Java 8

1.1.1   Statische ausprogrammierte Methoden in Schnittstellen

1.1.2   Default-Methoden

1.1.3   Erweiterte Schnittstellen deklarieren und nutzen

1.1.4   Erweiterte Schnittstellen, Mehrfachvererbung und Mehrdeutigkeiten *

1.1.5   Bausteine bilden mit Default-Methoden *

1.2   Lambda-Ausdrücke und funktionale Programmierung

1.2.1   Code = Daten

1.2.2   Funktionale Schnittstellen und Lambda-Ausdrücke im Detail

1.2.3   Methoden-Referenz

1.2.4   Konstruktor-Referenz

1.2.5   Implementierung von Lambda-Ausdrücken

1.2.6   Funktionale Programmierung mit Java

1.2.7   Funktionale Schnittstelle aus dem java.util.function-Paket

1.2.8   Optional ist keine Nullnummer

1.2.9   Was ist jetzt so funktional?

1.2.10   Zum Weiterlesen

1.3   Bibliotheksänderungen in Java 8

1.4   JDK 8-HotSpot-JVM-Änderungen

1.5   Auf Java 7/8-Syntax mit NetBeans und Eclipse migrieren

1.5.1   Java 8-Syntax-Migration mit NetBeans

1.5.2   Java 8-Syntax-Migration mit Eclipse

1.5.3   File-Klassen auf NIO.2 umstellen

1.6   Zum Weiterlesen

 
Zum Seitenanfang

2   Fortgeschrittene String-Verarbeitung

2.1   Erweitere Zeicheneigenschaften

2.1.1   isXXX(….)-Methoden

2.1.2   Unicode-Blöcke

2.1.3   Unicode-Skripte

2.2   Reguläre Ausdrücke

2.2.1   Pattern.matches(…) bzw. String#matches(…)

2.2.2   Die Klassen Pattern und Matcher

2.2.3   Finden und nicht matchen

2.2.4   Gruppen

2.2.5   Gierige und nicht gierige Operatoren *

2.2.6   Mit MatchResult alle Ergebnisse einsammeln *

2.2.7   Suchen und Ersetzen mit Mustern

2.2.8   Hangman Version 2

2.3   Zerlegen von Zeichenketten

2.3.1   Zerlegen von Zeichensequenzen über String oder Pattern

2.3.2   Mehr vom Scanner

2.3.3   Die Klasse StringTokenizer *

2.3.4   BreakIterator als Zeichen-, Wort-, Zeilen- und Satztrenner *

2.3.5   StreamTokenizer *

2.4   Zeichenkodierungen, XML/HTML-Entities, Base64 *

2.4.1   Unicode und 8-Bit-Abbildungen

2.4.2   Kodierungen über die Klasse String vornehmen

2.4.3   Das Paket java.nio.charset und der Typ Charset

2.4.4   Konvertieren mit OutputStreamWriter-/InputStreamReader-Klassen

2.4.5   XML/HTML-Entities ausmaskieren

2.4.6   Base64-Kodierung

2.5   Ausgaben formatieren

2.5.1   Die Formatter-Klasse *

2.5.2   Formatieren mit Masken *

2.5.3   Format-Klassen

2.5.4   Zahlen, Prozente und Währungen mit NumberFormat und DecimalFormat formatieren *

2.5.5   MessageFormat und Pluralbildung mit ChoiceFormat

2.6   Sprachabhängiges Vergleichen und Normalisierung *

2.6.1   Die Klasse Collator

2.6.2   Effiziente interne Speicherung für die Sortierung

2.6.3   Normalisierung

2.7   Phonetische Vergleiche *

2.8   Zum Weiterlesen

 
Zum Seitenanfang

3   Threads und nebenläufige Programmierung

3.1   Threads erzeugen

3.1.1   Threads über die Schnittstelle Runnable implementieren

3.1.2   Thread mit Runnable starten

3.1.3   Die Klasse Thread erweitern

3.2   Thread-Eigenschaften und -Zustände

3.2.1   Der Name eines Threads

3.2.2   Wer bin ich?

3.2.3   Die Zustände eines Threads *

3.2.4   Schläfer gesucht

3.2.5   Mit yield() auf Rechenzeit verzichten

3.2.6   Der Thread als Dämon

3.2.7   Freiheit für den Thread – das Ende

3.2.8   Einen Thread höflich mit Interrupt beenden

3.2.9   UncaughtExceptionHandler für unbehandelte Ausnahmen

3.2.10   Der stop() von außen und die Rettung mit ThreadDeath *

3.2.11   Ein Rendezvous mit join(…) *

3.2.12   Arbeit niederlegen und wieder aufnehmen *

3.2.13   Priorität *

3.3   Der Ausführer (Executor) kommt

3.3.1   Die Schnittstelle Executor

3.3.2   Glücklich in der Gruppe – die Thread-Pools

3.3.3   Threads mit Rückgabe über Callable

3.3.4   Mehrere Callable abarbeiten

3.3.5   ScheduledExecutorService für wiederholende Ausgaben und Zeitsteuerungen nutzen

3.4   Synchronisation über kritische Abschnitte

3.4.1   Gemeinsam genutzte Daten

3.4.2   Probleme beim gemeinsamen Zugriff und kritische Abschnitte

3.4.3   Punkte nebenläufig initialisieren

3.4.4   i++ sieht atomar aus, ist es aber nicht *

3.4.5   Kritische Abschnitte schützen

3.4.6   Kritische Abschnitte mit ReentrantLock schützen

3.4.7   Synchronisieren mit synchronized

3.4.8   Synchronized-Methoden der Klasse StringBuffer *

3.4.9   Mit synchronized synchronisierte Blöcke

3.4.10   Dann machen wir doch gleich alles synchronisiert!

3.4.11   Lock-Freigabe im Fall von Exceptions

3.4.12   Deadlocks

3.4.13   Mit synchronized nachträglich synchronisieren *

3.4.14   Monitore sind reentrant – gut für die Geschwindigkeit *

3.4.15   Synchronisierte Methodenaufrufe zusammenfassen *

3.5   Synchronisation über Warten und Benachrichtigen

3.5.1   Die Schnittstelle Condition

3.5.2   It’s Disco-Time *

3.5.3   Warten mit wait(…) und Aufwecken mit notify()/notifyAll() *

3.5.4   Falls der Lock fehlt – IllegalMonitorStateException *

3.6   Datensynchronisation durch besondere Concurrency-Klassen *

3.6.1   Semaphor

3.6.2   Barrier und Austausch

3.6.3   Stop and go mit Exchanger

3.7   Atomare Operationen und frische Werte mit volatile *

3.7.1   Der Modifizierer volatile bei Objekt-/Klassenvariablen

3.7.2   Das Paket java.util.concurrent.atomic

3.8   Teile und herrsche mit Fork und Join *

3.8.1   Algorithmendesign per »teile und herrsche«

3.8.2   Nebenläufiges Lösen von D&C-Algorithmen

3.8.3   Fork und Join

3.9   CompletionStage und CompletableFuture *

3.10   Mit dem Thread verbundene Variablen *

3.10.1   ThreadLocal

3.10.2   InheritableThreadLocal

3.10.3   ThreadLocalRandom als schneller nebenläufiger Zufallszahlengenerator

3.10.4   ThreadLocal bei der Performance-Optimierung

3.11   Threads in einer Thread-Gruppe *

3.11.1   Aktive Threads in der Umgebung

3.11.2   Etwas über die aktuelle Thread-Gruppe herausfinden

3.11.3   Threads in einer Thread-Gruppe anlegen

3.11.4   Methoden von Thread und ThreadGroup im Vergleich

3.12   Zeitgesteuerte Abläufe

3.12.1   Die Typen Timer und TimerTask

3.12.2   Job-Scheduler Quartz

3.13   Einen Abbruch der virtuellen Maschine erkennen

3.13.1   Shutdown-Hook

3.13.2   Signale

3.14   Zum Weiterlesen

 
Zum Seitenanfang

4   Datenstrukturen und Algorithmen

4.1   Datenstrukturen und die Collection-API

4.1.1   Designprinzip mit Schnittstellen, abstrakten und konkreten Klassen

4.1.2   Die Basisschnittstellen Collection und Map

4.1.3   Die Utility-Klassen Collections und Arrays

4.1.4   Das erste Programm mit Container-Klassen

4.1.5   Die Schnittstelle Collection und Kernkonzepte

4.1.6   Schnittstellen, die Collection erweitern, und Map

4.1.7   Konkrete Container-Klassen

4.1.8   Generische Datentypen in der Collection-API

4.1.9   Die Schnittstelle Iterable und das erweiterte for

4.2   Listen

4.2.1   Erstes Listen-Beispiel

4.2.2   Auswahlkriterium ArrayList oder LinkedList

4.2.3   Die Schnittstelle List

4.2.4   ArrayList

4.2.5   LinkedList

4.2.6   Der Feld-Adapter Arrays.asList(…)

4.2.7   ListIterator *

4.2.8   toArray(…) von Collection verstehen – die Gefahr einer Falle erkennen

4.2.9   Primitive Elemente in Datenstrukturen verwalten

4.3   Mengen (Sets)

4.3.1   Ein erstes Mengen-Beispiel

4.3.2   Methoden der Schnittstelle Set

4.3.3   HashSet

4.3.4   TreeSet – die sortierte Menge

4.3.5   Die Schnittstellen NavigableSet und SortedSet

4.3.6   LinkedHashSet

4.4   Queues (Schlangen) und Deques

4.4.1   Queue-Klassen

4.4.2   Deque-Klassen

4.4.3   Blockierende Queues und Prioritätswarteschlangen

4.4.4   PriorityQueue

4.5   Stack (Kellerspeicher, Stapel)

4.5.1   Die Methoden von java.util.Stack

4.6   Assoziative Speicher

4.6.1   Die Klassen HashMap und TreeMap

4.6.2   Einfügen und Abfragen des Assoziativspeichers

4.6.3   Über die Bedeutung von equals(…) und hashCode() bei Elementen

4.6.4   Eigene Objekte hashen

4.6.5   LinkedHashMap und LRU-Implementierungen

4.6.6   IdentityHashMap

4.6.7   Das Problem veränderter Elemente

4.6.8   Aufzählungen und Ansichten des Assoziativspeichers

4.6.9   Die Arbeitsweise einer Hash-Tabelle *

4.6.10   Die Properties-Klasse

4.7   Mit einem Iterator durch die Daten wandern

4.8   Iterator-Schnittstelle

4.8.1   Der Iterator kann (eventuell auch) löschen

4.8.2   Operationen auf allen Elementen durchführen

4.8.3   Einen Zufallszahlen-Iterator schreiben

4.8.4   Iteratoren von Sammlungen, das erweiterte for und Iterable

4.8.5   Fail-Fast-Iterator und die ConcurrentModificationException

4.8.6   Die Schnittstelle Enumerator *

4.9   Algorithmen in Collections

4.9.1   Die Bedeutung von Ordnung mit Comparator und Comparable

4.9.2   Sortieren

4.9.3   Den größten und kleinsten Wert einer Collection finden

4.9.4   Nichtänderbare Datenstrukturen, immutable oder nur lesen?

4.9.5   Null Object Pattern und leere Sammlungen/Iteratoren zurückgeben

4.9.6   Echte typsichere Container

4.9.7   Mit der Halbierungssuche nach Elementen fahnden

4.9.8   Ersetzen, Kopieren, Füllen, Umdrehen, Rotieren *

4.9.9   Listen durchwürfeln *

4.9.10   Häufigkeit eines Elements *

4.9.11   Singletons *

4.9.12   nCopies(…) *

4.10   Datenstrukturen mit Änderungsmeldungen

4.10.1   Das Paket javafx.collections

4.10.2   Fabrikmethoden in FXCollections

4.10.3   Änderungen melden über InvalidationListener

4.10.4   Änderungen melden über XXXChangeListener

4.10.5   Change-Klassen

4.10.6   Weitere Hilfsmethoden einer ObservableList

4.10.7   Melden von Änderungen an Arrays

4.10.8   Transformierte FXCollections

4.10.9   Weitere statische Methoden in FXCollections

4.11   Stream-API

4.11.1   Stream erzeugen

4.11.2   Terminale Operationen

4.11.3   Intermediäre Operationen

4.11.4   Streams mit primitiven Werten

4.11.5   Stream-Beziehungen, AutoCloseable

4.11.6   Stream-Builder

4.11.7   Spliterator

4.11.8   Klasse StreamSupport

4.12   Spezielle threadsichere Datenstrukturen

4.12.1   Zu Beginn nur synchronisierte Datenstrukturen in Java 1.0

4.12.2   Nicht synchronisierte Datenstrukturen in der Standard-Collection-API

4.12.3   Nebenläufiger Assoziativspeicher und die Schnittstelle ConcurrentMap

4.12.4   ConcurrentLinkedQueue

4.12.5   CopyOnWriteArrayList und CopyOnWriteArraySet

4.12.6   Wrapper zur Synchronisation

4.12.7   Blockierende Warteschlangen

4.12.8   ArrayBlockingQueue und LinkedBlockingQueue

4.12.9   PriorityBlockingQueue

4.12.10   Transfer-Warteschlangen – TransferQueue und LinkedTransferQueue

4.13   Google Guava (Google Collections Library)

4.13.1   Beispiel Multi-Set und Multi-Map

4.13.2   Datenstrukturen aus Guava

4.13.3   Utility-Klassen von Guava

4.13.4   Prädikate

4.13.5   Transformationen

4.14   Die Klasse BitSet für Bitmengen *

4.14.1   Ein BitSet anlegen

4.14.2   BitSet füllen und Zustände erfragen

4.14.3   Mengenorientierte Operationen

4.14.4   Weitere Methoden von BitSet

4.14.5   Primzahlen in einem BitSet verwalten

4.15   Zum Weiterlesen

 
Zum Seitenanfang

5   Raum und Zeit

5.1   Weltzeit *

5.2   Wichtige Datum-Klassen im Überblick

5.2.1   Der 1.1.1970

5.2.2   System.currentTimeMillis()

5.2.3   Einfache Zeitumrechnungen durch TimeUnit

5.3   Sprachen der Länder

5.3.1   Sprachen und Regionen über Locale-Objekte

5.4   Internationalisierung und Lokalisierung

5.4.1   ResourceBundle-Objekte und Ressource-Dateien

5.4.2   Ressource-Dateien zur Lokalisierung

5.4.3   Die Klasse ResourceBundle

5.4.4   Ladestrategie für ResourceBundle-Objekte

5.4.5   Ladeprozess und Format anpassen *

5.5   Die Klasse Date

5.5.1   Objekte erzeugen und Methoden nutzen

5.5.2   Date-Objekte sind nicht immutable

5.6   Calendar und GregorianCalendar

5.6.1   Die abstrakte Klasse Calendar

5.6.2   Calendar nach Date und Millisekunden fragen

5.6.3   Abfragen und Setzen von Datumselementen über Feldbezeichner

5.6.4   Kalender-Typen *

5.6.5   Kalender-Exemplare bauen über den Calendar.Builder

5.6.6   Wie viele Tage hat der Monat, oder wie viele Monate hat ein Jahr? *

5.6.7   Wann beginnt die Woche und wann die erste Woche im Jahr? *

5.6.8   Der gregorianische Kalender

5.7   Zeitzonen in Java *

5.7.1   Zeitzonen durch die Klasse TimeZone repräsentieren

5.7.2   SimpleTimeZone

5.7.3   Methoden von TimeZone

5.9   Formatieren und Parsen von Datumsangaben

5.9.1   Ausgaben mit printf(…)

5.9.2   Ausgaben mit Calendar-Methoden getDisplayName(…) *

5.9.3   Mit DateFormat und SimpleDateFormat formatieren

5.9.4   Parsen von Datumswerten

5.10   Date-Time-API in Java 8

5.10.1   Datumsklasse LocalDate

5.10.2   Ostertage *

5.10.3   Die Klasse YearMonth

5.10.4   Die Klasse MonthDay

5.10.5   Aufzählung DayOfWeek und Month

5.10.6   Klasse LocalTime

5.10.7   Klasse LocalDateTime

5.10.8   Klasse Year

5.10.9   Zeitzonen-Klassen ZoneId und ZoneOffset

5.10.10   Temporale Klassen mit Zeitzoneninformationen

5.10.11   Klassen Period und Duration

5.10.12   Klasse Instant

5.10.13   Parsen und Formatieren von Datumszeitwerten

5.10.14   Das Paket java.time.temporal *

5.10.15   Konvertierungen zwischen der klassischen API und Date-Time-API

5.11   Die Default-Falle

5.12   Zum Weiterlesen

 
Zum Seitenanfang

6   Dateien, Verzeichnisse und Dateizugriffe

6.1   Alte und neue Welt in java.io und java.nio

6.1.1   java.io-Paket mit File-Klasse

6.1.2   NIO.2 und java.nio-Paket

6.2   Dateisysteme und Pfade

6.2.1   FileSystem und Path

6.2.2   Die Utility-Klasse Files

6.2.3   Dateien kopieren und verschieben

6.2.4   Dateiattribute *

6.2.5   Neue Dateien, Verzeichnisse, symbolische Verknüpfungen anlegen und löschen

6.2.6   MIME-Typen herausfinden *

6.2.7   Verzeichnislistings (DirectoryStream/Stream) und Filter *

6.2.8   Rekursives Ablaufen des Verzeichnisbaums *

6.2.9   Rekursiv nach Dateien/Ordnern suchen mit Files.find(…) *

6.2.10   Dateisysteme und Dateisystemattribute *

6.2.11   Verzeichnisse im Dateisystem überwachen *

6.3   Datei- und Verzeichnis-Operationen mit der Klasse File

6.3.1   Dateien und Verzeichnisse mit der Klasse File

6.3.2   Verzeichnis oder Datei? Existiert es?

6.3.3   Verzeichnis- und Dateieigenschaften/-attribute

6.3.4   Umbenennen und Verzeichnisse anlegen

6.3.5   Verzeichnisse auflisten und Dateien filtern

6.3.6   Dateien berühren, neue Dateien anlegen, temporäre Dateien

6.3.7   Dateien und Verzeichnisse löschen

6.3.8   Wurzelverzeichnis, Laufwerksnamen, Plattenspeicher *

6.3.9   URL-, URI- und Path-Objekte aus einem File-Objekt ableiten *

6.3.10   Mit Locking Dateien sperren *

6.3.11   Sicherheitsprüfung *

6.3.12   Zugriff auf SMB-Server mit jCIFS *

6.4   Dateien mit wahlfreiem Zugriff

6.4.1   Ein RandomAccessFile zum Lesen und Schreiben öffnen

6.4.2   Aus dem RandomAccessFile lesen

6.4.3   Schreiben mit RandomAccessFile

6.4.4   Die Länge des RandomAccessFile

6.4.5   Hin und her in der Datei

6.5   Wahlfreier Zugriff mit SeekableByteChannel und ByteBuffer *

6.5.1   SeekableByteChannel

6.5.2   ByteBuffer

6.5.3   Beispiel mit Path + SeekableByteChannel + ByteBuffer

6.5.4   FileChannel

6.6   Zum Weiterlesen

 
Zum Seitenanfang

7   Datenströme

7.1   Stream-Klassen für Bytes und Zeichen

7.1.1   Lesen aus Dateien und Schreiben in Dateien

7.1.2   Byteorientierte Datenströme über Files beziehen

7.1.3   Zeichenorientierte Datenströme über Files beziehen

7.1.4   Funktion von OpenOption bei den Files.newXXX(…)-Methoden

7.1.5   Ressourcen aus dem Klassenpfad und aus JAR‐Archiven laden

7.1.6   Die Schnittstellen Closeable, AutoCloseable und Flushable

7.2   Basisklassen für die Ein-/Ausgabe

7.2.1   Die abstrakten Basisklassen

7.2.2   Übersicht über Ein-/Ausgabeklassen

7.2.3   Die abstrakte Basisklasse OutputStream

7.2.4   Ein Datenschlucker *

7.2.5   Die abstrakte Basisklasse InputStream

7.2.6   Ströme mit SequenceInputStream zusammensetzen *

7.2.7   Die abstrakte Basisklasse Writer

7.2.8   Die Schnittstelle Appendable *

7.2.9   Die abstrakte Basisklasse Reader

7.3   Formatierte Textausgaben

7.3.1   Die Klassen PrintWriter und PrintStream

7.3.2   System.out, System.err und System.in

7.4   Die FileXXX-Stromklassen

7.4.1   Kopieren mit FileOutputStream und FileInputStream

7.4.2   Das FileDescriptor-Objekt *

7.4.3   Mit dem FileWriter Texte in Dateien schreiben

7.4.4   Zeichen mit der Klasse FileReader lesen

7.5   Schreiben und Lesen aus Strings und Byte-Feldern

7.5.1   Mit dem StringWriter ein String-Objekt füllen

7.5.2   CharArrayWriter

7.5.3   StringReader und CharArrayReader

7.5.4   Mit ByteArrayOutputStream in ein Byte-Feld schreiben

7.5.5   Mit ByteArrayInputStream aus einem Byte-Feld lesen

7.6   Datenströme filtern und verketten

7.6.1   Streams als Filter verketten (verschachteln)

7.6.2   Gepufferte Ausgaben mit BufferedWriter und BufferedOutputStream

7.6.3   Gepufferte Eingaben mit BufferedReader/BufferedInputStream

7.6.4   LineNumberReader zählt automatisch Zeilen mit *

7.6.5   Daten mit der Klasse PushbackReader zurücklegen *

7.6.6   DataOutputStream/DataInputStream *

7.6.7   Basisklassen für Filter *

7.6.8   Die Basisklasse FilterWriter *

7.6.9   Ein LowerCaseWriter *

7.6.10   Eingaben mit der Klasse FilterReader filtern *

7.6.11   Anwendungen für FilterReader und FilterWriter *

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

7.7.1   Datenkonvertierung durch den OutputStreamWriter

7.7.2   Automatische Konvertierungen mit dem InputStreamReader

7.8   Kommunikation zwischen Threads mit Pipes *

7.8.1   PipedOutputStream und PipedInputStream

7.8.2   PipedWriter und PipedReader

7.9   Prüfsummen

7.9.1   Die Schnittstelle Checksum

7.9.2   Die Klasse CRC32

7.9.3   Die Adler32-Klasse

7.10   Persistente Objekte und Serialisierung

7.10.1   Objekte mit der Standardserialisierung speichern und lesen

7.10.2   Zwei einfache Anwendungen der Serialisierung *

7.10.3   Die Schnittstelle Serializable

7.10.4   Nicht serialisierbare Attribute aussparen

7.10.5   Das Abspeichern selbst in die Hand nehmen

7.10.6   Tiefe Objektkopien *

7.10.7   Versionenverwaltung und die SUID

7.10.8   Wie die ArrayList serialisiert *

7.10.9   Probleme mit der Serialisierung

7.11   Alternative Datenaustauschformate

7.11.1   Serialisieren in XML-Dateien

7.11.2   XML-Serialisierung von JavaBeans mit JavaBeans Persistence *

7.11.3   Die Open-Source-Bibliothek XStream *

7.11.4   Binäre Serialisierung mit Google Protocol Buffers *

7.12   Zum Weiterlesen

 
Zum Seitenanfang

8   Die eXtensible Markup Language (XML)

8.1   Auszeichnungssprachen

8.1.1   Die Standard Generalized Markup Language (SGML)

8.1.2   Extensible Markup Language (XML)

8.2   Eigenschaften von XML-Dokumenten

8.2.1   Elemente und Attribute

8.2.2   Beschreibungssprache für den Aufbau von XML-Dokumenten

8.2.3   Schema – die moderne Alternative zu DTD

8.2.4   Namensraum (Namespace)

8.2.5   XML-Applikationen *

8.3   Die Java-APIs für XML

8.3.1   Das Document Object Model (DOM)

8.3.2   Simple API for XML Parsing (SAX)

8.3.3   Pull-API StAX

8.3.4   Java Document Object Model (JDOM)

8.3.5   JAXP als Java-Schnittstelle zu XML

8.3.6   DOM-Bäume einlesen mit JAXP *

8.4   Java Architecture for XML Binding (JAXB)

8.4.1   Bean für JAXB aufbauen

8.4.2   Utility-Klasse JAXB

8.4.3   Ganze Objektgraphen schreiben und lesen

8.4.4   JAXBContext und Marshaller/Unmarshaller nutzen

8.4.5   Validierung

8.4.6   Weitere JAXB-Annotationen *

8.4.7   Beans aus XML-Schema-Datei generieren

8.5   Serielle Verarbeitung mit StAX

8.5.1   Unterschiede der Verarbeitungsmodelle

8.5.2   XML-Dateien mit dem Cursor-Verfahren lesen

8.5.3   XML-Dateien mit dem Iterator-Verfahren verarbeiten *

8.5.4   Mit Filtern arbeiten *

8.5.5   XML-Dokumente schreiben

8.6   Serielle Verarbeitung von XML mit SAX *

8.6.1   Schnittstellen von SAX

8.6.2   SAX-Parser erzeugen

8.6.3   Operationen der Schnittstelle ContentHandler

8.6.4   ErrorHandler und EntityResolver

8.7   XML-Dateien mit JDOM verarbeiten

8.7.1   JDOM beziehen

8.7.2   Paketübersicht *

8.7.3   Die Document-Klasse

8.7.4   Eingaben aus der Datei lesen

8.7.5   Das Dokument im XML-Format ausgeben

8.7.6   Der Dokumenttyp *

8.7.7   Elemente

8.7.8   Zugriff auf Elementinhalte

8.7.9   Liste mit Unterelementen erzeugen *

8.7.10   Neue Elemente einfügen und ändern

8.7.11   Attributinhalte lesen und ändern

8.7.12   XPath

8.8   Transformationen mit XSLT *

8.8.1   Templates und XPath als Kernelemente von XSLT

8.8.2   Umwandlung von XML-Dateien mit JDOM und JAXP

8.9   XML-Schema-Validierung *

8.9.1   SchemaFactory und Schema

8.9.2   Validator

8.9.3   Validierung unterschiedlicher Datenquellen durchführen

8.10   Zum Weiterlesen

 
Zum Seitenanfang

9   Dateiformate

9.1   Einfache Dateiformate für strukturierte Daten

9.1.1   Property-Dateien mit java.util.Properties lesen und schreiben

9.1.2   CSV-Dateien

9.1.3   JSON-Serialisierung mit Jackson

9.2   Dokumentenformate

9.2.1   (X)HTML

9.2.2   PDF-Dokumente

9.2.3   Microsoft Office-Dokumente

9.2.4   OASIS Open Document Format

9.3   Datenkompression *

9.3.1   Java-Unterstützung beim Komprimieren

9.3.2   Daten packen und entpacken

9.3.3   Datenströme komprimieren

9.3.4   ZIP-Archive

9.3.5   JAR-Archive

9.4   Bildformate

9.5   Audiodateien

9.5.1   Die Arbeit mit Applets AudioClip

9.5.2   AudioClip von JavaFX

9.5.3   MIDI-Dateien abspielen

9.5.4   ID-Tags aus mp3-Dateien

 
Zum Seitenanfang

10   Grafische Oberflächen mit Swing

10.1   AWT, JavaFoundation Classes und Swing

10.1.1   Das Abstract Window Toolkit (AWT)

10.1.2   Java Foundation Classes (JFC)

10.1.3   Was Swing von AWT-Komponenten unterscheidet

10.2   Mit NetBeans zur ersten Swing-Oberfläche

10.2.1   Projekt anlegen

10.2.2   Eine GUI-Klasse hinzufügen

10.2.3   Programm starten

10.2.4   Grafische Oberfläche aufbauen

10.2.5   Swing-Komponenten-Klassen

10.2.6   Funktionalität geben

10.3   Aller Swing-Anfang – Fenster zur Welt

10.3.1   Eine Uhr, bei der die Zeit nie vergeht

10.3.2   Swing-Fenster mit javax.swing.JFrame darstellen

10.3.3   Mit add(…) auf den Container

10.3.4   Fenster schließbar machen – setDefaultCloseOperation(int)

10.3.5   Sichtbarkeit des Fensters

10.3.6   Größe und Position des Fensters verändern

10.3.7   Fenster- und Dialogdekoration, Transparenz *

10.3.8   Die Klasse Toolkit *

10.3.9   Zum Vergleich: AWT-Fenster darstellen *

10.4   Beschriftungen (JLabel)

10.4.1   Mehrzeiliger Text, HTML in der Darstellung

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

10.5.1   Die Klasse ImageIcon

10.6   Es tut sich was – Ereignisse beim AWT

10.6.1   Die Ereignisquellen und Horcher (Listener) von Swing

10.6.2   Listener implementieren

10.6.3   Listener bei dem Ereignisauslöser anmelden/abmelden

10.6.4   Adapterklassen nutzen

10.6.5   Innere Mitgliedsklassen und innere anonyme Klassen

10.6.6   Aufrufen der Listener im AWT-Event-Thread

10.6.7   Ereignisse, etwas genauer betrachtet *

10.7   Schaltflächen

10.7.1   Normale Schaltflächen (JButton)

10.7.2   Der aufmerksame ActionListener

10.7.3   Schaltflächen-Ereignisse vom Typ ActionEvent

10.7.4   Basisklasse AbstractButton

10.7.5   Wechselknopf (JToggleButton)

10.8   Textkomponenten

10.8.1   Text in einer Eingabezeile

10.8.2   Die Oberklasse der Textkomponenten (JTextComponent)

10.8.3   Geschützte Eingaben (JPasswordField)

10.8.4   Validierende Eingabefelder (JFormattedTextField)

10.8.5   Einfache mehrzeilige Textfelder (JTextArea)

10.8.6   Editor-Klasse (JEditorPane) *

10.9   Swing Action *

10.10   JComponent und Component als Basis aller Komponenten

10.10.1   Hinzufügen von Komponenten

10.10.2   Tooltips (Kurzhinweise)

10.10.3   Rahmen (Border) *

10.10.4   Fokus und Navigation *

10.10.5   Ereignisse jeder Komponente *

10.10.6   Die Größe und Position einer Komponente *

10.10.7   Komponenten-Ereignisse *

10.10.8   UI-Delegate – der wahre Zeichner *

10.10.9   Undurchsichtige (opake) Komponente *

10.10.10   Properties und Listener für Änderungen *

10.11   Container

10.11.1   Standardcontainer (JPanel)

10.11.2   Bereich mit automatischen Rollbalken (JScrollPane)

10.11.3   Reiter (JTabbedPane)

10.11.4   Teilungskomponente (JSplitPane)

10.12   Alles Auslegungssache – die Layoutmanager

10.12.1   Übersicht über Layoutmanager

10.12.2   Zuweisen eines Layoutmanagers

10.12.3   Im Fluss mit FlowLayout

10.12.4   BoxLayout

10.12.5   Mit BorderLayout in alle Himmelsrichtungen

10.12.6   Rasteranordnung mit GridLayout

10.12.7   Der GridBagLayoutmanager *

10.12.8   Null-Layout *

10.12.9   Weitere Layoutmanager

10.13   Rollbalken und Schieberegler

10.13.1   Schieberegler (JSlider)

10.13.2   Rollbalken (JScrollBar) *

10.14   Kontrollfelder, Optionsfelder, Kontrollfeldgruppen

10.14.1   Kontrollfelder (JCheckBox)

10.14.2   ItemSelectable, ItemListener und das ItemEvent

10.14.3   Sich gegenseitig ausschließende Optionen (JRadioButton)

10.15   Fortschritte bei Operationen überwachen *

10.15.1   Fortschrittsbalken (JProgressBar)

10.15.2   Dialog mit Fortschrittsanzeige (ProgressMonitor)

10.16   Menüs und Symbolleisten

10.16.1   Die Menüleisten und die Einträge

10.16.2   Menüeinträge definieren

10.16.3   Einträge durch Action-Objekte beschreiben

10.16.4   Mit der Tastatur – Mnemonics und Shortcut

10.16.5   Der Tastatur-Shortcut (Accelerator)

10.16.6   Tastenkürzel (Mnemonics)

10.16.7   Symbolleisten alias Toolbars

10.16.8   Popup-Menüs

10.16.9   System-Tray nutzen *

10.17   Das Model-View-Controller-Konzept

10.18   Auswahlmenüs, Listen und Spinner

10.18.1   Listen (JList)

10.18.2   Auswahlmenü (JComboBox)

10.18.3   Drehfeld (JSpinner) *

10.18.4   Datumsauswahl

10.19   Tabellen (JTable)

10.19.1   Ein eigenes Tabellen-Model

10.19.2   Basisklasse für eigene Modelle (AbstractTableModel)

10.19.3   Ein vorgefertigtes Standardmodell (DefaultTableModel)

10.19.4   Ein eigener Renderer für Tabellen

10.19.5   Zell-Editoren

10.19.6   Automatisches Sortieren und Filtern mit RowSorter *

10.20   Bäume (JTree)

10.20.1   JTree und sein TreeModel und TreeNode

10.20.2   Selektionen bemerken

10.20.3   Das TreeModel von JTree *

10.21   JRootPane und JDesktopPane *

10.21.1   Wurzelkomponente der Top-Level-Komponenten (JRootPane)

10.21.2   JDesktopPane und die Kinder von JInternalFrame

10.21.3   JLayeredPane

10.22   Dialoge und Window-Objekte

10.22.1   JWindow und JDialog

10.22.2   Modal oder nichtmodal?

10.22.3   Standarddialoge mit JOptionPane

10.22.4   Der Dateiauswahldialog

10.22.5   Der Farbauswahldialog JColorChooser *

10.23   Flexibles Java-Look-and-Feel

10.23.1   Look-and-Feel global setzen

10.23.2   UIManager

10.23.3   Die Windows-Optik mit JGoodies Looks verbessern *

10.24   Swing-Komponenten neu erstellen oder verändern *

10.24.1   Überlagerungen mit dem Swing-Komponenten-Dekorator JLayer

10.25   Die Zwischenablage (Clipboard)

10.25.1   Clipboard-Objekte

10.25.2   Mit Transferable auf den Inhalt zugreifen

10.25.3   DataFlavor ist das Format der Daten in der Zwischenablage

10.25.4   Einfügungen in der Zwischenablage erkennen

10.25.5   Drag & Drop

10.26   Undo durchführen *

10.27   AWT, Swing und die Threads

10.27.1   Ereignisschlange (EventQueue) und AWT-Event-Thread

10.27.2   Swing ist nicht threadsicher

10.27.3   invokeLater(…) und invokeAndWait(…)

10.27.4   SwingWorker

10.27.5   Eigene Ereignisse in die Queue setzen *

10.27.6   Auf alle Ereignisse hören *

10.28   Barrierefreiheit mit der Java Accessibility API

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

10.30   Die Zusatzkomponentenbibliothek SwingX

10.30.1   Im Angebot: Erweiterte und neue Swing-Komponenten

10.30.2   Überblick über erweiterte Standard-Swing-Klassen

10.30.3   Neue Swing-Klassen

10.30.4   Weitere SwingX-Klassen

10.30.5   SwingX-Installation

10.31   Zum Weiterlesen

 
Zum Seitenanfang

11   Grafikprogrammierung

11.1   Grundlegendes zum Zeichnen

11.1.1   Die paint(Graphics)-Methode für das AWT-Frame

11.1.2   Die ereignisorientierte Programmierung ändert Fensterinhalte

11.1.3   Zeichnen von Inhalten auf ein JFrame

11.1.4   Auffordern zum Neuzeichnen mit repaint(…)

11.1.5   Java 2D-API

11.2   Einfache Zeichenmethoden

11.2.1   Linien

11.2.2   Rechtecke

11.2.3   Ovale und Kreisbögen

11.2.4   Polygone und Polylines

11.3   Zeichenketten schreiben und Fonts

11.3.1   Zeichenfolgen schreiben

11.3.2   Die Font-Klasse

11.3.3   Font-Metadaten durch FontMetrics *

11.4   Geometrische Objekte

11.4.1   Die Schnittstelle Shape

11.4.2   Pfade *

11.5   Das Innere und Äußere einer Form

11.5.1   Farben und die Paint-Schnittstelle

11.5.2   Farben mit der Klasse Color

11.5.3   Composite und XOR *

11.5.4   Dicke und Art der Linien von Formen bestimmen über Stroke *

11.6   Bilder

11.6.1   Eine Übersicht über die Bilder-Bibliotheken

11.6.2   Bilder mit ImageIO lesen

11.6.3   Ein Bild zeichnen

11.6.4   Splash-Screen *

11.6.5   Bilder skalieren *

11.6.6   Schreiben mit ImageIO

11.6.7   Asynchrones Laden mit getImage(…) und dem MediaTracker *

11.7   Weitere Eigenschaften von Graphics *

11.7.1   Eine Kopie von Graphics erstellen

11.7.2   Koordinatensystem verschieben

11.7.3   Beschnitt (Clipping)

11.7.4   Zeichenhinweise durch RenderingHints

11.7.5   Transformationen mit einem AffineTransform-Objekt

11.8   Drucken *

11.8.1   Drucken der Inhalte

11.8.2   Bekannte Drucker

11.9   Benutzerinteraktionen automatisieren, Robot und Screenshots *

11.9.1   Der Roboter

11.9.2   Automatisch in die Tasten hauen

11.9.3   Automatisierte Maus-Operationen

11.9.4   Methoden zur Zeitsteuerung

11.9.5   Bildschirmabzüge (Screenshots)

11.9.6   Funktionsweise und Beschränkungen

11.9.7   MouseInfo und PointerInfo

11.10   Zum Weiterlesen

 
Zum Seitenanfang

12   JavaFX

12.1   Das erste Programm mit JavaFX

12.2   Zentrale Typen in JavaFX

12.2.1   Szenegraph-Knoten und Container-Typen

12.2.2   Datenstrukturen

12.3   JavaFX-Komponenten und Layout-Container-Klassen

12.3.1   Überblick über die Komponenten

12.3.2   Listener/Handler zur Ereignisbeobachtung

12.3.3   Panels mit speziellen Layouts

12.4   Webbrowser

12.5   Geometrische Objekte

12.5.1   Linien und Rechtecke

12.5.2   Kreise, Ellipsen, Kreisförmiges

12.5.3   Es werde kurvig – quadratische und kubische Splines

12.5.4   Pfade *

12.5.5   Polygone und Polylines

12.5.6   Beschriftungen, Texte, Fonts

12.5.7   Die Oberklasse Shape

12.6   Füllart von Formen

12.6.1   Farben mit der Klasse Color

12.7   Grafiken

12.7.1   Klasse Image

12.7.2   ImageView

12.7.3   Programm-Icon/Fenster-Icon setzen

12.7.4   Zugriff auf die Pixel und neue Pixel-Bilder *

12.8   Deklarative Oberflächen mit FXML

12.9   Diagramme (Charts)

12.9.1   Kuchendiagramm

12.9.2   Balkendiagramm

12.10   Animationen

12.10.1   FadeTransition

12.10.2   ScaleTransition

12.10.3   Transitionen parallel oder sequenziell durchführen

12.11   Medien abspielen

12.12   Das Geometry-Paket *

12.13   JavaFX-Scene in Swing-Applikationen einbetten

12.14   Zum Weiterlesen

 
Zum Seitenanfang

13   Netzwerkprogrammierung

13.1   Grundlegende Begriffe

13.2   URI und URL

13.2.1   Die Klasse URI

13.2.2   Die Klasse URL

13.2.3   Informationen über eine URL *

13.2.4   Der Zugriff auf die Daten über die Klasse URL

13.3   Die Klasse URLConnection *

13.3.1   Methoden und Anwendung von URLConnection

13.3.2   Protokoll- und Content-Handler

13.3.3   Im Detail: Von der URL zur URLConnection

13.3.4   Der Protokoll-Handler für JAR-Dateien

13.3.5   Basic Authentication und Proxy-Authentifizierung

13.4   Mit GET und POST Daten übergeben *

13.4.1   Kodieren der Parameter für Serverprogramme

13.4.2   In Wikipedia suchen und mit GET-Request absenden

13.4.3   POST-Request absenden

13.5   Host- und IP-Adressen

13.5.1   Lebt der Rechner?

13.5.2   IP-Adresse des lokalen Hosts

13.5.3   Das Netz ist klasse *

13.5.4   NetworkInterface

13.6   Mit dem Socket zum Server

13.6.1   Das Netzwerk ist der Computer

13.6.2   Sockets

13.6.3   Eine Verbindung zum Server aufbauen

13.6.4   Server unter Spannung – die Ströme

13.6.5   Die Verbindung wieder abbauen

13.6.6   Informationen über den Socket *

13.6.7   Reine Verbindungsdaten über SocketAddress *

13.7   Client-Server-Kommunikation

13.7.1   Warten auf Verbindungen

13.7.2   Ein Multiplikationsserver

13.7.3   Blockierendes Lesen

13.8   Apache HttpComponents und Commons Net *

13.8.1   HttpComponents

13.8.2   Apache Commons Net

13.9   Arbeitsweise eines Webservers *

13.9.1   Das Hypertext Transfer Protocol (HTTP)

13.9.2   Anfragen an den Server

13.9.3   Die Antworten vom Server

13.9.4   Webserver mit com.sun.net.httpserver.HttpServer

13.10   Verbindungen durch einen Proxy-Server *

13.10.1   System-Properties

13.10.2   Verbindungen durch die Proxy-API

13.11   Datagram-Sockets *

13.11.1   Die Klasse DatagramSocket

13.11.2   Datagramme und die Klasse DatagramPacket

13.11.3   Auf ein hereinkommendes Paket warten

13.11.4   Ein Paket zum Senden vorbereiten

13.11.5   Methoden der Klasse DatagramPacket

13.11.6   Das Paket senden

13.12   E-Mail *

13.12.1   Wie eine Elektropost um die Welt geht

13.12.2   Das Simple Mail Transfer Protocol und RFC 822

13.12.3   POP (Post Office Protocol)

13.12.4   Die JavaMail API

13.12.5   E-Mails mittels POP3 abrufen

13.12.6   Multipart-Nachrichten verarbeiten

13.12.7   E-Mails versenden

13.12.8   Ereignisse und Suchen

13.13   Tiefer liegende Netzwerkeigenschaften *

13.13.1   MAC-Adressen auslesen

13.13.2   Internet Control Message Protocol (ICMP)

13.14   Zum Weiterlesen

 
Zum Seitenanfang

14   Verteilte Programmierung mit RMI

14.1   Entfernte Objekte und Methoden

14.1.1   Stellvertreter helfen bei entfernten Methodenaufrufen

14.1.2   Standards für entfernte Objekte

14.2   Java Remote Method Invocation

14.2.1   Zusammenspiel von Server, Registry und Client

14.2.2   Wie die Stellvertreter die Daten übertragen

14.2.3   Probleme mit entfernten Methoden

14.2.4   Nutzen von RMI bei Middleware-Lösungen

14.2.5   Zentrale Klassen und Schnittstellen

14.2.6   Entfernte und lokale Objekte im Vergleich

14.3   Auf der Serverseite

14.3.1   Entfernte Schnittstelle deklarieren

14.3.2   Remote-Objekt-Implementierung

14.3.3   Stellvertreterobjekte

14.3.4   Der Namensdienst (Registry)

14.3.5   Remote-Objekt-Implementierung exportieren und beim Namensdienst anmelden

14.3.6   Einfaches Logging

14.3.7   Aufräumen mit dem DGC *

14.4   Auf der Client-Seite

14.5   Entfernte Objekte übergeben und laden

14.5.1   Klassen vom RMI-Klassenlader nachladen

14.6   Weitere Eigenschaften von RMI

14.6.1   RMI und CORBA

14.6.2   RMI über HTTP getunnelt

14.6.3   Automatische Remote-Objekt-Aktivierung

14.7   Java Message Service (JMS)

14.8   Zum Weiterlesen

 
Zum Seitenanfang

15   RESTful und SOAP-Web-Services

15.1   Web-Services

15.2   RESTful Web-Services

15.2.1   Aus Prinzip REST

15.2.2   Jersey

15.2.3   JAX-RS-Annotationen für den ersten REST-Service

15.2.4   Test-Server starten

15.2.5   REST-Services konsumieren

15.2.6   Content-Handler, Marshaller und verschiedene MIME-Typen

15.2.7   REST-Parameter

15.2.8   REST-Services mit Parametern über die Jersey-Client-API aufrufen

15.2.9   PUT-Anforderungen und das Senden von Daten

15.2.10   PUT/POST/DELETE-Sendungen mit der Jersey-Client-API absetzen

15.3   Daily Soap und das SOAP-Protokoll

15.3.1   Die technische Realisierung

15.3.2   Web-Service-APIs und Implementierungen

15.3.3   @WebService

15.3.4   Einen Web-Service definieren

15.3.5   Web-Services veröffentlichen

15.3.6   Einen JAX-WS-Client implementieren

15.4   Zum Weiterlesen

 
Zum Seitenanfang

16   Technologien für die Infrastruktur

16.1   Property-Validierung durch Bean Validation

16.1.1   Technische Abhängigkeiten und POJOs

16.2   Wie eine Implementierung an die richtige Stelle kommt

16.2.1   Arbeiten mit dem ServiceLoader

16.2.2   Die Utility-Klasse Lookup als ServiceLoader-Fassade

16.2.3   Contexts and Dependency Injection (CDI) aus dem JSR-299

16.3   Zum Weiterlesen

 
Zum Seitenanfang

17   Typen, Reflection und Annotationen

17.1   Metadaten

17.1.1   Metadaten durch Javadoc-Tags

17.2   Metadaten der Typen mit dem Class-Objekt

17.2.1   An ein Class-Objekt kommen

17.2.2   Eine Class ist ein Type

17.3   Klassenlader

17.3.1   Das Verzeichnis jre/lib/endorsed *

17.3.2   Die Klasse java.lang.ClassLoader

17.3.3   Hot Deployment mit dem URL-Classloader *

17.4   Metadaten der Typen mit dem Class-Objekt

17.4.1   Der Name des Typs

17.4.2   Was das Class-Objekt beschreibt *

17.4.3   instanceof mit Class-Objekten *

17.4.4   Oberklassen finden *

17.4.5   Implementierte Interfaces einer Klasse oder eines Interfaces *

17.4.6   Modifizierer und die Klasse Modifier *

17.4.7   Die Arbeit auf dem Feld *

17.5   Attribute, Methoden und Konstruktoren

17.5.1   Reflections – Gespür für die Attribute einer Klasse

17.5.2   Schnittstelle Member für Eigenschaften

17.5.3   Field-Klasse

17.5.4   Methoden einer Klasse erfragen

17.5.5   Properties einer Bean erfragen

17.5.6   Konstruktoren einer Klasse

17.5.7   Annotationen

17.6   Objekte erzeugen und manipulieren

17.6.1   Objekte erzeugen

17.6.2   Die Belegung der Variablen erfragen

17.6.3   Eine generische eigene toString()-Methode *

17.6.4   Variablen setzen

17.6.5   Bean-Zustände kopieren *

17.6.6   Private Attribute ändern

17.6.7   Methoden aufrufen

17.6.8   Statische Methoden aufrufen

17.6.9   Dynamische Methodenaufrufe bei festen Methoden beschleunigen *

17.6.10   java.lang.reflect.Parameter

17.7   Eigene Annotationstypen *

17.7.1   Annotationen zum Laden von Ressourcen

17.7.2   Neue Annotationen deklarieren

17.7.3   Annotationen mit genau einem Attribut

17.7.4   Element-Wert-Paare (Attribute) hinzufügen

17.7.5   Annotationsattribute vom Typ einer Aufzählung

17.7.6   Felder von Annotationsattributen

17.7.7   Vorbelegte Attribute

17.7.8   Annotieren von Annotationstypen

17.7.9   Deklarationen für unsere Ressourcen-Annotationen

17.7.10   Annotierte Elemente auslesen

17.7.11   Auf die Annotationsattribute zugreifen

17.7.12   Komplettbeispiel zum Initialisieren von Ressourcen

17.7.13   Mögliche Nachteile von Annotationen

17.8   Zum Weiterlesen

 
Zum Seitenanfang

18   Dynamische Übersetzung und Skriptsprachen

18.1   Codegenerierung

18.1.1   Generierung von Java-Quellcode

18.1.2   Codetransformationen

18.1.3   Erstellen von Java-Bytecode

18.2   Programme mit der Java Compiler API übersetzen

18.2.1   Java Compiler API

18.2.2   Fehlerdiagnose

18.2.3   Eine im String angegebene Kompilationseinheit übersetzen

18.2.4   Wenn Quelle und Ziel der Speicher sind

18.3   Ausführen von Skripten

18.3.1   Java-Programme mit JavaScript schreiben

18.3.2   Kommandozeilenprogramme jrunscript und jjs

18.3.3   javax.script-API

18.3.4   JavaScript-Programme ausführen

18.3.6   Alternative Sprachen für die JVM

18.3.7   Von den Schwierigkeiten, dynamische Programmiersprachen auf die JVM zu bringen *

18.4   Zum Weiterlesen

 
Zum Seitenanfang

19   Logging und Monitoring

19.1   Logging mit Java

19.1.1   Logging-APIs

19.1.2   Logging mit java.util.logging

19.1.3   Logging mit log4j *

19.1.4   Die Simple Logging Facade

19.1.5   Aktuelle Entwicklungen der Java-Logging-APIs

19.2   Systemzustände überwachen

19.3   MBean-Typen, MBean-Server und weitere Begriffe

19.3.1   MXBeans des Systems

19.4   Geschwätzige Programme und JConsole

19.4.1   JConsole

19.5   Der MBeanServer

19.6   Eine eigene Standard-MBean

19.6.1   Management-Schnittstelle

19.6.2   Implementierung der Managed-Ressource

19.6.3   Anmeldung beim Server

19.6.4   Eine eigene Bean in JConsole einbringen

19.7   Zum Weiterlesen

 
Zum Seitenanfang

20   Sicherheitskonzepte

20.1   Zentrale Elemente der Java-Sicherheit

20.1.1   Sichere Java Virtual Machine

20.1.2   Der Sandkasten (Sandbox)

20.1.3   Security-API der Java SE

20.1.4   Cryptographic Service Providers

20.2   Sicherheitsmanager (Security-Manager)

20.2.1   Der Sicherheitsmanager bei Applets

20.2.2   Sicherheitsmanager aktivieren

20.2.3   Rechte durch Policy-Dateien vergeben

20.2.4   Erstellen von Rechtedateien mit dem grafischen Policy-Tool

20.2.5   Kritik an den Policies

20.3   Signierung

20.3.1   Warum signieren?

20.3.2   Digitale Ausweise und die Zertifizierungsstelle

20.3.3   Mit keytool Schlüssel erzeugen

20.3.4   Signieren mit jarsigner

20.4   Kryptografische Hashfunktion

20.4.1   Die MDx-Reihe

20.4.2   Secure Hash Algorithm (SHA)

20.4.3   Mit der Security-API einen Fingerabdruck berechnen

20.4.4   Die Klasse MessageDigest

20.5   Verschlüsseln von Daten(-strömen) *

20.5.1   Den Schlüssel, bitte

20.5.2   Verschlüsseln mit Cipher

20.5.3   Verschlüsseln von Datenströmen

20.6   Zum Weiterlesen

 
Zum Seitenanfang

21   Datenbankmanagement mit JDBC

21.1   Relationale Datenbanken

21.1.1   Das relationale Modell

21.2   Datenbanken und Tools

21.2.1   HSQLDB

21.2.2   Weitere Datenbanken *

21.2.3   Eclipse Data Tools Platform (DTP) zum Durchschauen von Datenbanken

21.3   JDBC und Datenbanktreiber

21.3.1   Treibertypen *

21.3.2   JDBC-Versionen *

21.4   Eine Beispielabfrage

21.4.1   Schritte zur Datenbankabfrage

21.4.2   Ein Client für die HSQLDB-Datenbank

21.5   Mit Java an eine Datenbank andocken

21.5.1   Der Treiber-Manager *

21.5.2   Den Treiber laden

21.5.3   Eine Aufzählung aller Treiber *

21.5.4   Log-Informationen *

21.5.5   Verbindung zur Datenbank auf- und abbauen

21.6   Datenbankabfragen

21.6.1   Abfragen über das Statement-Objekt

21.6.2   Ergebnisse einer Abfrage in ResultSet

21.6.3   Java und SQL-Datentypen

21.6.4   Date, Time und Timestamp

21.6.5   Unicode in der Spalte korrekt auslesen

21.6.6   Eine SQL-NULL und wasNull() bei ResultSet

21.6.7   Wie viele Zeilen hat ein ResultSet? *

21.7   Elemente einer Datenbank ändern

21.7.1   Einzelne INSERT-, UPDATE- oder DELETE-Anweisungen senden

21.7.2   Aktualisierbares ResultSet

21.7.3   Batch-Updates

21.8   Die Ausnahmen bei JDBC, SQLException und Unterklassen

21.8.1   JDBC-Fehlerbasisklasse SQLException

21.8.2   SQLWarning

21.9   ResultSet und RowSet *

21.9.1   Die Schnittstelle RowSet

21.9.2   Implementierungen von RowSet

21.9.3   Der Typ CachedRowSet

21.9.4   Der Typ WebRowSet

21.10   Vorbereitete Anweisungen (Prepared Statements)

21.10.1   PreparedStatement-Objekte vorbereiten

21.10.2   Werte für die Platzhalter eines PreparedStatement

21.11   Transaktionen

21.13   Vorbereitete Datenbankverbindungen

21.13.1   DataSource

21.13.2   Gepoolte Datenbankverbindungen

21.14   Zum Weiterlesen

 
Zum Seitenanfang

22   Java Native Interface (JNI)

22.1   Java Native Interface und Invocation-API

22.2   Eine C-Funktion in ein Java-Programm einbinden

22.2.1   Den Java-Code schreiben

22.3   Dynamische Bibliotheken erzeugen

22.3.1   Die Header-Datei erzeugen

22.3.2   Implementierung der Funktion in C

22.3.3   Die C-Programme übersetzen und die dynamische Bibliothek erzeugen

22.4   Nativ die String-Länge ermitteln

22.5   Erweiterte JNI-Eigenschaften

22.5.1   Klassendefinitionen

22.5.2   Zugriff auf Attribute

22.5.3   Methoden aufrufen

22.5.4   Threads und Synchronisation

22.5.5   @Native Markierungen *

22.6   Einfache Anbindung von existierenden Bibliotheken

22.6.1   JNA (Java Native Access)

22.6.2   BridJ

22.6.3   Generieren von JNI-Wrappern aus C++-Klassen und C-Headern

22.6.4   COM-Schnittstellen anzapfen

22.7   Invocation-API

22.8   Zum Weiterlesen

 
Zum Seitenanfang

23   Dienstprogramme für die Java-Umgebung

23.1   Programme des JDK

23.2   Monitoringprogramme vom JDK

23.2.1   jps

23.2.2   jstat

23.2.3   jmap

23.2.4   jstack

23.2.5   jcmd

23.2.6   VisualVM

23.3   Programmieren mit der Tools-API

23.3.1   Java-Tools in Java implementiert

23.3.2   Tools aus eigenen Java-Programmen ansprechen

23.3.3   API-Dokumentation der Tools

23.3.4   Eigene Doclets

23.3.5   Auf den Compiler-AST einer Klasse zugreifen

23.4   Ant

23.4.1   Bezug und Installation von Ant

23.4.2   Das Build-Skript build.xml

23.4.3   Build den Build

23.4.4   Properties

23.4.5   Externe und vordefinierte Properties

23.4.6   Weitere Ant-Tasks

23.5   Disassembler, Decompiler und Obfuscator

23.5.1   Der Diassembler javap *

23.5.2   Decompiler

23.5.3   Obfuscatoren

23.6   Weitere Dienstprogramme

23.6.1   Sourcecode Beautifier

23.6.2   Java-Programme als Systemdienst ausführen

23.7   Zum Weiterlesen

 
Zum Seitenanfang

Stichwortverzeichnis

 


Ihr Kommentar

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

>> Zum Feedback-Formular
 
 Zum Katalog
Zum Katalog: Java SE 8 Standard-Bibliothek Java SE 8 Standard-Bibliothek
Jetzt bestellen

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

 Buchempfehlungen
Zum Katalog: Java ist auch eine Insel
Java ist auch eine Insel


Zum Katalog: Professionell entwickeln mit Java EE 8
Professionell entwickeln mit Java EE 8


Zum Katalog: Besser coden
Besser coden


Zum Katalog: Entwurfsmuster
Entwurfsmuster


Zum Katalog: IT-Projektmanagement
IT-Projektmanagement


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo

 
 


Copyright © Rheinwerk Verlag GmbH 2018
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.

 
Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de