Christian Ullenboom
Java SE 9 Standard-Bibliothek
Das Handbuch für Java-Entwickler. Die zweite Java-Insel, aktuell zu Java 9
Christian Ullenboom
Java SE 9 Standard-Bibliothek
Das Handbuch für Java-Entwickler. Die zweite Java-Insel, aktuell zu Java 9
- Gebundenes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
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 Swing/JavaFX, Netzwerk- 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!
Aus dem Inhalt:
Neues in Java 9Threads und nebenläufige ProgrammierungDatenstrukturen und…mehr
Andere Kunden interessierten sich auch für
- Bernhard SteppanEinstieg in Java mit Eclipse29,99 €
- Jon DuckettFront-End Back-End Development with HTML, CSS, JavaScript, jQuery, PHP, and MySQL72,99 €
- Christoph HöllerAngular39,90 €
- Joshua BlochEffective Java36,90 €
- Robert MeyerPraxiswissen TYPO3 CMS 10 LTS36,90 €
- Shawn CatlettHtml518,99 €
- Michael BonacinaPHP und MySQL für Einsteiger14,99 €
-
-
-
-
-
-
-
-
-
-
-
-
-
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 Swing/JavaFX, Netzwerk- 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!
Aus dem Inhalt:
Neues in Java 9Threads und nebenläufige ProgrammierungDatenstrukturen und AlgorithmenRaum und ZeitDateien, Verzeichnisse und DateizugriffeDatenströmeeXtensible Markup LanguageGrafische Oberflächen mit Swing/JavaFXGrafik- und NetzwerkprogrammierungVerteilte Programmierung mit RMIDatenbankmanagement mit JDBCReflection und AnnotationenLogging und Monitoring
Die Fachpresse zur Vorauflage:
iX - Magazin für professionelle Informationstechnik: »Ein »Wunderwerk««
PHP Nuke: »Ein wichtiges Java-Standardwerk! Der Schreibstil ist fantastisch. «
cc13.com: »Unverzichtbares Nachschlagewerk, uneingeschränkt zu empfehlen!«
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Aus dem Inhalt:
Neues in Java 9Threads und nebenläufige ProgrammierungDatenstrukturen und AlgorithmenRaum und ZeitDateien, Verzeichnisse und DateizugriffeDatenströmeeXtensible Markup LanguageGrafische Oberflächen mit Swing/JavaFXGrafik- und NetzwerkprogrammierungVerteilte Programmierung mit RMIDatenbankmanagement mit JDBCReflection und AnnotationenLogging und Monitoring
Die Fachpresse zur Vorauflage:
iX - Magazin für professionelle Informationstechnik: »Ein »Wunderwerk««
PHP Nuke: »Ein wichtiges Java-Standardwerk! Der Schreibstil ist fantastisch. «
cc13.com: »Unverzichtbares Nachschlagewerk, uneingeschränkt zu empfehlen!«
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Produktdetails
- Produktdetails
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- Artikelnr. des Verlages: 459/05874
- 3., aktualis. u. überarb. Aufl.
- Seitenzahl: 1447
- Erscheinungstermin: Dezember 2017
- Deutsch
- Abmessung: 246mm x 197mm x 71mm
- Gewicht: 2461g
- ISBN-13: 9783836258746
- ISBN-10: 3836258749
- Artikelnr.: 48103415
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- Artikelnr. des Verlages: 459/05874
- 3., aktualis. u. überarb. Aufl.
- Seitenzahl: 1447
- Erscheinungstermin: Dezember 2017
- Deutsch
- Abmessung: 246mm x 197mm x 71mm
- Gewicht: 2461g
- ISBN-13: 9783836258746
- ISBN-10: 3836258749
- Artikelnr.: 48103415
Christian Ullenboom, Dipl.-Informatiker, ist zertifizierter Java-Programmierer und seit 1997 Trainer und Berater für Java-Technologien und objektorientierte Analyse und Design. Seit Jahren teilt er sein Wissen mit unzähligen Besuchern seiner Website, wo er Fragen beantwortet, Inhalte bereitstellt und diskutiert. Seine Sympathie gilt Java Performance Tuning und den sinnlichen Freuden des Lebens.
1. Vorwort ... 35
1. Neues in Java 9 ... 43
1.1 ... Klassenlader (Class Loader) und Modul-/Klassenpfad ... 43
1.2 ... Module entwickeln und einbinden ... 49
1.3 ... Sprachänderungen in Java 9 ... 64
1.4 ... Bibliotheksänderungen in Java 9 ... 65
1.5 ... Änderungen in den Werkzeugen von Java 9 ... 65
1.6 ... JDK 9-HotSpot-JVM-Änderungen ... 66
1.7 ... Zum Weiterlesen ... 66
2. Die Klassenbibliothek ... 67
2.1 ... Die Java-Klassenphilosophie ... 67
2.2 ... Die Utility-Klassen System und Properties ... 74
2.3 ... Versionskennungen auslesen, aufbauen, parsen und vergleichen ... 84
2.4 ... Einfache Benutzereingaben ... 86
2.5 ... Benutzereinstellungen * ... 88
2.6 ... Maven: Build-Management und Abhängigkeiten auflösen ... 95
2.7 ... Zum Weiterlesen ... 99
3. Fortgeschrittene String-Verarbeitung ... 101
3.1 ... Erweiterte Zeicheneigenschaften ... 101
3.2 ... Reguläre Ausdrücke ... 104
3.3 ... Zerlegen von Zeichenketten ... 122
3.4 ... Zeichenkodierungen, XML/HTML-Entities, Base64 * ... 137
3.5 ... Ausgaben formatieren ... 142
3.6 ... Sprachabhängiges Vergleichen und Normalisierung * ... 154
3.7 ... Phonetische Vergleiche * ... 159
3.8 ... Zum Weiterlesen ... 160
4. Datenstrukturen und Algorithmen ... 161
4.1 ... Datenstrukturen und die Collection-API ... 161
4.2 ... Listen ... 173
4.3 ... Mengen (Sets) ... 191
4.4 ... Queues (Schlangen) und Deques ... 201
4.5 ... Stack (Kellerspeicher, Stapel) ... 209
4.6 ... Assoziative Speicher ... 211
4.7 ... Immutable Datenstrukturen ... 235
4.8 ... Mit einem Iterator durch die Daten wandern ... 245
4.9 ... Algorithmen in Collections ... 255
4.10 ... Datenstrukturen mit Änderungsmeldungen ... 268
4.11 ... Stream-API ... 278
4.12 ... Spezielle threadsichere Datenstrukturen ... 317
4.13 ... Google Guava (Google Collections Library) ... 327
4.14 ... Die Klasse BitSet für Bitmengen * ... 332
4.15 ... Zum Weiterlesen ... 338
5. Threads und nebenläufige Programmierung ... 339
5.1 ... Threads erzeugen ... 339
5.2 ... Thread-Eigenschaften und Zustände ... 344
5.3 ... Der Ausführer (Executor) kommt ... 360
5.4 ... Synchronisation über kritische Abschnitte ... 372
5.5 ... Synchronisation über Warten und Benachrichtigen ... 396
5.6 ... Datensynchronisation durch besondere Concurrency-Klassen * ... 408
5.7 ... Atomare Operationen und frische Werte mit volatile * ... 414
5.8 ... Teile und herrsche mit Fork und Join * ... 418
5.9 ... Mit dem Thread verbundene Variablen * ... 424
5.10 ... Threads in einer Thread-Gruppe * ... 430
5.11 ... Reaktive Programmierung und die Flow-API * ... 438
5.12 ... Zeitgesteuerte Abläufe ... 440
5.13 ... Ausführen externer Programme, Starten von Prozessen * ... 442
5.14 ... Den Stack-Trace erfragen * ... 450
5.15 ... Einen Abbruch der virtuellen Maschine erkennen ... 455
5.16 ... Zum Weiterlesen ... 457
6. Raum und Zeit ... 459
6.1 ... Sprachen der Länder ... 459
6.2 ... Internationalisierung und Lokalisierung ... 463
6.3 ... Weltzeit * ... 468
6.4 ... Wichtige Datum-Klassen im Überblick ... 469
6.5 ... Die Klasse Date ... 472
6.6 ... Date-Time-API ... 474
6.7 ... Calendar und GregorianCalendar ... 504
6.8 ... Zeitzonen in Java * ... 517
6.9 ... Formatieren und Parsen von Date-Objekten ... 520
6.10 ... Die Default-Falle ... 528
6.11 ... Zum Weiterlesen ... 529
7. Dateien, Verzeichnisse und Dateizugriffe ... 531
7.1 ... Alte und neue Welt in java.io und java.nio ... 531
7.2 ... Dateisysteme und Pfade ... 533
7.3 ... Datei- und Verzeichnisoperationen mit der Klasse File ... 569
7.4 ... Dateien mit wahlfreiem Zugriff ... 585
7.5 ... Wahlfreier Zugriff mit SeekableByteChannel und ByteBuffer * ... 591
7.6 ... Zum Weiterlesen ... 595
8. Datenströme ... 597
8.1 ... Basisklassen für die Ein-/Ausgabe ... 597
8.2 ... Lesen aus Dateien und Schreiben in Dateien ... 610
8.3 ... Übersicht über Ein-/Ausgabeklassen ... 616
8.4 ... Formatierte Textausgaben ... 620
8.5 ... Die FileXXX-Stromklassen ... 628
8.6 ... Schreiben und Lesen aus Strings und Byte-Feldern ... 635
8.7 ... Datenströme filtern und verketten ... 640
8.8 ... Vermittler zwischen Byte-Streams und Unicode-Strömen ... 653
8.9 ... Kommunikation zwischen Threads mit Pipes * ... 657
8.10 ... Prüfsummen ... 660
8.11 ... Persistente Objekte und Serialisierung ... 664
8.12 ... Alternative Datenaustauschformate ... 685
8.13 ... Zum Weiterlesen ... 688
9. Dateiformate ... 689
9.1 ... Einfache Dateiformate für strukturierte Daten ... 690
9.2 ... Dokumentenformate ... 694
9.3 ... Datenkompression * ... 697
9.4 ... Bildformate ... 711
9.5 ... Audiodateien ... 711
9.6 ... Zum Weiterlesen ... 715
10. Die eXtensible Markup Language (XML) und JSON ... 717
10.1 ... Auszeichnungssprachen ... 717
10.2 ... Eigenschaften von XML-Dokumenten ... 718
10.3 ... Die Java-APIs für XML ... 729
10.4 ... Java Architecture for XML Binding (JAXB) ... 732
10.5 ... Serielle Verarbeitung mit StAX ... 755
10.6 ... Serielle Verarbeitung von XML mit SAX * ... 768
10.7 ... XML-Dateien mit JDOM verarbeiten ... 772
10.8 ... Transformationen mit XSLT * ... 794
10.9 ... XML-Schema-Validierung * ... 797
10.10 ... JSON-Serialisierung mit Jackson-Datenformat ... 799
10.11 ... Zum Weiterlesen ... 803
11. Netzwerkprogrammierung ... 805
11.1 ... Grundlegende Begriffe ... 805
11.2 ... URI und URL ... 807
11.3 ... URL-Parameter kodieren ... 812
11.4 ... Die Klassen URLConnection und HttpURLConnection ... 813
11.5 ... Host- und IP-Adressen ... 822
11.6 ... Socket-Verbindungen ... 827
11.7 ... HTTP Client API in Java 9 ... 841
11.8 ... Neue externe Netzwerkbibliotheken * ... 843
11.9 ... Arbeitsweise eines Webservers * ... 844
11.10 ... Verbindungen durch einen Proxy-Server * ... 853
11.11 ... Bidirektionale binäre Webkommunikation über WebSockets * ... 855
11.12 ... Datagram-Sockets * ... 856
11.13 ... Tiefer liegende Netzwerkeigenschaften * ... 862
11.14 ... Zum Weiterlesen ... 863
12. RESTful und SOAP-Web-Services ... 865
12.1 ... Web-Services ... 865
12.2 ... RESTful Web-Services ... 866
12.3 ... Daily Soap und das SOAP-Protokoll ... 868
12.4 ... Zum Weiterlesen ... 874
13. Verteilte Programmierung mit RMI ... 875
13.1 ... Entfernte Objekte und Methoden ... 875
13.2 ... Java Remote Method Invocation ... 877
13.3 ... Auf der Serverseite ... 881
13.4 ... Auf der Client-Seite ... 889
13.5 ... Entfernte Objekte übergeben und laden ... 890
13.6 ... Automatische Remote-Objekt-Aktivierung ... 891
13.7 ... Java Message Service (JMS) ... 892
13.8 ... Zum Weiterlesen ... 892
14. Typen, Reflection und Annotationen ... 895
14.1 ... Metadaten ... 895
14.2 ... Die Klasse Class ... 896
14.3 ... Klassenlader ... 899
14.4 ... Metadaten der Typen mit dem Class-Objekt ... 905
14.5 ... Attribute, Methoden und Konstruktoren ... 915
14.6 ... Objekte erzeugen und manipulieren ... 927
14.7 ... Schneller aufrufen mit MethodType und MethodHandle ... 941
14.8 ... Eigene Annotationstypen * ... 942
14.9 ... Zum Weiterlesen ... 962
15. Logging und Monitoring ... 963
15.1 ... Logging mit Java ... 963
15.2 ... Systemzustände überwachen ... 976
15.3 ... MBean-Typen, MBean-Server und weitere Begriffe ... 976
15.4 ... Geschwätzige Programme und JConsole ... 979
15.5 ... Der MBeanServer ... 981
15.6 ... Eine eigene Standard-MBean ... 982
15.7 ... Zum Weiterlesen ... 986
16. Datenbankmanagement mit JDBC ... 987
16.1 ... Relationale Datenbanken und Datenbankmanagementsysteme ... 987
16.2 ... JDBC und Datenbanktreiber ... 993
16.3 ... Eine Beispielabfrage ... 995
16.4 ... Mit Java an eine Datenbank andocken ... 996
16.5 ... Datenbankabfragen ... 1003
16.6 ... Elemente einer Datenbank ändern ... 1013
16.7 ... Die Ausnahmen bei JDBC, SQLException und Unterklassen ... 1016
16.8 ... ResultSet und RowSet * ... 1019
16.9 ... Vorbereitete Anweisungen (Prepared Statements) ... 1023
16.10 ... Transaktionen ... 1026
16.11 ... Vorbereitete Datenbankverbindungen ... 1027
16.12 ... Zum Weiterlesen ... 1031
17. Grafische Oberflächen mit Swing ... 1033
17.1 ... AWT, JavaFoundation Classes und Swing ... 1033
17.2 ... Mit NetBeans zur ersten Swing-Oberfläche ... 1038
17.3 ... Aller Swing-Anfang -- Fenster zur Welt ... 1049
17.4 ... Beschriftungen (JLabel) ... 1057
17.5 ... Icon und ImageIcon für Bilder auf Swing-Komponenten ... 1060
17.6 ... Es tut sich was -- Ereignisse beim AWT ... 1062
17.7 ... Schaltflächen ... 1076
17.8 ... Textkomponenten ... 1081
17.9 ... Swing Action * ... 1093
17.10 ... JComponent und Component als Basis aller Komponenten ... 1095
17.11 ... Container ... 1108
17.12 ... Alles Auslegungssache -- die Layoutmanager ... 1112
17.13 ... Rollbalken und Schieberegler ... 1126
17.14 ... Kontrollfelder, Optionsfelder, Kontrollfeldgruppen ... 1131
17.15 ... Fortschritte bei Operationen überwachen * ... 1137
17.16 ... Menüs und Symbolleisten ... 1139
17.17 ... Das Model-View-Controller-Konzept ... 1155
17.18 ... Auswahlmenüs, Listen und Spinner ... 1157
17.19 ... Tabellen (JTable) ... 1172
17.20 ... Bäume (JTree) ... 1187
17.21 ... Dialoge und Window-Objekte ... 1192
17.22 ... Flexibles Java-Look-and-Feel ... 1201
17.23 ... Swing-Komponenten neu erstellen oder verändern * ... 1203
17.24 ... Die Zwischenablage (Clipboard) ... 1206
17.25 ... AWT, Swing und die Threads ... 1211
17.26 ... Barrierefreiheit mit der Java Accessibility API ... 1219
17.27 ... Zeitliches Ausführen mit dem javax.swing.Timer ... 1220
17.28 ... Zum Weiterlesen ... 1221
18. Grafikprogrammierung ... 1223
18.1 ... Grundlegendes zum Zeichnen ... 1223
18.2 ... Einfache Zeichenmethoden ... 1229
18.3 ... Zeichenketten schreiben und Fonts ... 1233
18.4 ... Geometrische Objekte ... 1239
18.5 ... Das Innere und Äußere einer Form ... 1242
18.6 ... Bilder ... 1249
18.7 ... Weitere Eigenschaften von Graphics * ... 1263
18.8 ... Drucken * ... 1271
18.9 ... Benutzerinteraktionen automatisieren, Robot und Screenshots * ... 1274
18.10 ... Zum Weiterlesen ... 1280
19. JavaFX ... 1281
19.1 ... Das erste Programm mit JavaFX ... 1281
19.2 ... Zentrale Typen in JavaFX ... 1284
19.3 ... JavaFX-Komponenten und Layout-Container-Klassen ... 1286
19.4 ... Webbrowser ... 1290
19.5 ... Geometrische Objekte ... 1291
19.6 ... Füllart von Formen ... 1304
19.7 ... Grafiken ... 1308
19.8 ... Deklarative Oberflächen mit FXML ... 1313
19.9 ... Diagramme (Charts) ... 1315
19.10 ... Animationen ... 1319
19.11 ... Medien abspielen ... 1322
19.12 ... Java 3D ... 1323
19.13 ... Das Geometry-Paket * ... 1323
19.14 ... JavaFX-Scene in Swing-Applikationen einbetten ... 1324
19.15 ... Zum Weiterlesen ... 1326
20. Sicherheitskonzepte ... 1327
20.1 ... Zentrale Elemente der Java-Sicherheit ... 1327
20.2 ... Sicherheitsmanager (Security-Manager) ... 1330
20.3 ... Signierung ... 1338
20.4 ... Kryptografische Hashfunktion ... 1341
20.5 ... Verschlüsseln von Daten(-strömen) * ... 1346
20.6 ... Zum Weiterlesen ... 1349
21. Dynamische Übersetzung, Skriptsprachen, JShell ... 1351
21.1 ... Codegenerierung ... 1352
21.2 ... Programme mit der Java Compiler API übersetzen ... 1356
21.3 ... Ausführen von Skripten ... 1366
21.4 ... JShell, die interaktive REPL-Shell ... 1375
21.5 ... Zum Weiterlesen ... 1381
22. Java Native Interface (JNI) ... 1383
22.1 ... Java Native Interface und Invocation-API ... 1383
22.2 ... Eine C-Funktion in ein Java-Programm einbinden ... 1384
22.3 ... Dynamische Bibliotheken erzeugen ... 1386
22.4 ... Erweiterte JNI-Eigenschaften ... 1392
22.5 ... Einfache Anbindung von existierenden Bibliotheken ... 1397
22.6 ... Invocation-API ... 1399
22.7 ... Zum Weiterlesen ... 1400
23. Dienstprogramme für die Java-Umgebung ... 1401
23.1 ... Programme des JDK ... 1401
23.2 ... Monitoringprogramme vom JDK ... 1401
23.3 ... Ant ... 1411
23.4 ... Disassembler, Decompiler und Obfuscator ... 1417
23.5 ... Weitere Dienstprogramme ... 1426
23.6 ... Zum Weiterlesen ... 1426
Index ... 1427
1. Neues in Java 9 ... 43
1.1 ... Klassenlader (Class Loader) und Modul-/Klassenpfad ... 43
1.2 ... Module entwickeln und einbinden ... 49
1.3 ... Sprachänderungen in Java 9 ... 64
1.4 ... Bibliotheksänderungen in Java 9 ... 65
1.5 ... Änderungen in den Werkzeugen von Java 9 ... 65
1.6 ... JDK 9-HotSpot-JVM-Änderungen ... 66
1.7 ... Zum Weiterlesen ... 66
2. Die Klassenbibliothek ... 67
2.1 ... Die Java-Klassenphilosophie ... 67
2.2 ... Die Utility-Klassen System und Properties ... 74
2.3 ... Versionskennungen auslesen, aufbauen, parsen und vergleichen ... 84
2.4 ... Einfache Benutzereingaben ... 86
2.5 ... Benutzereinstellungen * ... 88
2.6 ... Maven: Build-Management und Abhängigkeiten auflösen ... 95
2.7 ... Zum Weiterlesen ... 99
3. Fortgeschrittene String-Verarbeitung ... 101
3.1 ... Erweiterte Zeicheneigenschaften ... 101
3.2 ... Reguläre Ausdrücke ... 104
3.3 ... Zerlegen von Zeichenketten ... 122
3.4 ... Zeichenkodierungen, XML/HTML-Entities, Base64 * ... 137
3.5 ... Ausgaben formatieren ... 142
3.6 ... Sprachabhängiges Vergleichen und Normalisierung * ... 154
3.7 ... Phonetische Vergleiche * ... 159
3.8 ... Zum Weiterlesen ... 160
4. Datenstrukturen und Algorithmen ... 161
4.1 ... Datenstrukturen und die Collection-API ... 161
4.2 ... Listen ... 173
4.3 ... Mengen (Sets) ... 191
4.4 ... Queues (Schlangen) und Deques ... 201
4.5 ... Stack (Kellerspeicher, Stapel) ... 209
4.6 ... Assoziative Speicher ... 211
4.7 ... Immutable Datenstrukturen ... 235
4.8 ... Mit einem Iterator durch die Daten wandern ... 245
4.9 ... Algorithmen in Collections ... 255
4.10 ... Datenstrukturen mit Änderungsmeldungen ... 268
4.11 ... Stream-API ... 278
4.12 ... Spezielle threadsichere Datenstrukturen ... 317
4.13 ... Google Guava (Google Collections Library) ... 327
4.14 ... Die Klasse BitSet für Bitmengen * ... 332
4.15 ... Zum Weiterlesen ... 338
5. Threads und nebenläufige Programmierung ... 339
5.1 ... Threads erzeugen ... 339
5.2 ... Thread-Eigenschaften und Zustände ... 344
5.3 ... Der Ausführer (Executor) kommt ... 360
5.4 ... Synchronisation über kritische Abschnitte ... 372
5.5 ... Synchronisation über Warten und Benachrichtigen ... 396
5.6 ... Datensynchronisation durch besondere Concurrency-Klassen * ... 408
5.7 ... Atomare Operationen und frische Werte mit volatile * ... 414
5.8 ... Teile und herrsche mit Fork und Join * ... 418
5.9 ... Mit dem Thread verbundene Variablen * ... 424
5.10 ... Threads in einer Thread-Gruppe * ... 430
5.11 ... Reaktive Programmierung und die Flow-API * ... 438
5.12 ... Zeitgesteuerte Abläufe ... 440
5.13 ... Ausführen externer Programme, Starten von Prozessen * ... 442
5.14 ... Den Stack-Trace erfragen * ... 450
5.15 ... Einen Abbruch der virtuellen Maschine erkennen ... 455
5.16 ... Zum Weiterlesen ... 457
6. Raum und Zeit ... 459
6.1 ... Sprachen der Länder ... 459
6.2 ... Internationalisierung und Lokalisierung ... 463
6.3 ... Weltzeit * ... 468
6.4 ... Wichtige Datum-Klassen im Überblick ... 469
6.5 ... Die Klasse Date ... 472
6.6 ... Date-Time-API ... 474
6.7 ... Calendar und GregorianCalendar ... 504
6.8 ... Zeitzonen in Java * ... 517
6.9 ... Formatieren und Parsen von Date-Objekten ... 520
6.10 ... Die Default-Falle ... 528
6.11 ... Zum Weiterlesen ... 529
7. Dateien, Verzeichnisse und Dateizugriffe ... 531
7.1 ... Alte und neue Welt in java.io und java.nio ... 531
7.2 ... Dateisysteme und Pfade ... 533
7.3 ... Datei- und Verzeichnisoperationen mit der Klasse File ... 569
7.4 ... Dateien mit wahlfreiem Zugriff ... 585
7.5 ... Wahlfreier Zugriff mit SeekableByteChannel und ByteBuffer * ... 591
7.6 ... Zum Weiterlesen ... 595
8. Datenströme ... 597
8.1 ... Basisklassen für die Ein-/Ausgabe ... 597
8.2 ... Lesen aus Dateien und Schreiben in Dateien ... 610
8.3 ... Übersicht über Ein-/Ausgabeklassen ... 616
8.4 ... Formatierte Textausgaben ... 620
8.5 ... Die FileXXX-Stromklassen ... 628
8.6 ... Schreiben und Lesen aus Strings und Byte-Feldern ... 635
8.7 ... Datenströme filtern und verketten ... 640
8.8 ... Vermittler zwischen Byte-Streams und Unicode-Strömen ... 653
8.9 ... Kommunikation zwischen Threads mit Pipes * ... 657
8.10 ... Prüfsummen ... 660
8.11 ... Persistente Objekte und Serialisierung ... 664
8.12 ... Alternative Datenaustauschformate ... 685
8.13 ... Zum Weiterlesen ... 688
9. Dateiformate ... 689
9.1 ... Einfache Dateiformate für strukturierte Daten ... 690
9.2 ... Dokumentenformate ... 694
9.3 ... Datenkompression * ... 697
9.4 ... Bildformate ... 711
9.5 ... Audiodateien ... 711
9.6 ... Zum Weiterlesen ... 715
10. Die eXtensible Markup Language (XML) und JSON ... 717
10.1 ... Auszeichnungssprachen ... 717
10.2 ... Eigenschaften von XML-Dokumenten ... 718
10.3 ... Die Java-APIs für XML ... 729
10.4 ... Java Architecture for XML Binding (JAXB) ... 732
10.5 ... Serielle Verarbeitung mit StAX ... 755
10.6 ... Serielle Verarbeitung von XML mit SAX * ... 768
10.7 ... XML-Dateien mit JDOM verarbeiten ... 772
10.8 ... Transformationen mit XSLT * ... 794
10.9 ... XML-Schema-Validierung * ... 797
10.10 ... JSON-Serialisierung mit Jackson-Datenformat ... 799
10.11 ... Zum Weiterlesen ... 803
11. Netzwerkprogrammierung ... 805
11.1 ... Grundlegende Begriffe ... 805
11.2 ... URI und URL ... 807
11.3 ... URL-Parameter kodieren ... 812
11.4 ... Die Klassen URLConnection und HttpURLConnection ... 813
11.5 ... Host- und IP-Adressen ... 822
11.6 ... Socket-Verbindungen ... 827
11.7 ... HTTP Client API in Java 9 ... 841
11.8 ... Neue externe Netzwerkbibliotheken * ... 843
11.9 ... Arbeitsweise eines Webservers * ... 844
11.10 ... Verbindungen durch einen Proxy-Server * ... 853
11.11 ... Bidirektionale binäre Webkommunikation über WebSockets * ... 855
11.12 ... Datagram-Sockets * ... 856
11.13 ... Tiefer liegende Netzwerkeigenschaften * ... 862
11.14 ... Zum Weiterlesen ... 863
12. RESTful und SOAP-Web-Services ... 865
12.1 ... Web-Services ... 865
12.2 ... RESTful Web-Services ... 866
12.3 ... Daily Soap und das SOAP-Protokoll ... 868
12.4 ... Zum Weiterlesen ... 874
13. Verteilte Programmierung mit RMI ... 875
13.1 ... Entfernte Objekte und Methoden ... 875
13.2 ... Java Remote Method Invocation ... 877
13.3 ... Auf der Serverseite ... 881
13.4 ... Auf der Client-Seite ... 889
13.5 ... Entfernte Objekte übergeben und laden ... 890
13.6 ... Automatische Remote-Objekt-Aktivierung ... 891
13.7 ... Java Message Service (JMS) ... 892
13.8 ... Zum Weiterlesen ... 892
14. Typen, Reflection und Annotationen ... 895
14.1 ... Metadaten ... 895
14.2 ... Die Klasse Class ... 896
14.3 ... Klassenlader ... 899
14.4 ... Metadaten der Typen mit dem Class-Objekt ... 905
14.5 ... Attribute, Methoden und Konstruktoren ... 915
14.6 ... Objekte erzeugen und manipulieren ... 927
14.7 ... Schneller aufrufen mit MethodType und MethodHandle ... 941
14.8 ... Eigene Annotationstypen * ... 942
14.9 ... Zum Weiterlesen ... 962
15. Logging und Monitoring ... 963
15.1 ... Logging mit Java ... 963
15.2 ... Systemzustände überwachen ... 976
15.3 ... MBean-Typen, MBean-Server und weitere Begriffe ... 976
15.4 ... Geschwätzige Programme und JConsole ... 979
15.5 ... Der MBeanServer ... 981
15.6 ... Eine eigene Standard-MBean ... 982
15.7 ... Zum Weiterlesen ... 986
16. Datenbankmanagement mit JDBC ... 987
16.1 ... Relationale Datenbanken und Datenbankmanagementsysteme ... 987
16.2 ... JDBC und Datenbanktreiber ... 993
16.3 ... Eine Beispielabfrage ... 995
16.4 ... Mit Java an eine Datenbank andocken ... 996
16.5 ... Datenbankabfragen ... 1003
16.6 ... Elemente einer Datenbank ändern ... 1013
16.7 ... Die Ausnahmen bei JDBC, SQLException und Unterklassen ... 1016
16.8 ... ResultSet und RowSet * ... 1019
16.9 ... Vorbereitete Anweisungen (Prepared Statements) ... 1023
16.10 ... Transaktionen ... 1026
16.11 ... Vorbereitete Datenbankverbindungen ... 1027
16.12 ... Zum Weiterlesen ... 1031
17. Grafische Oberflächen mit Swing ... 1033
17.1 ... AWT, JavaFoundation Classes und Swing ... 1033
17.2 ... Mit NetBeans zur ersten Swing-Oberfläche ... 1038
17.3 ... Aller Swing-Anfang -- Fenster zur Welt ... 1049
17.4 ... Beschriftungen (JLabel) ... 1057
17.5 ... Icon und ImageIcon für Bilder auf Swing-Komponenten ... 1060
17.6 ... Es tut sich was -- Ereignisse beim AWT ... 1062
17.7 ... Schaltflächen ... 1076
17.8 ... Textkomponenten ... 1081
17.9 ... Swing Action * ... 1093
17.10 ... JComponent und Component als Basis aller Komponenten ... 1095
17.11 ... Container ... 1108
17.12 ... Alles Auslegungssache -- die Layoutmanager ... 1112
17.13 ... Rollbalken und Schieberegler ... 1126
17.14 ... Kontrollfelder, Optionsfelder, Kontrollfeldgruppen ... 1131
17.15 ... Fortschritte bei Operationen überwachen * ... 1137
17.16 ... Menüs und Symbolleisten ... 1139
17.17 ... Das Model-View-Controller-Konzept ... 1155
17.18 ... Auswahlmenüs, Listen und Spinner ... 1157
17.19 ... Tabellen (JTable) ... 1172
17.20 ... Bäume (JTree) ... 1187
17.21 ... Dialoge und Window-Objekte ... 1192
17.22 ... Flexibles Java-Look-and-Feel ... 1201
17.23 ... Swing-Komponenten neu erstellen oder verändern * ... 1203
17.24 ... Die Zwischenablage (Clipboard) ... 1206
17.25 ... AWT, Swing und die Threads ... 1211
17.26 ... Barrierefreiheit mit der Java Accessibility API ... 1219
17.27 ... Zeitliches Ausführen mit dem javax.swing.Timer ... 1220
17.28 ... Zum Weiterlesen ... 1221
18. Grafikprogrammierung ... 1223
18.1 ... Grundlegendes zum Zeichnen ... 1223
18.2 ... Einfache Zeichenmethoden ... 1229
18.3 ... Zeichenketten schreiben und Fonts ... 1233
18.4 ... Geometrische Objekte ... 1239
18.5 ... Das Innere und Äußere einer Form ... 1242
18.6 ... Bilder ... 1249
18.7 ... Weitere Eigenschaften von Graphics * ... 1263
18.8 ... Drucken * ... 1271
18.9 ... Benutzerinteraktionen automatisieren, Robot und Screenshots * ... 1274
18.10 ... Zum Weiterlesen ... 1280
19. JavaFX ... 1281
19.1 ... Das erste Programm mit JavaFX ... 1281
19.2 ... Zentrale Typen in JavaFX ... 1284
19.3 ... JavaFX-Komponenten und Layout-Container-Klassen ... 1286
19.4 ... Webbrowser ... 1290
19.5 ... Geometrische Objekte ... 1291
19.6 ... Füllart von Formen ... 1304
19.7 ... Grafiken ... 1308
19.8 ... Deklarative Oberflächen mit FXML ... 1313
19.9 ... Diagramme (Charts) ... 1315
19.10 ... Animationen ... 1319
19.11 ... Medien abspielen ... 1322
19.12 ... Java 3D ... 1323
19.13 ... Das Geometry-Paket * ... 1323
19.14 ... JavaFX-Scene in Swing-Applikationen einbetten ... 1324
19.15 ... Zum Weiterlesen ... 1326
20. Sicherheitskonzepte ... 1327
20.1 ... Zentrale Elemente der Java-Sicherheit ... 1327
20.2 ... Sicherheitsmanager (Security-Manager) ... 1330
20.3 ... Signierung ... 1338
20.4 ... Kryptografische Hashfunktion ... 1341
20.5 ... Verschlüsseln von Daten(-strömen) * ... 1346
20.6 ... Zum Weiterlesen ... 1349
21. Dynamische Übersetzung, Skriptsprachen, JShell ... 1351
21.1 ... Codegenerierung ... 1352
21.2 ... Programme mit der Java Compiler API übersetzen ... 1356
21.3 ... Ausführen von Skripten ... 1366
21.4 ... JShell, die interaktive REPL-Shell ... 1375
21.5 ... Zum Weiterlesen ... 1381
22. Java Native Interface (JNI) ... 1383
22.1 ... Java Native Interface und Invocation-API ... 1383
22.2 ... Eine C-Funktion in ein Java-Programm einbinden ... 1384
22.3 ... Dynamische Bibliotheken erzeugen ... 1386
22.4 ... Erweiterte JNI-Eigenschaften ... 1392
22.5 ... Einfache Anbindung von existierenden Bibliotheken ... 1397
22.6 ... Invocation-API ... 1399
22.7 ... Zum Weiterlesen ... 1400
23. Dienstprogramme für die Java-Umgebung ... 1401
23.1 ... Programme des JDK ... 1401
23.2 ... Monitoringprogramme vom JDK ... 1401
23.3 ... Ant ... 1411
23.4 ... Disassembler, Decompiler und Obfuscator ... 1417
23.5 ... Weitere Dienstprogramme ... 1426
23.6 ... Zum Weiterlesen ... 1426
Index ... 1427
1. Vorwort ... 35
1. Neues in Java 9 ... 43
1.1 ... Klassenlader (Class Loader) und Modul-/Klassenpfad ... 43
1.2 ... Module entwickeln und einbinden ... 49
1.3 ... Sprachänderungen in Java 9 ... 64
1.4 ... Bibliotheksänderungen in Java 9 ... 65
1.5 ... Änderungen in den Werkzeugen von Java 9 ... 65
1.6 ... JDK 9-HotSpot-JVM-Änderungen ... 66
1.7 ... Zum Weiterlesen ... 66
2. Die Klassenbibliothek ... 67
2.1 ... Die Java-Klassenphilosophie ... 67
2.2 ... Die Utility-Klassen System und Properties ... 74
2.3 ... Versionskennungen auslesen, aufbauen, parsen und vergleichen ... 84
2.4 ... Einfache Benutzereingaben ... 86
2.5 ... Benutzereinstellungen * ... 88
2.6 ... Maven: Build-Management und Abhängigkeiten auflösen ... 95
2.7 ... Zum Weiterlesen ... 99
3. Fortgeschrittene String-Verarbeitung ... 101
3.1 ... Erweiterte Zeicheneigenschaften ... 101
3.2 ... Reguläre Ausdrücke ... 104
3.3 ... Zerlegen von Zeichenketten ... 122
3.4 ... Zeichenkodierungen, XML/HTML-Entities, Base64 * ... 137
3.5 ... Ausgaben formatieren ... 142
3.6 ... Sprachabhängiges Vergleichen und Normalisierung * ... 154
3.7 ... Phonetische Vergleiche * ... 159
3.8 ... Zum Weiterlesen ... 160
4. Datenstrukturen und Algorithmen ... 161
4.1 ... Datenstrukturen und die Collection-API ... 161
4.2 ... Listen ... 173
4.3 ... Mengen (Sets) ... 191
4.4 ... Queues (Schlangen) und Deques ... 201
4.5 ... Stack (Kellerspeicher, Stapel) ... 209
4.6 ... Assoziative Speicher ... 211
4.7 ... Immutable Datenstrukturen ... 235
4.8 ... Mit einem Iterator durch die Daten wandern ... 245
4.9 ... Algorithmen in Collections ... 255
4.10 ... Datenstrukturen mit Änderungsmeldungen ... 268
4.11 ... Stream-API ... 278
4.12 ... Spezielle threadsichere Datenstrukturen ... 317
4.13 ... Google Guava (Google Collections Library) ... 327
4.14 ... Die Klasse BitSet für Bitmengen * ... 332
4.15 ... Zum Weiterlesen ... 338
5. Threads und nebenläufige Programmierung ... 339
5.1 ... Threads erzeugen ... 339
5.2 ... Thread-Eigenschaften und Zustände ... 344
5.3 ... Der Ausführer (Executor) kommt ... 360
5.4 ... Synchronisation über kritische Abschnitte ... 372
5.5 ... Synchronisation über Warten und Benachrichtigen ... 396
5.6 ... Datensynchronisation durch besondere Concurrency-Klassen * ... 408
5.7 ... Atomare Operationen und frische Werte mit volatile * ... 414
5.8 ... Teile und herrsche mit Fork und Join * ... 418
5.9 ... Mit dem Thread verbundene Variablen * ... 424
5.10 ... Threads in einer Thread-Gruppe * ... 430
5.11 ... Reaktive Programmierung und die Flow-API * ... 438
5.12 ... Zeitgesteuerte Abläufe ... 440
5.13 ... Ausführen externer Programme, Starten von Prozessen * ... 442
5.14 ... Den Stack-Trace erfragen * ... 450
5.15 ... Einen Abbruch der virtuellen Maschine erkennen ... 455
5.16 ... Zum Weiterlesen ... 457
6. Raum und Zeit ... 459
6.1 ... Sprachen der Länder ... 459
6.2 ... Internationalisierung und Lokalisierung ... 463
6.3 ... Weltzeit * ... 468
6.4 ... Wichtige Datum-Klassen im Überblick ... 469
6.5 ... Die Klasse Date ... 472
6.6 ... Date-Time-API ... 474
6.7 ... Calendar und GregorianCalendar ... 504
6.8 ... Zeitzonen in Java * ... 517
6.9 ... Formatieren und Parsen von Date-Objekten ... 520
6.10 ... Die Default-Falle ... 528
6.11 ... Zum Weiterlesen ... 529
7. Dateien, Verzeichnisse und Dateizugriffe ... 531
7.1 ... Alte und neue Welt in java.io und java.nio ... 531
7.2 ... Dateisysteme und Pfade ... 533
7.3 ... Datei- und Verzeichnisoperationen mit der Klasse File ... 569
7.4 ... Dateien mit wahlfreiem Zugriff ... 585
7.5 ... Wahlfreier Zugriff mit SeekableByteChannel und ByteBuffer * ... 591
7.6 ... Zum Weiterlesen ... 595
8. Datenströme ... 597
8.1 ... Basisklassen für die Ein-/Ausgabe ... 597
8.2 ... Lesen aus Dateien und Schreiben in Dateien ... 610
8.3 ... Übersicht über Ein-/Ausgabeklassen ... 616
8.4 ... Formatierte Textausgaben ... 620
8.5 ... Die FileXXX-Stromklassen ... 628
8.6 ... Schreiben und Lesen aus Strings und Byte-Feldern ... 635
8.7 ... Datenströme filtern und verketten ... 640
8.8 ... Vermittler zwischen Byte-Streams und Unicode-Strömen ... 653
8.9 ... Kommunikation zwischen Threads mit Pipes * ... 657
8.10 ... Prüfsummen ... 660
8.11 ... Persistente Objekte und Serialisierung ... 664
8.12 ... Alternative Datenaustauschformate ... 685
8.13 ... Zum Weiterlesen ... 688
9. Dateiformate ... 689
9.1 ... Einfache Dateiformate für strukturierte Daten ... 690
9.2 ... Dokumentenformate ... 694
9.3 ... Datenkompression * ... 697
9.4 ... Bildformate ... 711
9.5 ... Audiodateien ... 711
9.6 ... Zum Weiterlesen ... 715
10. Die eXtensible Markup Language (XML) und JSON ... 717
10.1 ... Auszeichnungssprachen ... 717
10.2 ... Eigenschaften von XML-Dokumenten ... 718
10.3 ... Die Java-APIs für XML ... 729
10.4 ... Java Architecture for XML Binding (JAXB) ... 732
10.5 ... Serielle Verarbeitung mit StAX ... 755
10.6 ... Serielle Verarbeitung von XML mit SAX * ... 768
10.7 ... XML-Dateien mit JDOM verarbeiten ... 772
10.8 ... Transformationen mit XSLT * ... 794
10.9 ... XML-Schema-Validierung * ... 797
10.10 ... JSON-Serialisierung mit Jackson-Datenformat ... 799
10.11 ... Zum Weiterlesen ... 803
11. Netzwerkprogrammierung ... 805
11.1 ... Grundlegende Begriffe ... 805
11.2 ... URI und URL ... 807
11.3 ... URL-Parameter kodieren ... 812
11.4 ... Die Klassen URLConnection und HttpURLConnection ... 813
11.5 ... Host- und IP-Adressen ... 822
11.6 ... Socket-Verbindungen ... 827
11.7 ... HTTP Client API in Java 9 ... 841
11.8 ... Neue externe Netzwerkbibliotheken * ... 843
11.9 ... Arbeitsweise eines Webservers * ... 844
11.10 ... Verbindungen durch einen Proxy-Server * ... 853
11.11 ... Bidirektionale binäre Webkommunikation über WebSockets * ... 855
11.12 ... Datagram-Sockets * ... 856
11.13 ... Tiefer liegende Netzwerkeigenschaften * ... 862
11.14 ... Zum Weiterlesen ... 863
12. RESTful und SOAP-Web-Services ... 865
12.1 ... Web-Services ... 865
12.2 ... RESTful Web-Services ... 866
12.3 ... Daily Soap und das SOAP-Protokoll ... 868
12.4 ... Zum Weiterlesen ... 874
13. Verteilte Programmierung mit RMI ... 875
13.1 ... Entfernte Objekte und Methoden ... 875
13.2 ... Java Remote Method Invocation ... 877
13.3 ... Auf der Serverseite ... 881
13.4 ... Auf der Client-Seite ... 889
13.5 ... Entfernte Objekte übergeben und laden ... 890
13.6 ... Automatische Remote-Objekt-Aktivierung ... 891
13.7 ... Java Message Service (JMS) ... 892
13.8 ... Zum Weiterlesen ... 892
14. Typen, Reflection und Annotationen ... 895
14.1 ... Metadaten ... 895
14.2 ... Die Klasse Class ... 896
14.3 ... Klassenlader ... 899
14.4 ... Metadaten der Typen mit dem Class-Objekt ... 905
14.5 ... Attribute, Methoden und Konstruktoren ... 915
14.6 ... Objekte erzeugen und manipulieren ... 927
14.7 ... Schneller aufrufen mit MethodType und MethodHandle ... 941
14.8 ... Eigene Annotationstypen * ... 942
14.9 ... Zum Weiterlesen ... 962
15. Logging und Monitoring ... 963
15.1 ... Logging mit Java ... 963
15.2 ... Systemzustände überwachen ... 976
15.3 ... MBean-Typen, MBean-Server und weitere Begriffe ... 976
15.4 ... Geschwätzige Programme und JConsole ... 979
15.5 ... Der MBeanServer ... 981
15.6 ... Eine eigene Standard-MBean ... 982
15.7 ... Zum Weiterlesen ... 986
16. Datenbankmanagement mit JDBC ... 987
16.1 ... Relationale Datenbanken und Datenbankmanagementsysteme ... 987
16.2 ... JDBC und Datenbanktreiber ... 993
16.3 ... Eine Beispielabfrage ... 995
16.4 ... Mit Java an eine Datenbank andocken ... 996
16.5 ... Datenbankabfragen ... 1003
16.6 ... Elemente einer Datenbank ändern ... 1013
16.7 ... Die Ausnahmen bei JDBC, SQLException und Unterklassen ... 1016
16.8 ... ResultSet und RowSet * ... 1019
16.9 ... Vorbereitete Anweisungen (Prepared Statements) ... 1023
16.10 ... Transaktionen ... 1026
16.11 ... Vorbereitete Datenbankverbindungen ... 1027
16.12 ... Zum Weiterlesen ... 1031
17. Grafische Oberflächen mit Swing ... 1033
17.1 ... AWT, JavaFoundation Classes und Swing ... 1033
17.2 ... Mit NetBeans zur ersten Swing-Oberfläche ... 1038
17.3 ... Aller Swing-Anfang -- Fenster zur Welt ... 1049
17.4 ... Beschriftungen (JLabel) ... 1057
17.5 ... Icon und ImageIcon für Bilder auf Swing-Komponenten ... 1060
17.6 ... Es tut sich was -- Ereignisse beim AWT ... 1062
17.7 ... Schaltflächen ... 1076
17.8 ... Textkomponenten ... 1081
17.9 ... Swing Action * ... 1093
17.10 ... JComponent und Component als Basis aller Komponenten ... 1095
17.11 ... Container ... 1108
17.12 ... Alles Auslegungssache -- die Layoutmanager ... 1112
17.13 ... Rollbalken und Schieberegler ... 1126
17.14 ... Kontrollfelder, Optionsfelder, Kontrollfeldgruppen ... 1131
17.15 ... Fortschritte bei Operationen überwachen * ... 1137
17.16 ... Menüs und Symbolleisten ... 1139
17.17 ... Das Model-View-Controller-Konzept ... 1155
17.18 ... Auswahlmenüs, Listen und Spinner ... 1157
17.19 ... Tabellen (JTable) ... 1172
17.20 ... Bäume (JTree) ... 1187
17.21 ... Dialoge und Window-Objekte ... 1192
17.22 ... Flexibles Java-Look-and-Feel ... 1201
17.23 ... Swing-Komponenten neu erstellen oder verändern * ... 1203
17.24 ... Die Zwischenablage (Clipboard) ... 1206
17.25 ... AWT, Swing und die Threads ... 1211
17.26 ... Barrierefreiheit mit der Java Accessibility API ... 1219
17.27 ... Zeitliches Ausführen mit dem javax.swing.Timer ... 1220
17.28 ... Zum Weiterlesen ... 1221
18. Grafikprogrammierung ... 1223
18.1 ... Grundlegendes zum Zeichnen ... 1223
18.2 ... Einfache Zeichenmethoden ... 1229
18.3 ... Zeichenketten schreiben und Fonts ... 1233
18.4 ... Geometrische Objekte ... 1239
18.5 ... Das Innere und Äußere einer Form ... 1242
18.6 ... Bilder ... 1249
18.7 ... Weitere Eigenschaften von Graphics * ... 1263
18.8 ... Drucken * ... 1271
18.9 ... Benutzerinteraktionen automatisieren, Robot und Screenshots * ... 1274
18.10 ... Zum Weiterlesen ... 1280
19. JavaFX ... 1281
19.1 ... Das erste Programm mit JavaFX ... 1281
19.2 ... Zentrale Typen in JavaFX ... 1284
19.3 ... JavaFX-Komponenten und Layout-Container-Klassen ... 1286
19.4 ... Webbrowser ... 1290
19.5 ... Geometrische Objekte ... 1291
19.6 ... Füllart von Formen ... 1304
19.7 ... Grafiken ... 1308
19.8 ... Deklarative Oberflächen mit FXML ... 1313
19.9 ... Diagramme (Charts) ... 1315
19.10 ... Animationen ... 1319
19.11 ... Medien abspielen ... 1322
19.12 ... Java 3D ... 1323
19.13 ... Das Geometry-Paket * ... 1323
19.14 ... JavaFX-Scene in Swing-Applikationen einbetten ... 1324
19.15 ... Zum Weiterlesen ... 1326
20. Sicherheitskonzepte ... 1327
20.1 ... Zentrale Elemente der Java-Sicherheit ... 1327
20.2 ... Sicherheitsmanager (Security-Manager) ... 1330
20.3 ... Signierung ... 1338
20.4 ... Kryptografische Hashfunktion ... 1341
20.5 ... Verschlüsseln von Daten(-strömen) * ... 1346
20.6 ... Zum Weiterlesen ... 1349
21. Dynamische Übersetzung, Skriptsprachen, JShell ... 1351
21.1 ... Codegenerierung ... 1352
21.2 ... Programme mit der Java Compiler API übersetzen ... 1356
21.3 ... Ausführen von Skripten ... 1366
21.4 ... JShell, die interaktive REPL-Shell ... 1375
21.5 ... Zum Weiterlesen ... 1381
22. Java Native Interface (JNI) ... 1383
22.1 ... Java Native Interface und Invocation-API ... 1383
22.2 ... Eine C-Funktion in ein Java-Programm einbinden ... 1384
22.3 ... Dynamische Bibliotheken erzeugen ... 1386
22.4 ... Erweiterte JNI-Eigenschaften ... 1392
22.5 ... Einfache Anbindung von existierenden Bibliotheken ... 1397
22.6 ... Invocation-API ... 1399
22.7 ... Zum Weiterlesen ... 1400
23. Dienstprogramme für die Java-Umgebung ... 1401
23.1 ... Programme des JDK ... 1401
23.2 ... Monitoringprogramme vom JDK ... 1401
23.3 ... Ant ... 1411
23.4 ... Disassembler, Decompiler und Obfuscator ... 1417
23.5 ... Weitere Dienstprogramme ... 1426
23.6 ... Zum Weiterlesen ... 1426
Index ... 1427
1. Neues in Java 9 ... 43
1.1 ... Klassenlader (Class Loader) und Modul-/Klassenpfad ... 43
1.2 ... Module entwickeln und einbinden ... 49
1.3 ... Sprachänderungen in Java 9 ... 64
1.4 ... Bibliotheksänderungen in Java 9 ... 65
1.5 ... Änderungen in den Werkzeugen von Java 9 ... 65
1.6 ... JDK 9-HotSpot-JVM-Änderungen ... 66
1.7 ... Zum Weiterlesen ... 66
2. Die Klassenbibliothek ... 67
2.1 ... Die Java-Klassenphilosophie ... 67
2.2 ... Die Utility-Klassen System und Properties ... 74
2.3 ... Versionskennungen auslesen, aufbauen, parsen und vergleichen ... 84
2.4 ... Einfache Benutzereingaben ... 86
2.5 ... Benutzereinstellungen * ... 88
2.6 ... Maven: Build-Management und Abhängigkeiten auflösen ... 95
2.7 ... Zum Weiterlesen ... 99
3. Fortgeschrittene String-Verarbeitung ... 101
3.1 ... Erweiterte Zeicheneigenschaften ... 101
3.2 ... Reguläre Ausdrücke ... 104
3.3 ... Zerlegen von Zeichenketten ... 122
3.4 ... Zeichenkodierungen, XML/HTML-Entities, Base64 * ... 137
3.5 ... Ausgaben formatieren ... 142
3.6 ... Sprachabhängiges Vergleichen und Normalisierung * ... 154
3.7 ... Phonetische Vergleiche * ... 159
3.8 ... Zum Weiterlesen ... 160
4. Datenstrukturen und Algorithmen ... 161
4.1 ... Datenstrukturen und die Collection-API ... 161
4.2 ... Listen ... 173
4.3 ... Mengen (Sets) ... 191
4.4 ... Queues (Schlangen) und Deques ... 201
4.5 ... Stack (Kellerspeicher, Stapel) ... 209
4.6 ... Assoziative Speicher ... 211
4.7 ... Immutable Datenstrukturen ... 235
4.8 ... Mit einem Iterator durch die Daten wandern ... 245
4.9 ... Algorithmen in Collections ... 255
4.10 ... Datenstrukturen mit Änderungsmeldungen ... 268
4.11 ... Stream-API ... 278
4.12 ... Spezielle threadsichere Datenstrukturen ... 317
4.13 ... Google Guava (Google Collections Library) ... 327
4.14 ... Die Klasse BitSet für Bitmengen * ... 332
4.15 ... Zum Weiterlesen ... 338
5. Threads und nebenläufige Programmierung ... 339
5.1 ... Threads erzeugen ... 339
5.2 ... Thread-Eigenschaften und Zustände ... 344
5.3 ... Der Ausführer (Executor) kommt ... 360
5.4 ... Synchronisation über kritische Abschnitte ... 372
5.5 ... Synchronisation über Warten und Benachrichtigen ... 396
5.6 ... Datensynchronisation durch besondere Concurrency-Klassen * ... 408
5.7 ... Atomare Operationen und frische Werte mit volatile * ... 414
5.8 ... Teile und herrsche mit Fork und Join * ... 418
5.9 ... Mit dem Thread verbundene Variablen * ... 424
5.10 ... Threads in einer Thread-Gruppe * ... 430
5.11 ... Reaktive Programmierung und die Flow-API * ... 438
5.12 ... Zeitgesteuerte Abläufe ... 440
5.13 ... Ausführen externer Programme, Starten von Prozessen * ... 442
5.14 ... Den Stack-Trace erfragen * ... 450
5.15 ... Einen Abbruch der virtuellen Maschine erkennen ... 455
5.16 ... Zum Weiterlesen ... 457
6. Raum und Zeit ... 459
6.1 ... Sprachen der Länder ... 459
6.2 ... Internationalisierung und Lokalisierung ... 463
6.3 ... Weltzeit * ... 468
6.4 ... Wichtige Datum-Klassen im Überblick ... 469
6.5 ... Die Klasse Date ... 472
6.6 ... Date-Time-API ... 474
6.7 ... Calendar und GregorianCalendar ... 504
6.8 ... Zeitzonen in Java * ... 517
6.9 ... Formatieren und Parsen von Date-Objekten ... 520
6.10 ... Die Default-Falle ... 528
6.11 ... Zum Weiterlesen ... 529
7. Dateien, Verzeichnisse und Dateizugriffe ... 531
7.1 ... Alte und neue Welt in java.io und java.nio ... 531
7.2 ... Dateisysteme und Pfade ... 533
7.3 ... Datei- und Verzeichnisoperationen mit der Klasse File ... 569
7.4 ... Dateien mit wahlfreiem Zugriff ... 585
7.5 ... Wahlfreier Zugriff mit SeekableByteChannel und ByteBuffer * ... 591
7.6 ... Zum Weiterlesen ... 595
8. Datenströme ... 597
8.1 ... Basisklassen für die Ein-/Ausgabe ... 597
8.2 ... Lesen aus Dateien und Schreiben in Dateien ... 610
8.3 ... Übersicht über Ein-/Ausgabeklassen ... 616
8.4 ... Formatierte Textausgaben ... 620
8.5 ... Die FileXXX-Stromklassen ... 628
8.6 ... Schreiben und Lesen aus Strings und Byte-Feldern ... 635
8.7 ... Datenströme filtern und verketten ... 640
8.8 ... Vermittler zwischen Byte-Streams und Unicode-Strömen ... 653
8.9 ... Kommunikation zwischen Threads mit Pipes * ... 657
8.10 ... Prüfsummen ... 660
8.11 ... Persistente Objekte und Serialisierung ... 664
8.12 ... Alternative Datenaustauschformate ... 685
8.13 ... Zum Weiterlesen ... 688
9. Dateiformate ... 689
9.1 ... Einfache Dateiformate für strukturierte Daten ... 690
9.2 ... Dokumentenformate ... 694
9.3 ... Datenkompression * ... 697
9.4 ... Bildformate ... 711
9.5 ... Audiodateien ... 711
9.6 ... Zum Weiterlesen ... 715
10. Die eXtensible Markup Language (XML) und JSON ... 717
10.1 ... Auszeichnungssprachen ... 717
10.2 ... Eigenschaften von XML-Dokumenten ... 718
10.3 ... Die Java-APIs für XML ... 729
10.4 ... Java Architecture for XML Binding (JAXB) ... 732
10.5 ... Serielle Verarbeitung mit StAX ... 755
10.6 ... Serielle Verarbeitung von XML mit SAX * ... 768
10.7 ... XML-Dateien mit JDOM verarbeiten ... 772
10.8 ... Transformationen mit XSLT * ... 794
10.9 ... XML-Schema-Validierung * ... 797
10.10 ... JSON-Serialisierung mit Jackson-Datenformat ... 799
10.11 ... Zum Weiterlesen ... 803
11. Netzwerkprogrammierung ... 805
11.1 ... Grundlegende Begriffe ... 805
11.2 ... URI und URL ... 807
11.3 ... URL-Parameter kodieren ... 812
11.4 ... Die Klassen URLConnection und HttpURLConnection ... 813
11.5 ... Host- und IP-Adressen ... 822
11.6 ... Socket-Verbindungen ... 827
11.7 ... HTTP Client API in Java 9 ... 841
11.8 ... Neue externe Netzwerkbibliotheken * ... 843
11.9 ... Arbeitsweise eines Webservers * ... 844
11.10 ... Verbindungen durch einen Proxy-Server * ... 853
11.11 ... Bidirektionale binäre Webkommunikation über WebSockets * ... 855
11.12 ... Datagram-Sockets * ... 856
11.13 ... Tiefer liegende Netzwerkeigenschaften * ... 862
11.14 ... Zum Weiterlesen ... 863
12. RESTful und SOAP-Web-Services ... 865
12.1 ... Web-Services ... 865
12.2 ... RESTful Web-Services ... 866
12.3 ... Daily Soap und das SOAP-Protokoll ... 868
12.4 ... Zum Weiterlesen ... 874
13. Verteilte Programmierung mit RMI ... 875
13.1 ... Entfernte Objekte und Methoden ... 875
13.2 ... Java Remote Method Invocation ... 877
13.3 ... Auf der Serverseite ... 881
13.4 ... Auf der Client-Seite ... 889
13.5 ... Entfernte Objekte übergeben und laden ... 890
13.6 ... Automatische Remote-Objekt-Aktivierung ... 891
13.7 ... Java Message Service (JMS) ... 892
13.8 ... Zum Weiterlesen ... 892
14. Typen, Reflection und Annotationen ... 895
14.1 ... Metadaten ... 895
14.2 ... Die Klasse Class ... 896
14.3 ... Klassenlader ... 899
14.4 ... Metadaten der Typen mit dem Class-Objekt ... 905
14.5 ... Attribute, Methoden und Konstruktoren ... 915
14.6 ... Objekte erzeugen und manipulieren ... 927
14.7 ... Schneller aufrufen mit MethodType und MethodHandle ... 941
14.8 ... Eigene Annotationstypen * ... 942
14.9 ... Zum Weiterlesen ... 962
15. Logging und Monitoring ... 963
15.1 ... Logging mit Java ... 963
15.2 ... Systemzustände überwachen ... 976
15.3 ... MBean-Typen, MBean-Server und weitere Begriffe ... 976
15.4 ... Geschwätzige Programme und JConsole ... 979
15.5 ... Der MBeanServer ... 981
15.6 ... Eine eigene Standard-MBean ... 982
15.7 ... Zum Weiterlesen ... 986
16. Datenbankmanagement mit JDBC ... 987
16.1 ... Relationale Datenbanken und Datenbankmanagementsysteme ... 987
16.2 ... JDBC und Datenbanktreiber ... 993
16.3 ... Eine Beispielabfrage ... 995
16.4 ... Mit Java an eine Datenbank andocken ... 996
16.5 ... Datenbankabfragen ... 1003
16.6 ... Elemente einer Datenbank ändern ... 1013
16.7 ... Die Ausnahmen bei JDBC, SQLException und Unterklassen ... 1016
16.8 ... ResultSet und RowSet * ... 1019
16.9 ... Vorbereitete Anweisungen (Prepared Statements) ... 1023
16.10 ... Transaktionen ... 1026
16.11 ... Vorbereitete Datenbankverbindungen ... 1027
16.12 ... Zum Weiterlesen ... 1031
17. Grafische Oberflächen mit Swing ... 1033
17.1 ... AWT, JavaFoundation Classes und Swing ... 1033
17.2 ... Mit NetBeans zur ersten Swing-Oberfläche ... 1038
17.3 ... Aller Swing-Anfang -- Fenster zur Welt ... 1049
17.4 ... Beschriftungen (JLabel) ... 1057
17.5 ... Icon und ImageIcon für Bilder auf Swing-Komponenten ... 1060
17.6 ... Es tut sich was -- Ereignisse beim AWT ... 1062
17.7 ... Schaltflächen ... 1076
17.8 ... Textkomponenten ... 1081
17.9 ... Swing Action * ... 1093
17.10 ... JComponent und Component als Basis aller Komponenten ... 1095
17.11 ... Container ... 1108
17.12 ... Alles Auslegungssache -- die Layoutmanager ... 1112
17.13 ... Rollbalken und Schieberegler ... 1126
17.14 ... Kontrollfelder, Optionsfelder, Kontrollfeldgruppen ... 1131
17.15 ... Fortschritte bei Operationen überwachen * ... 1137
17.16 ... Menüs und Symbolleisten ... 1139
17.17 ... Das Model-View-Controller-Konzept ... 1155
17.18 ... Auswahlmenüs, Listen und Spinner ... 1157
17.19 ... Tabellen (JTable) ... 1172
17.20 ... Bäume (JTree) ... 1187
17.21 ... Dialoge und Window-Objekte ... 1192
17.22 ... Flexibles Java-Look-and-Feel ... 1201
17.23 ... Swing-Komponenten neu erstellen oder verändern * ... 1203
17.24 ... Die Zwischenablage (Clipboard) ... 1206
17.25 ... AWT, Swing und die Threads ... 1211
17.26 ... Barrierefreiheit mit der Java Accessibility API ... 1219
17.27 ... Zeitliches Ausführen mit dem javax.swing.Timer ... 1220
17.28 ... Zum Weiterlesen ... 1221
18. Grafikprogrammierung ... 1223
18.1 ... Grundlegendes zum Zeichnen ... 1223
18.2 ... Einfache Zeichenmethoden ... 1229
18.3 ... Zeichenketten schreiben und Fonts ... 1233
18.4 ... Geometrische Objekte ... 1239
18.5 ... Das Innere und Äußere einer Form ... 1242
18.6 ... Bilder ... 1249
18.7 ... Weitere Eigenschaften von Graphics * ... 1263
18.8 ... Drucken * ... 1271
18.9 ... Benutzerinteraktionen automatisieren, Robot und Screenshots * ... 1274
18.10 ... Zum Weiterlesen ... 1280
19. JavaFX ... 1281
19.1 ... Das erste Programm mit JavaFX ... 1281
19.2 ... Zentrale Typen in JavaFX ... 1284
19.3 ... JavaFX-Komponenten und Layout-Container-Klassen ... 1286
19.4 ... Webbrowser ... 1290
19.5 ... Geometrische Objekte ... 1291
19.6 ... Füllart von Formen ... 1304
19.7 ... Grafiken ... 1308
19.8 ... Deklarative Oberflächen mit FXML ... 1313
19.9 ... Diagramme (Charts) ... 1315
19.10 ... Animationen ... 1319
19.11 ... Medien abspielen ... 1322
19.12 ... Java 3D ... 1323
19.13 ... Das Geometry-Paket * ... 1323
19.14 ... JavaFX-Scene in Swing-Applikationen einbetten ... 1324
19.15 ... Zum Weiterlesen ... 1326
20. Sicherheitskonzepte ... 1327
20.1 ... Zentrale Elemente der Java-Sicherheit ... 1327
20.2 ... Sicherheitsmanager (Security-Manager) ... 1330
20.3 ... Signierung ... 1338
20.4 ... Kryptografische Hashfunktion ... 1341
20.5 ... Verschlüsseln von Daten(-strömen) * ... 1346
20.6 ... Zum Weiterlesen ... 1349
21. Dynamische Übersetzung, Skriptsprachen, JShell ... 1351
21.1 ... Codegenerierung ... 1352
21.2 ... Programme mit der Java Compiler API übersetzen ... 1356
21.3 ... Ausführen von Skripten ... 1366
21.4 ... JShell, die interaktive REPL-Shell ... 1375
21.5 ... Zum Weiterlesen ... 1381
22. Java Native Interface (JNI) ... 1383
22.1 ... Java Native Interface und Invocation-API ... 1383
22.2 ... Eine C-Funktion in ein Java-Programm einbinden ... 1384
22.3 ... Dynamische Bibliotheken erzeugen ... 1386
22.4 ... Erweiterte JNI-Eigenschaften ... 1392
22.5 ... Einfache Anbindung von existierenden Bibliotheken ... 1397
22.6 ... Invocation-API ... 1399
22.7 ... Zum Weiterlesen ... 1400
23. Dienstprogramme für die Java-Umgebung ... 1401
23.1 ... Programme des JDK ... 1401
23.2 ... Monitoringprogramme vom JDK ... 1401
23.3 ... Ant ... 1411
23.4 ... Disassembler, Decompiler und Obfuscator ... 1417
23.5 ... Weitere Dienstprogramme ... 1426
23.6 ... Zum Weiterlesen ... 1426
Index ... 1427