Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Liebe Leser!
Inhaltsverzeichnis
Vorwort
Organisation der Kapitel
1 Neues in Java 9
1.1 Klassenlader (Class Loader) und Modul-/Klassenpfad
1.1.1 Klassenladen auf Abruf
1.1.2 Klassenlader bei der Arbeit zusehen
1.1.3 JMOD-Dateien und JAR-Dateien
1.1.4 Woher die kleinen Klassen kommen: die Suchorte und spezielle Klassenlader
1.1.5 Setzen des Modulpfades
1.2 Module entwickeln und einbinden
1.2.1 Wer sieht wen
1.2.2 Plattform-Module und JMOD-Beispiel
1.2.3 Verbotene Plattformeigenschaften nutzen, --add-exports
1.2.4 Plattformmodule einbinden, --add-modules und --add-opens
1.2.5 Projektabhängigkeiten in Eclipse
1.2.6 Benannte Module und module-info.java
1.2.7 Automatische Module
1.2.8 Unbenanntes Modul
1.2.9 Lesbarkeit und Zugreifbarkeit
1.2.10 Modul-Migration
1.3 Sprachänderungen in Java 9
1.4 Bibliotheksänderungen in Java 9
1.5 Änderungen in den Werkzeugen von Java 9
1.6 JDK 9-HotSpot-JVM-Änderungen
1.7 Zum Weiterlesen
2 Die Klassenbibliothek
2.1 Die Java-Klassenphilosophie
2.1.1 Modul, Paket, Typ
2.1.2 Übersicht über die Pakete der Standardbibliothek
2.2 Die Utility-Klassen System und Properties
2.2.1 Systemeigenschaften der Java-Umgebung
2.2.2 Zeilenumbruchzeichen, line.separator
2.2.3 Eigene Properties von der Konsole aus setzen *
2.2.4 Umgebungsvariablen des Betriebssystems *
2.2.5 Einfache Zeitmessung und Profiling *
2.3 Versionskennungen auslesen, aufbauen, parsen und vergleichen
2.4 Einfache Benutzereingaben
2.4.1 Grafischer Eingabedialog über JOptionPane
2.4.2 Geschützte Passwort-Eingaben mit der Klasse Console *
2.5 Benutzereinstellungen *
2.5.1 Benutzereinstellungen mit der Preferences-API
2.5.2 Einträge einfügen, auslesen und löschen
2.5.3 Auslesen der Daten und Schreiben in einem anderen Format
2.5.4 Auf Ereignisse horchen
2.5.5 Zugriff auf die gesamte Windows-Registry
2.6 Maven: Build-Management und Abhängigkeiten auflösen
2.6.1 Beispielprojekt in Eclipse mit Maven
2.6.2 Properties hinzunehmen
2.6.3 Dependency hinzunehmen
2.6.4 Lokales- und Remote-Repository
2.6.5 Lebenszylus, Phasen und Maven-Plugins
2.6.6 Archetypes
2.7 Zum Weiterlesen
3 Fortgeschrittene String-Verarbeitung
3.1 Erweiterte Zeicheneigenschaften
3.1.1 isXXX(….)-Methoden
3.1.2 Unicode-Blöcke
3.1.3 Unicode-Skripte
3.2 Reguläre Ausdrücke
3.2.1 Pattern.matches(…) bzw. String#matches(…)
3.2.2 Die Klassen Pattern und Matcher
3.2.3 Finden und nicht matchen
3.2.4 Gruppen
3.2.5 Gierige und nicht gierige Operatoren *
3.2.6 Mit MatchResult alle Ergebnisse einsammeln *
3.2.7 Suchen und Ersetzen mit Mustern
3.2.8 Hangman Version 2
3.3 Zerlegen von Zeichenketten
3.3.1 Zerlegen von Zeichensequenzen über String oder Pattern
3.3.2 Mehr vom Scanner
3.3.3 Die Klasse StringTokenizer *
3.3.4 BreakIterator als Zeichen-, Wort-, Zeilen- und Satztrenner *
3.3.5 StreamTokenizer *
3.4 Zeichenkodierungen, XML/HTML-Entities, Base64 *
3.4.1 Unicode und 8-Bit-Abbildungen/Unicode Encoding
3.4.2 Kodierungen über die Klasse String vornehmen
3.4.3 Das Paket java.nio.charset und der Typ Charset
3.4.4 Konvertieren mit OutputStreamWriter/InputStreamReader-Klassen
3.4.5 XML/HTML-Entities ausmaskieren
3.4.6 Base64-Kodierung
3.5 Ausgaben formatieren
3.5.1 Die Formatter-Klasse *
3.5.2 Formatieren mit Masken *
3.5.3 Format-Klassen
3.5.4 Zahlen, Prozente und Währungen mit NumberFormat und DecimalFormat formatieren *
3.5.5 MessageFormat und Pluralbildung mit ChoiceFormat
3.6 Sprachabhängiges Vergleichen und Normalisierung *
3.6.1 Die Klasse Collator
3.6.2 Effiziente interne Speicherung für die Sortierung
3.6.3 Normalisierung
3.7 Phonetische Vergleiche *
3.8 Zum Weiterlesen
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 Array-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 Immutable Datenstrukturen
4.7.1 Nichtänderbare Datenstrukturen, immutable oder nur Lesen?
4.7.2 Null Object Pattern und leere Sammlungen/Iteratoren zurückgeben
4.7.3 Immutable Datenstrukturen mit einem Element: Singletons
4.7.4 Collections.unmodifiableXXX(…)
4.7.5 Statische ofXXX(…)-Methoden zum Aufbau unveränderbarer Set-, List-, Map-Datenstrukturen
4.8 Mit einem Iterator durch die Daten wandern
4.8.1 Iterator-Schnittstelle
4.8.2 Der Iterator kann (eventuell auch) löschen
4.8.3 Operationen auf allen Elementen durchführen
4.8.4 Einen Zufallszahlen-Iterator schreiben
4.8.5 Iteratoren von Sammlungen, das erweiterte for und Iterable
4.8.6 Fail-Fast-Iterator und die ConcurrentModificationException
4.8.7 Die Schnittstelle Enumeration *
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 Echte typsichere Container
4.9.5 Mit der Halbierungssuche nach Elementen fahnden
4.9.6 Ersetzen, Kopieren, Füllen, Umdrehen, Rotieren *
4.9.7 Listen durchwürfeln *
4.9.8 Häufigkeit eines Elements *
4.9.9 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 Nichtsynchronisierte 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
5 Threads und nebenläufige Programmierung
5.1 Threads erzeugen
5.1.1 Threads über die Schnittstelle Runnable implementieren
5.1.2 Thread mit Runnable starten
5.1.3 Die Klasse Thread erweitern
5.2 Thread-Eigenschaften und Zustände
5.2.1 Der Name eines Threads
5.2.2 Wer bin ich?
5.2.3 Die Zustände eines Threads *
5.2.4 Schläfer gesucht
5.2.5 Mit yield() und onSpinWait() auf Rechenzeit verzichten
5.2.6 Der Thread als Dämon
5.2.7 Freiheit für den Thread – das Ende
5.2.8 Einen Thread höflich mit Interrupt beenden
5.2.9 UncaughtExceptionHandler für unbehandelte Ausnahmen
5.2.10 Der stop() von außen und die Rettung mit ThreadDeath *
5.2.11 Ein Rendezvous mit join(…) *
5.2.12 Arbeit niederlegen und wieder aufnehmen *
5.2.13 Priorität *
5.3 Der Ausführer (Executor) kommt
5.3.1 Die Schnittstelle Executor
5.3.2 Glücklich in der Gruppe – die Thread-Pools
5.3.3 Threads mit Rückgabe über Callable
5.3.4 Mehrere Callable-Objekte abarbeiten
5.3.5 ScheduledExecutorService für wiederholende Ausgaben und Zeitsteuerungen nutzen
5.3.6 Asynchrones Programmieren mit CompletableFuture (CompletionStage)
5.4 Synchronisation über kritische Abschnitte
5.4.1 Gemeinsam genutzte Daten
5.4.2 Probleme beim gemeinsamen Zugriff und kritische Abschnitte
5.4.3 Punkte nebenläufig initialisieren
5.4.4 i++ sieht atomar aus, ist es aber nicht *
5.4.5 Kritische Abschnitte schützen
5.4.6 Kritische Abschnitte mit ReentrantLock schützen
5.4.7 Synchronisieren mit synchronized
5.4.8 Synchronized-Methoden der Klasse StringBuffer *
5.4.9 Mit synchronized synchronisierte Blöcke
5.4.10 Dann machen wir doch gleich alles synchronisiert!
5.4.11 Lock-Freigabe im Fall von Exceptions
5.4.12 Deadlocks
5.4.13 Mit synchronized nachträglich synchronisieren *
5.4.14 Monitore sind reentrant – gut für die Geschwindigkeit *
5.4.15 Synchronisierte Methodenaufrufe zusammenfassen *
5.5 Synchronisation über Warten und Benachrichtigen
5.5.1 Die Schnittstelle Condition
5.5.2 It’s Disco-Time *
5.5.3 Warten mit wait(…) und Aufwecken mit notify()/notifyAll() *
5.5.4 Falls der Lock fehlt – IllegalMonitorStateException *
5.6 Datensynchronisation durch besondere Concurrency-Klassen *
5.6.1 Semaphor
5.6.2 Barrier und Austausch
5.6.3 Stop-and-go mit Exchanger
5.7 Atomare Operationen und frische Werte mit volatile *
5.7.1 Der Modifizierer volatile bei Objekt-/Klassenvariablen
5.7.2 Das Paket java.util.concurrent.atomic
5.8 Teile und herrsche mit Fork und Join *
5.8.1 Algorithmendesign per »teile und herrsche«
5.8.2 Nebenläufiges Lösen von D&C-Algorithmen
5.8.3 Fork und Join
5.9 Mit dem Thread verbundene Variablen *
5.9.1 ThreadLocal
5.9.2 InheritableThreadLocal
5.9.3 ThreadLocalRandom als schneller nebenläufiger Zufallszahlengenerator
5.9.4 ThreadLocal bei der Performance-Optimierung
5.10 Threads in einer Thread-Gruppe *
5.10.1 Aktive Threads in der Umgebung
5.10.2 Etwas über die aktuelle Thread-Gruppe herausfinden
5.10.3 Threads in einer Thread-Gruppe anlegen
5.10.4 Methoden von Thread und ThreadGroup im Vergleich
5.11 Reaktive Programmierung und die Flow-API *
5.12 Zeitgesteuerte Abläufe
5.12.1 Die Typen Timer und TimerTask
5.13 Ausführen externer Programme, Starten von Prozessen *
5.13.1 ProcessBuilder und Prozesskontrolle mit Process
5.13.2 ProcessHandle und Prozess-IDs
5.13.3 Einen Browser, E-Mail-Client oder Editor aufrufen
5.14 Den Stack-Trace erfragen *
5.14.1 StackTraceElement
5.14.2 printStackTrace(…)
5.14.3 StackTraceElement vom Thread erfragen
5.14.4 StackWalker und Stack-Walking API
5.15 Einen Abbruch der virtuellen Maschine erkennen
5.15.1 Shutdown-Hook
5.15.2 Signale
5.16 Zum Weiterlesen
6 Raum und Zeit
6.1 Sprachen der Länder
6.1.1 Sprachen in Regionen über Locale-Objekte
6.2 Internationalisierung und Lokalisierung
6.2.1 ResourceBundle-Objekte und Ressource-Dateien
6.2.2 Ressource-Dateien zur Lokalisierung
6.2.3 Die Klasse ResourceBundle
6.2.4 Ladestrategie für ResourceBundle-Objekte
6.2.5 Ladeprozess und Format anpassen *
6.3 Weltzeit *
6.4 Wichtige Datum-Klassen im Überblick
6.4.1 Der 1.1.1970
6.4.2 System.currentTimeMillis()
6.4.3 Einfache Zeitumrechnungen durch TimeUnit
6.5 Die Klasse Date
6.5.1 Objekte erzeugen und Methoden nutzen
6.5.2 Date-Objekte sind nicht immutable
6.6 Date-Time-API
6.6.1 Menschenzeit und Maschinenzeit
6.6.2 Datumsklasse LocalDate
6.6.3 Ostertage *
6.6.4 Die Klasse YearMonth
6.6.5 Die Klasse MonthDay
6.6.6 Aufzählung DayOfWeek und Month
6.6.7 Klasse LocalTime
6.6.8 Klasse LocalDateTime
6.6.9 Klasse Year
6.6.10 Zeitzonen-Klassen ZoneId und ZoneOffset
6.6.11 Temporale Klassen mit Zeitzoneninformationen
6.6.12 Klassen Period und Duration
6.6.13 Klasse Instant
6.6.14 Parsen und Formatieren von temporalen Typen
6.6.15 Das Paket java.time.temporal *
6.6.16 Rock Around the Clock
6.6.17 Konvertierungen zwischen der klassischen API und der Date-Time-API
6.7 Calendar und GregorianCalendar
6.7.1 Die abstrakte Klasse Calendar
6.7.2 Calendar nach Date und Millisekunden fragen
6.7.3 Abfragen und Setzen von Datumselementen über Feldbezeichner
6.7.4 Kalender-Exemplare bauen über den Calendar.Builder
6.7.5 Wie viele Tage hat der Monat, oder wie viele Monate hat ein Jahr? *
6.7.6 Wann beginnt die Woche und wann die erste Woche im Jahr? *
6.7.7 Der gregorianische Kalender
6.8 Zeitzonen in Java *
6.8.1 Zeitzonen durch die Klasse TimeZone repräsentieren
6.8.2 SimpleTimeZone
6.8.3 Methoden von TimeZone
6.9 Formatieren und Parsen von Date-Objekten
6.9.1 Mit DateFormat und SimpleDateFormat formatieren
6.9.2 Parsen von Datumswerten
6.10 Die Default-Falle
6.11 Zum Weiterlesen
7 Dateien, Verzeichnisse und Dateizugriffe
7.1 Alte und neue Welt in java.io und java.nio
7.1.1 java.io-Paket mit File-Klasse
7.1.2 NIO.2 und java.nio-Paket
7.1.3 java.io.File oder java.nio.*?
7.2 Dateisysteme und Pfade
7.2.1 FileSystem und Path
7.2.2 Die Utility-Klasse Files
7.2.3 Dateien kopieren und verschieben
7.2.4 Dateiattribute *
7.2.5 Neue Dateien, Verzeichnisse, symbolische Verknüpfungen anlegen und löschen
7.2.6 MIME-Typen herausfinden *
7.2.7 Verzeichnislistings (DirectoryStream/Stream) und Filter *
7.2.8 Rekursives Ablaufen des Verzeichnisbaums *
7.2.9 Rekursiv nach Dateien/Ordnern suchen mit Files.find(…) *
7.2.10 FileSystem: Abstraktion eines Dateisystems *
7.2.11 Verzeichnisse im Dateisystem überwachen *
7.3 Datei- und Verzeichnisoperationen mit der Klasse File
7.3.1 Dateien und Verzeichnisse mit der Klasse File
7.3.2 Existiert das Verzeichnis oder die Datei, und ist es …?
7.3.3 Verzeichnis- und Dateieigenschaften/-attribute
7.3.4 Umbenennen und Verzeichnisse anlegen
7.3.5 Verzeichnisse auflisten und Dateien filtern
7.3.6 Dateien berühren, neue Dateien anlegen, temporäre Dateien
7.3.7 Dateien und Verzeichnisse löschen
7.3.8 Wurzelverzeichnis, Laufwerksnamen, Plattenspeicher *
7.3.9 URL-, URI- und Path-Objekte aus einem File-Objekt ableiten *
7.3.10 Mit Locking Dateien sperren *
7.3.11 Sicherheitsprüfung *
7.4 Dateien mit wahlfreiem Zugriff
7.4.1 Ein RandomAccessFile zum Lesen und Schreiben öffnen
7.4.2 Aus dem RandomAccessFile lesen
7.4.3 Schreiben mit RandomAccessFile
7.4.4 Die Länge des RandomAccessFile
7.4.5 Hin und her in der Datei
7.5 Wahlfreier Zugriff mit SeekableByteChannel und ByteBuffer *
7.5.1 SeekableByteChannel
7.5.2 ByteBuffer
7.5.3 Beispiel mit Path + SeekableByteChannel + ByteBuffer
7.5.4 FileChannel
7.6 Zum Weiterlesen
8 Datenströme
8.1 Basisklassen für die Ein-/Ausgabe
8.1.1 Die vier abstrakten Basisklassen
8.1.2 Die abstrakte Basisklasse OutputStream
8.1.3 Ein Datenschlucker *
8.1.4 Die abstrakte Basisklasse InputStream
8.1.5 Die abstrakte Basisklasse Writer
8.1.6 Die Schnittstelle Appendable *
8.1.7 Die abstrakte Basisklasse Reader
8.1.8 Die Schnittstellen Closeable, AutoCloseable und Flushable
8.2 Lesen aus Dateien und Schreiben in Dateien
8.2.1 Byteorientierte Datenströme über Files beziehen
8.2.2 Zeichenorientierte Datenströme über Files beziehen
8.2.3 Funktion von OpenOption bei den Files.newXXX(…)-Methoden
8.2.4 Ressourcen aus dem Modulpfad und aus JAR-Dateien laden
8.3 Übersicht über Ein-/Ausgabeklassen
8.3.1 Eingaben lesen
8.3.2 Ausgaben schreiben
8.3.3 Klassen gruppiert nach Ressourcen
8.3.4 Ströme mit SequenceInputStream zusammensetzen *
8.4 Formatierte Textausgaben
8.4.1 Die Klassen PrintWriter und PrintStream
8.4.2 System.out, System.err und System.in
8.5 Die FileXXX-Stromklassen
8.5.1 FileOutputStream und FileInputStream
8.5.2 Das FileDescriptor-Objekt *
8.5.3 Mit dem FileWriter Texte in Dateien schreiben
8.5.4 Zeichen mit der Klasse FileReader lesen
8.6 Schreiben und Lesen aus Strings und Byte-Feldern
8.6.1 Mit dem StringWriter ein String-Objekt füllen
8.6.2 CharArrayWriter
8.6.3 StringReader und CharArrayReader
8.6.4 Mit ByteArrayOutputStream in ein Byte-Feld schreiben
8.6.5 Mit ByteArrayInputStream aus einem Byte-Feld lesen
8.7 Datenströme filtern und verketten
8.7.1 Streams als Filter verketten (verschachteln)
8.7.2 Gepufferte Ausgaben mit BufferedWriter und BufferedOutputStream
8.7.3 Gepufferte Eingaben mit BufferedReader/BufferedInputStream
8.7.4 LineNumberReader zählt automatisch Zeilen mit *
8.7.5 Daten mit der Klasse PushbackReader zurücklegen *
8.7.6 DataOutputStream/DataInputStream *
8.7.7 Basisklassen für Filter *
8.7.8 Die Basisklasse FilterWriter *
8.7.9 Eingaben mit der Klasse FilterReader filtern *
8.8 Vermittler zwischen Byte-Streams und Unicode-Strömen
8.8.1 Datenkonvertierung durch den OutputStreamWriter
8.8.2 Automatische Konvertierungen mit dem InputStreamReader
8.9 Kommunikation zwischen Threads mit Pipes *
8.9.1 PipedOutputStream und PipedInputStream
8.9.2 PipedWriter und PipedReader
8.10 Prüfsummen
8.10.1 Die Schnittstelle Checksum
8.10.2 Die Klasse CRC32
8.10.3 Die Adler32-Klasse
8.11 Persistente Objekte und Serialisierung
8.11.1 Objekte mit der Standardserialisierung speichern und lesen
8.11.2 Zwei einfache Anwendungen der Serialisierung *
8.11.3 Die Schnittstelle Serializable
8.11.4 Nicht serialisierbare Attribute aussparen
8.11.5 Deserialisierung absichern mit einem ObjectInputFilter *
8.11.6 Das Abspeichern selbst in die Hand nehmen
8.11.7 Tiefe Objektkopien *
8.11.8 Versionenverwaltung und die SUID
8.11.9 Wie die ArrayList serialisiert *
8.11.10 Probleme mit der Serialisierung
8.12 Alternative Datenaustauschformate
8.12.1 Serialisieren in XML-Dateien
8.12.2 XML-Serialisierung von JavaBeans mit JavaBeans Persistence *
8.12.3 Die Open-Source-Bibliothek XStream *
8.12.4 Binäre Serialisierung mit Google Protocol Buffers *
8.13 Zum Weiterlesen
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.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 AudioSystem und Clip
9.5.2 AudioClip von JavaFX
9.5.3 MIDI-Dateien abspielen
9.5.4 ID-Tags aus MP3-Dateien
9.6 Zum Weiterlesen
10 Die eXtensible Markup Language (XML) und JSON
10.1 Auszeichnungssprachen
10.1.1 Die Standard Generalized Markup Language (SGML)
10.1.2 Extensible Markup Language (XML)
10.2 Eigenschaften von XML-Dokumenten
10.2.1 Elemente und Attribute
10.2.2 Beschreibungssprache für den Aufbau von XML-Dokumenten
10.2.3 Schema – die moderne Alternative zu DTD
10.2.4 Namensraum (Namespace)
10.2.5 XML-Applikationen *
10.3 Die Java-APIs für XML
10.3.1 Das Document Object Model (DOM)
10.3.2 Simple API for XML Parsing (SAX)
10.3.3 Pull-API StAX
10.3.4 Java Document Object Model (JDOM)
10.3.5 JAXP als Java-Schnittstelle zu XML
10.3.6 DOM-Bäume einlesen mit JAXP *
10.4 Java Architecture for XML Binding (JAXB)
10.4.1 Bean für JAXB aufbauen
10.4.2 Utility-Klasse JAXB
10.4.3 Ganze Objektgraphen schreiben und lesen
10.4.4 JAXBContext und Marshaller/Unmarshaller nutzen
10.4.5 Validierung
10.4.6 Weitere JAXB-Annotationen *
10.4.7 JAXB-Beans aus XML-Schema-Datei generieren
10.5 Serielle Verarbeitung mit StAX
10.5.1 Unterschiede der Verarbeitungsmodelle
10.5.2 XML-Dateien mit dem Cursor-Verfahren lesen
10.5.3 XML-Dateien mit dem Iterator-Verfahren verarbeiten *
10.5.4 Mit Filtern arbeiten *
10.5.5 XML-Dokumente schreiben
10.6 Serielle Verarbeitung von XML mit SAX *
10.6.1 Schnittstellen von SAX
10.6.2 SAX-Parser erzeugen
10.6.3 Operationen der Schnittstelle ContentHandler
10.6.4 ErrorHandler und EntityResolver
10.7 XML-Dateien mit JDOM verarbeiten
10.7.1 JDOM beziehen
10.7.2 Paketübersicht *
10.7.3 Die Document-Klasse
10.7.4 Eingaben aus der Datei lesen
10.7.5 Das Dokument im XML-Format ausgeben
10.7.6 Der Dokumenttyp *
10.7.7 Elemente
10.7.8 Zugriff auf Elementinhalte
10.7.9 Liste mit Unterelementen erfragen *
10.7.10 Neue Elemente einfügen und ändern
10.7.11 Attributinhalte lesen und ändern
10.7.12 XPath
10.8 Transformationen mit XSLT *
10.8.1 Templates und XPath als Kernelemente von XSLT
10.8.2 Umwandlung von XML-Dateien mit JDOM und JAXP
10.9 XML-Schema-Validierung *
10.9.1 SchemaFactory und Schema
10.9.2 Validator
10.9.3 Validierung unterschiedlicher Datenquellen durchführen
10.10 JSON-Serialisierung mit Jackson-Datenformat
10.10.1 JSON im Kontext von JavaScript
10.10.2 JSON mit JavaScript-Engine von Java
10.10.3 JSON-Verarbeitung mit der Java API for JSON Processing
10.11 Zum Weiterlesen
11 Netzwerkprogrammierung
11.1 Grundlegende Begriffe
11.2 URI und URL
11.2.1 Die Klasse URI
11.2.2 Die Klasse URL
11.2.3 Informationen über eine URL *
11.2.4 Der Zugriff auf die Daten über die Klasse URL
11.3 URL-Parameter kodieren
11.4 Die Klassen URLConnection und HttpURLConnection
11.4.1 Methoden und Anwendung von URLConnection
11.4.2 HttpURLConnection
11.4.3 Webseiten aufrufen, mit GET und POST Daten übergeben *
11.4.4 POST-Request absenden
11.4.5 Der Protokoll-Handler für JAR-Dateien
11.4.6 Basic Authentication und Proxy-Authentifizierung
11.5 Host- und IP-Adressen
11.5.1 Lebt der Rechner?
11.5.2 IP-Adresse des lokalen Hosts
11.5.3 Das Netz ist klasse *
11.5.4 NetworkInterface
11.6 Socket-Verbindungen
11.6.1 Das Netzwerk ist der Computer
11.6.2 Sockets
11.6.3 Eine Verbindung zum Server aufbauen
11.6.4 Sockets unter Spannung – die Ströme
11.6.5 Die Verbindung wieder abbauen
11.6.6 Zeitserver ansprechen
11.6.7 Informationen über den Socket *
11.6.8 Reine Verbindungsdaten über SocketAddress *
11.6.9 Die Serverseite mit ServerSocket vorbereiten
11.6.10 Ein Multiplikationsserver
11.6.11 Blockierendes Lesen
11.7 HTTP Client API in Java 9
11.8 Neue externe Netzwerkbibliotheken *
11.8.1 HttpComponents
11.8.2 Async Http Client
11.8.3 Apache Commons Net
11.9 Arbeitsweise eines Webservers *
11.9.1 Das Hypertext Transfer Protocol (HTTP)
11.9.2 Anfragen an den Server
11.9.3 Die Antworten vom Server
11.9.4 Webserver mit com.sun.net.httpserver.HttpServer
11.10 Verbindungen durch einen Proxy-Server *
11.10.1 System-Properties
11.10.2 Verbindungen durch die Proxy-API
11.11 Bidirektionale binäre Webkommunikation über WebSockets *
11.11.1 WebSocket-Standard
11.11.2 WebSocket-Implementierungen
11.12 Datagram-Sockets *
11.12.1 Die Klasse DatagramSocket
11.12.2 Datagramme und die Klasse DatagramPacket
11.12.3 Auf ein hereinkommendes Paket warten
11.12.4 Ein Paket zum Senden vorbereiten
11.12.5 Methoden der Klasse DatagramPacket
11.12.6 Das Paket senden
11.13 Tiefer liegende Netzwerkeigenschaften *
11.13.1 MAC-Adressen auslesen
11.13.2 Internet Control Message Protocol (ICMP)
11.14 Zum Weiterlesen
12 RESTful und SOAP-Web-Services
12.1 Web-Services
12.2 RESTful Web-Services
12.2.1 Aus Prinzip REST
12.2.2 Jersey
12.3 Daily Soap und das SOAP-Protokoll
12.3.1 Die technische Realisierung
12.3.2 Web-Service-APIs und Implementierungen
12.3.3 @WebService
12.3.4 Web-Service-Modul angeben
12.3.5 Einen Web-Service definieren
12.3.6 Web-Services veröffentlichen
12.3.7 Einen JAX-WS-Client implementieren
12.4 Zum Weiterlesen
13 Verteilte Programmierung mit RMI
13.1 Entfernte Objekte und Methoden
13.1.1 Stellvertreter helfen bei entfernten Methodenaufrufen
13.1.2 Standards für entfernte Objekte
13.2 Java Remote Method Invocation
13.2.1 Zusammenspiel von Server, Registry und Client
13.2.2 Wie die Stellvertreter die Daten übertragen
13.2.3 Probleme mit entfernten Methoden
13.2.4 Nutzen von RMI bei Middleware-Lösungen
13.2.5 Zentrale Klassen und Schnittstellen
13.2.6 Entfernte und lokale Objekte im Vergleich
13.3 Auf der Serverseite
13.3.1 Entfernte Schnittstelle deklarieren
13.3.2 Remote-Objekt-Implementierung
13.3.3 Stellvertreterobjekte
13.3.4 Der Namensdienst (Registry)
13.3.5 Remote-Objekt-Implementierung exportieren und beim Namensdienst anmelden
13.3.6 Einfaches Logging
13.3.7 Aufräumen mit dem DGC *
13.4 Auf der Client-Seite
13.5 Entfernte Objekte übergeben und laden
13.5.1 Klassen vom RMI-Klassenlader nachladen
13.6 Automatische Remote-Objekt-Aktivierung
13.7 Java Message Service (JMS)
13.8 Zum Weiterlesen
14 Typen, Reflection und Annotationen
14.1 Metadaten
14.1.1 Metadaten durch Javadoc-Tags
14.2 Die Klasse Class
14.2.1 An ein Class-Objekt kommen
14.2.2 Eine Class ist ein Type
14.3 Klassenlader
14.3.1 Die Klasse java.lang.ClassLoader
14.3.2 Hot Deployment mit dem URL-Classloader *
14.4 Metadaten der Typen mit dem Class-Objekt
14.4.1 Der Name des Typs
14.4.2 Was das Class-Objekt beschreibt *
14.4.3 instanceof mit Class-Objekten *
14.4.4 Oberklassen finden *
14.4.5 Implementierte Interfaces einer Klasse oder eines Interfaces *
14.4.6 Modifizierer und die Klasse Modifier *
14.4.7 Die Arbeit auf dem Feld *
14.5 Attribute, Methoden und Konstruktoren
14.5.1 Reflections – Gespür für die Attribute einer Klasse
14.5.2 Schnittstelle Member für Eigenschaften
14.5.3 Field-Klasse
14.5.4 Methoden einer Klasse erfragen
14.5.5 Properties einer Bean erfragen
14.5.6 Konstruktoren einer Klasse
14.5.7 Annotationen
14.5.8 Reflexionen über Module
14.6 Objekte erzeugen und manipulieren
14.6.1 Objekte erzeugen
14.6.2 Die Belegung der Variablen erfragen
14.6.3 Eine generische eigene toString()-Methode *
14.6.4 Variablen setzen
14.6.5 Bean-Zustände kopieren *
14.6.6 Private Attribute auslesen/ändern und der Typ AccessibleObject
14.6.7 Methoden aufrufen
14.6.8 Statische Methoden aufrufen
14.6.9 Dynamische Methodenaufrufe bei festen Methoden beschleunigen *
14.6.10 java.lang.reflect.Parameter
14.7 Schneller aufrufen mit MethodType und MethodHandle
14.8 Eigene Annotationstypen *
14.8.1 Annotationen zum Laden von Ressourcen
14.8.2 Neue Annotationen deklarieren
14.8.3 Annotationen mit genau einem Attribut
14.8.4 Element-Wert-Paare (Attribute) hinzufügen
14.8.5 Annotationsattribute vom Typ einer Aufzählung
14.8.6 Felder von Annotationsattributen
14.8.7 Vorbelegte Attribute
14.8.8 Annotieren von Annotationstypen
14.8.9 Deklarationen für unsere Ressourcen-Annotationen
14.8.10 Annotierte Elemente auslesen
14.8.11 Auf die Annotationsattribute zugreifen
14.8.12 Komplettbeispiel zum Initialisieren von Ressourcen
14.8.13 Mögliche Nachteile von Annotationen
14.9 Zum Weiterlesen
15 Logging und Monitoring
15.1 Logging mit Java
15.1.1 Logging-APIs
15.1.2 Logging mit java.util.logging
15.1.3 Die Simple Logging Facade (SLF4J)
15.1.4 Logging mit log4j 2 *
15.1.5 Aktuelle Entwicklungen der Java-Logging-APIs
15.1.6 System-Logging *
15.2 Systemzustände überwachen
15.3 MBean-Typen, MBean-Server und weitere Begriffe
15.3.1 MXBeans des Systems
15.4 Geschwätzige Programme und JConsole
15.4.1 JConsole
15.5 Der MBeanServer
15.6 Eine eigene Standard-MBean
15.6.1 Management-Schnittstelle
15.6.2 Implementierung der Managed Ressource
15.6.3 Anmeldung beim Server
15.6.4 Eine eigene Bean in JConsole einbringen
15.7 Zum Weiterlesen
16 Datenbankmanagement mit JDBC
16.1 Relationale Datenbanken und Datenbankmanagementsysteme
16.1.1 Das relationale Modell
16.1.2 Datenbanken und Tools
16.1.3 HSQLDB
16.1.4 Weitere Datenbanken *
16.1.5 Eclipse Data Tools Platform (DTP) zum Durchschauen von Datenbanken
16.2 JDBC und Datenbanktreiber
16.2.1 JDBC-Versionen *
16.3 Eine Beispielabfrage
16.3.1 Schritte zur Datenbankabfrage
16.3.2 Ein Client für die HSQLDB-Datenbank
16.4 Mit Java an eine Datenbank andocken
16.4.1 Der Treiber-Manager *
16.4.2 Den Treiber laden
16.4.3 Eine Aufzählung aller Treiber *
16.4.4 Log-Informationen *
16.4.5 Verbindung zur Datenbank auf- und abbauen
16.5 Datenbankabfragen
16.5.1 Abfragen über das Statement-Objekt
16.5.2 Ergebnisse einer Abfrage in ResultSet
16.5.3 Java und SQL-Datentypen
16.5.4 Date, Time und Timestamp
16.5.5 Unicode in der Spalte korrekt auslesen
16.5.6 Eine SQL-NULL und wasNull() bei ResultSet
16.5.7 Wie viele Zeilen hat ein ResultSet? *
16.6 Elemente einer Datenbank ändern
16.6.1 Einzelne INSERT-, UPDATE- oder DELETE-Anweisungen senden
16.6.2 Aktualisierbares ResultSet
16.6.3 Batch-Updates
16.7 Die Ausnahmen bei JDBC, SQLException und Unterklassen
16.7.1 JDBC-Fehlerbasisklasse SQLException
16.7.2 SQLWarning
16.8 ResultSet und RowSet *
16.8.1 Die Schnittstelle RowSet
16.8.2 Implementierungen von RowSet
16.8.3 Der Typ CachedRowSet
16.8.4 Der Typ WebRowSet
16.9 Vorbereitete Anweisungen (Prepared Statements)
16.9.1 PreparedStatement-Objekte vorbereiten
16.9.2 Werte für die PreparedStatement-Platzhalter
16.10 Transaktionen
16.11 Vorbereitete Datenbankverbindungen
16.11.1 DataSource
16.11.2 Gepoolte Datenbankverbindungen
16.12 Zum Weiterlesen
17 Grafische Oberflächen mit Swing
17.1 AWT, JavaFoundation Classes und Swing
17.1.1 Das Abstract Window Toolkit (AWT)
17.1.2 Java Foundation Classes (JFC)
17.1.3 Was Swing von AWT-Komponenten unterscheidet
17.2 Mit NetBeans zur ersten Swing-Oberfläche
17.2.1 Projekt anlegen
17.2.2 Eine GUI-Klasse hinzufügen
17.2.3 Programm starten
17.2.4 Grafische Oberfläche aufbauen
17.2.5 Swing-Komponenten-Klassen
17.2.6 Funktionalität geben
17.3 Aller Swing-Anfang – Fenster zur Welt
17.3.1 Eine Uhr, bei der die Zeit nie vergeht
17.3.2 Swing-Fenster mit javax.swing.JFrame darstellen
17.3.3 Mit add(…) auf den Container
17.3.4 Fenster schließbar machen – setDefaultCloseOperation(int)
17.3.5 Sichtbarkeit des Fensters
17.3.6 Größe und Position des Fensters verändern
17.3.7 Fenster- und Dialogdekoration, Transparenz *
17.3.8 Die Klasse Toolkit *
17.3.9 Zum Vergleich: AWT-Fenster darstellen *
17.4 Beschriftungen (JLabel)
17.4.1 Mehrzeiliger Text, HTML in der Darstellung
17.5 Icon und ImageIcon für Bilder auf Swing-Komponenten
17.5.1 Die Klasse ImageIcon
17.6 Es tut sich was – Ereignisse beim AWT
17.6.1 Die Ereignisquellen und Horcher (Listener) von Swing
17.6.2 Listener implementieren
17.6.3 Listener bei dem Ereignisauslöser anmelden/abmelden
17.6.4 Adapterklassen nutzen
17.6.5 Listener-Code in inneren Klassen und Lambda-Ausdrücken
17.6.6 Aufrufen der Listener im AWT-Event-Thread
17.6.7 Ereignisse, etwas genauer betrachtet *
17.7 Schaltflächen
17.7.1 Normale Schaltflächen (JButton)
17.7.2 Der aufmerksame ActionListener
17.7.3 Schaltflächen-Ereignisse vom Typ ActionEvent
17.7.4 Basisklasse AbstractButton
17.7.5 Wechselknopf (JToggleButton)
17.8 Textkomponenten
17.8.1 Text in einer Eingabezeile
17.8.2 Die Oberklasse der Textkomponenten (JTextComponent)
17.8.3 Geschützte Eingaben (JPasswordField)
17.8.4 Validierende Eingabefelder (JFormattedTextField)
17.8.5 Einfache mehrzeilige Textfelder (JTextArea)
17.8.6 Editor-Klasse (JEditorPane) *
17.9 Swing Action *
17.10 JComponent und Component als Basis aller Komponenten
17.10.1 Hinzufügen von Komponenten
17.10.2 Tooltips (Kurzhinweise)
17.10.3 Rahmen (Border) *
17.10.4 Fokus und Navigation *
17.10.5 Ereignisse jeder Komponente *
17.10.6 Die Größe und Position einer Komponente *
17.10.7 Komponenten-Ereignisse *
17.10.8 UI-Delegate – der wahre Zeichner *
17.10.9 Undurchsichtige (opake) Komponente *
17.10.10 Properties und Listener für Änderungen *
17.11 Container
17.11.1 Standard-Container (JPanel)
17.11.2 Bereich mit automatischen Rollbalken (JScrollPane)
17.11.3 Reiter (JTabbedPane)
17.11.4 Teilungskomponente (JSplitPane)
17.12 Alles Auslegungssache – die Layoutmanager
17.12.1 Übersicht über Layoutmanager
17.12.2 Zuweisen eines Layoutmanagers
17.12.3 Im Fluss mit FlowLayout
17.12.4 BoxLayout
17.12.5 Mit BorderLayout in alle Himmelsrichtungen
17.12.6 Rasteranordnung mit GridLayout
17.12.7 Der GridBagLayoutmanager *
17.12.8 Null-Layout *
17.13 Rollbalken und Schieberegler
17.13.1 Schieberegler (JSlider)
17.13.2 Rollbalken (JScrollBar) *
17.14 Kontrollfelder, Optionsfelder, Kontrollfeldgruppen
17.14.1 Kontrollfelder (JCheckBox)
17.14.2 ItemSelectable, ItemListener und das ItemEvent
17.14.3 Sich gegenseitig ausschließende Optionen (JRadioButton)
17.15 Fortschritte bei Operationen überwachen *
17.15.1 Fortschrittsbalken (JProgressBar)
17.15.2 Dialog mit Fortschrittsanzeige (ProgressMonitor)
17.16 Menüs und Symbolleisten
17.16.1 Die Menüleisten und die Einträge
17.16.2 Menüeinträge definieren
17.16.3 Einträge durch Action-Objekte beschreiben
17.16.4 Mit der Tastatur – Mnemonics und Shortcut
17.16.5 Der Tastatur-Shortcut (Accelerator)
17.16.6 Tastenkürzel (Mnemonics)
17.16.7 Symbolleisten alias Toolbars
17.16.8 Popup-Menüs
17.16.9 System-Tray nutzen *
17.17 Das Model-View-Controller-Konzept
17.18 Auswahlmenüs, Listen und Spinner
17.18.1 Listen (JList)
17.18.2 Auswahlmenü (JComboBox)
17.18.3 Drehfeld (JSpinner) *
17.18.4 Datumsauswahl
17.19 Tabellen (JTable)
17.19.1 Ein eigenes Tabellen-Model
17.19.2 Basisklasse für eigene Modelle (AbstractTableModel)
17.19.3 Ein vorgefertigtes Standardmodell (DefaultTableModel)
17.19.4 Ein eigener Renderer für Tabellen
17.19.5 Zell-Editoren
17.19.6 Automatisches Sortieren und Filtern mit RowSorter *
17.20 Bäume (JTree)
17.20.1 JTree und sein TreeModel und TreeNode
17.20.2 Selektionen bemerken
17.20.3 Das TreeModel von JTree *
17.21 Dialoge und Window-Objekte
17.21.1 JWindow und JDialog
17.21.2 Modal oder nichtmodal?
17.21.3 Standarddialoge mit JOptionPane
17.21.4 Der Dateiauswahldialog
17.22 Flexibles Java-Look-and-Feel
17.22.1 UIManager
17.23 Swing-Komponenten neu erstellen oder verändern *
17.23.1 Überlagerungen mit dem Swing-Komponenten-Dekorator JLayer
17.24 Die Zwischenablage (Clipboard)
17.24.1 Clipboard-Objekte
17.24.2 Mit Transferable auf den Inhalt zugreifen
17.24.3 DataFlavor ist das Format der Daten in der Zwischenablage
17.24.4 Einfügungen in der Zwischenablage erkennen
17.24.5 Drag & Drop
17.25 AWT, Swing und die Threads
17.25.1 Ereignisschlange (EventQueue) und AWT-Event-Thread
17.25.2 Swing ist nicht threadsicher
17.25.3 invokeLater(…) und invokeAndWait(…)
17.25.4 SwingWorker
17.25.5 Eigene Ereignisse in die Queue setzen *
17.25.6 Auf alle Ereignisse hören *
17.26 Barrierefreiheit mit der Java Accessibility API
17.27 Zeitliches Ausführen mit dem javax.swing.Timer
17.28 Zum Weiterlesen
18 Grafikprogrammierung
18.1 Grundlegendes zum Zeichnen
18.1.1 Die paint(Graphics)-Methode für das AWT-Frame
18.1.2 Die ereignisorientierte Programmierung ändert Fensterinhalte
18.1.3 Zeichnen von Inhalten auf ein JFrame
18.1.4 Auffordern zum Neuzeichnen mit repaint(…)
18.1.5 Java 2D-API
18.2 Einfache Zeichenmethoden
18.2.1 Linien
18.2.2 Rechtecke
18.2.3 Ovale und Kreisbögen
18.2.4 Polygone und Polylines
18.3 Zeichenketten schreiben und Fonts
18.3.1 Zeichenfolgen schreiben
18.3.2 Die Font-Klasse
18.3.3 Font-Metadaten durch FontMetrics *
18.4 Geometrische Objekte
18.4.1 Die Schnittstelle Shape
18.4.2 Pfade *
18.5 Das Innere und Äußere einer Form
18.5.1 Farben und die Paint-Schnittstelle
18.5.2 Farben mit der Klasse Color
18.5.3 Composite und XOR *
18.5.4 Dicke und Art der Linien von Formen bestimmen über Stroke *
18.6 Bilder
18.6.1 Eine Übersicht über die Bilder-Bibliotheken
18.6.2 Bilder mit ImageIO lesen
18.6.3 Ein Bild zeichnen
18.6.4 Splash-Screen *
18.6.5 Bilder skalieren *
18.6.6 Schreiben mit ImageIO
18.6.7 Asynchrones Laden mit getImage(…) und dem MediaTracker *
18.7 Weitere Eigenschaften von Graphics *
18.7.1 Eine Kopie von Graphics erstellen
18.7.2 Koordinatensystem verschieben
18.7.3 Beschnitt (Clipping)
18.7.4 Zeichenhinweise durch RenderingHints
18.7.5 Transformationen mit einem AffineTransform-Objekt
18.8 Drucken *
18.8.1 Drucken der Inhalte
18.8.2 Bekannte Drucker
18.9 Benutzerinteraktionen automatisieren, Robot und Screenshots *
18.9.1 Der Roboter
18.9.2 Automatisch in die Tasten hauen
18.9.3 Automatisierte Mausoperationen
18.9.4 Methoden zur Zeitsteuerung
18.9.5 Bildschirmabzüge (Screenshots)
18.9.6 Funktionsweise und Beschränkungen
18.9.7 MouseInfo und PointerInfo
18.10 Zum Weiterlesen
19 JavaFX
19.1 Das erste Programm mit JavaFX
19.2 Zentrale Typen in JavaFX
19.2.1 Szenegraph-Knoten und Container-Typen
19.2.2 Datenstrukturen
19.3 JavaFX-Komponenten und Layout-Container-Klassen
19.3.1 Überblick über die Komponenten
19.3.2 Listener/Handler zur Ereignisbeobachtung
19.3.3 Panels mit speziellen Layouts
19.4 Webbrowser
19.5 Geometrische Objekte
19.5.1 Linien und Rechtecke
19.5.2 Kreise, Ellipsen, Kreisförmiges
19.5.3 Es werde kurvig – quadratische und kubische Splines
19.5.4 Pfade *
19.5.5 Polygone und Polylines
19.5.6 Beschriftungen, Texte, Fonts
19.5.7 Die Oberklasse Shape
19.6 Füllart von Formen
19.6.1 Farben mit der Klasse Color
19.7 Grafiken
19.7.1 Klasse Image
19.7.2 ImageView
19.7.3 Programm-Icon/Fenster-Icon setzen
19.7.4 Zugriff auf die Pixel und neue Pixel-Bilder *
19.8 Deklarative Oberflächen mit FXML
19.9 Diagramme (Charts)
19.9.1 Kuchendiagramm
19.9.2 Balkendiagramm
19.10 Animationen
19.10.1 FadeTransition
19.10.2 ScaleTransition
19.10.3 Transitionen parallel oder sequenziell durchführen
19.11 Medien abspielen
19.12 Java 3D
19.13 Das Geometry-Paket *
19.14 JavaFX-Scene in Swing-Applikationen einbetten
19.15 Zum Weiterlesen
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
21 Dynamische Übersetzung, Skriptsprachen, JShell
21.1 Codegenerierung
21.1.1 Generierung von Java-Quellcode
21.1.2 Codetransformationen
21.1.3 Erstellen von Java-Bytecode
21.2 Programme mit der Java Compiler API übersetzen
21.2.1 Java Compiler API
21.2.2 Fehlerdiagnose
21.2.3 Eine im String angegebene Kompilationseinheit übersetzen
21.2.4 Wenn Quelle und Ziel der Speicher sind
21.3 Ausführen von Skripten
21.3.1 Java-Programme mit JavaScript schreiben
21.3.2 Kommandozeilenprogramme jrunscript und jjs
21.3.3 javax.script-API
21.3.4 JavaScript-Programme ausführen
21.3.5 Alternative Sprachen für die JVM
21.3.6 Von den Schwierigkeiten, dynamische Programmiersprachen auf die JVM zu bringen *
21.4 JShell, die interaktive REPL-Shell
21.4.1 JShell API
21.5 Zum Weiterlesen
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.3.4 Abhängige Bibliotheken entdecken
22.3.5 Nativ die String-Länge ermitteln
22.4 Erweiterte JNI-Eigenschaften
22.4.1 Klassendefinitionen
22.4.2 Zugriff auf Attribute
22.4.3 Methoden aufrufen
22.4.4 Threads und Synchronisation
22.4.5 @Native Markierungen *
22.5 Einfache Anbindung von existierenden Bibliotheken
22.5.1 JNA (Java Native Access)
22.5.2 BridJ
22.5.3 Generieren von JNI-Wrappern aus C++-Klassen und C-Headern
22.5.4 COM-Schnittstellen anzapfen
22.6 Invocation-API
22.7 Zum Weiterlesen
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 jhsdb
23.2.7 VisualVM
23.3 Ant
23.3.1 Bezug und Installation von Ant
23.3.2 Das Build-Skript build.xml
23.3.3 Build den Build
23.3.4 Properties
23.3.5 Externe und vordefinierte Properties
23.3.6 Weitere Ant-Tasks
23.4 Disassembler, Decompiler und Obfuscator
23.4.1 Der Disassembler javap *
23.4.2 Decompiler
23.4.3 Obfuscatoren
23.5 Weitere Dienstprogramme
23.5.1 Java-Programme als Systemdienst ausführen
23.6 Zum Weiterlesen
Stichwortverzeichnis
Rechtliche Hinweise
Über den Autor
← Prev
Back
Next →
← Prev
Back
Next →