Java 9 - Die Neuerungen - Syntax- und API-Erweiterungen und Modularisierung im Überblick
von: Michael Inden
dpunkt, 2018
ISBN: 9783960883784
Sprache: Deutsch
376 Seiten, Download: 9347 KB
Format: PDF, auch als Online-Lesen
Mehr zum Inhalt
Java 9 - Die Neuerungen - Syntax- und API-Erweiterungen und Modularisierung im Überblick
Inhaltsverzeichnis | 5 | ||
1 Einleitung | 19 | ||
I Sprach- und API-Erweiterungen | 0 | ||
2 Syntaxerweiterungen | 23 | ||
2.1 Anonyme innere Klassen und der Diamond Operator | 23 | ||
2.2 Nutzung von »effectively final«-Variablen im ARM | 24 | ||
2.3 Neuerung bei der @SafeVarargs-Annotation | 26 | ||
2.4 Erweiterung der @Deprecated-Annotation | 29 | ||
2.5 Private Methoden in Interfaces | 30 | ||
2.6 Verbotener Bezeichner '_' | 32 | ||
3 Neues und Änderungen im JDK | 33 | ||
3.1 Neue APIs | 33 | ||
3.1.1 Das neue Process-API | 33 | ||
3.1.2 Collection-Factory-Methoden | 39 | ||
3.1.3 Reactive Streams und die Klasse Flow | 45 | ||
3.1.4 Taskbar-Support | 55 | ||
3.1.5 Verarbeitung von Stackframes und die Klasse StackWalker | 58 | ||
3.1.6 HTTP/2-Support | 60 | ||
3.2 Erweiterte APIs | 65 | ||
3.2.1 Erweiterungen in der Klasse InputStream | 66 | ||
3.2.2 Erweiterungen rund um die Klasse Optional | 68 | ||
3.2.3 Erweiterungen im Stream-API | 73 | ||
3.2.4 Erweiterungen in der Klasse LocalDate | 77 | ||
3.2.5 Support von UTF-8 in ResourceBundles | 78 | ||
3.2.6 Erweiterungen in der Klasse Arrays | 83 | ||
3.2.7 Erweiterungen in der Klasse Objects | 85 | ||
3.2.8 Erweiterungen in der Klasse CompletableFuture | 85 | ||
3.2.9 Erweiterungen in Class |
89 | ||
3.2.10 Die Klasse MethodHandle | 91 | ||
3.2.11 Die Klasse VarHandle | 94 | ||
3.3 Sonstige Änderungen | 95 | ||
3.3.1 Optimierung bei Strings | 96 | ||
3.3.2 Erweiterungen im Unicode-Support | 97 | ||
3.3.3 HiDPI-Support | 99 | ||
3.3.4 Multi-Resolution Images | 99 | ||
3.3.5 Unterstützung von TIFF-Grafiken | 102 | ||
3.3.6 Support für Spin-Wait-Loops | 103 | ||
3.3.7 Deprecation diverser Typen und Methoden im JDK | 104 | ||
4 Änderungen in der JVM | 109 | ||
4.1 Performance-Verbesserungen | 109 | ||
4.2 HTML5 Javadoc | 110 | ||
4.3 Änderung des Versionsschemas | 111 | ||
4.4 Browser-Plugin ist deprecated | 112 | ||
4.5 Garbage Collection | 113 | ||
4.6 Unterstützung von Multi-Release-JARs | 114 | ||
4.7 Java + REPL => jshell | 117 | ||
5 Übungen zu den Neuerungen in JDK 9 | 125 | ||
II Modularisierung | 0 | ||
6 Modularisierung mit Project Jigsaw | 139 | ||
6.1 Grundlagen | 140 | ||
6.1.1 Bisherige Varianten der Modularisierung | 141 | ||
6.1.2 Warum wir Modularisierung brauchen | 143 | ||
6.2 Modularisierung im Überblick | 144 | ||
6.2.1 Grundlagen zu Project Jigsaw | 144 | ||
6.2.2 Einführendes Beispiel | 152 | ||
6.2.3 Komplexeres Beispiel | 155 | ||
6.2.4 Packaging | 164 | ||
6.2.5 Linking | 165 | ||
6.2.6 Abhängigkeiten und Modulgraphen | 169 | ||
6.2.7 Module des JDKs einbinden | 171 | ||
6.2.8 Arten von Modulen | 178 | ||
6.3 Sichtbarkeiten und Zugriffsschutz | 179 | ||
6.3.1 Sichtbarkeiten | 179 | ||
6.3.2 Zugriffsschutz an Beispielen | 181 | ||
6.3.3 Transitive Abhängigkeiten (Implied Readability) | 186 | ||
6.4 Zusammenfassung | 191 | ||
7 Weiterführende Themen zur Modularisierung | 193 | ||
7.1 Modularisierung und Services | 194 | ||
7.1.1 Begrifflichkeiten: API, SPI und Service Provider | 194 | ||
7.1.2 Service-Ansatz in Java seit JDK 6 | 195 | ||
7.1.3 Services im Bereich der Modularisierung | 198 | ||
7.1.4 Definition eines Service Interface | 199 | ||
7.1.5 Realisierung eines Service Provider | 200 | ||
7.1.6 Realisierung eines Service Consumer | 202 | ||
7.1.7 Kontrolle der Abhängigkeiten | 204 | ||
7.1.8 Fazit | 205 | ||
7.2 Modularisierung und Reflection | 206 | ||
7.2.1 Verarbeitung von Modulen mit Reflection | 206 | ||
7.2.2 Tool zur Ermittlung von Modulen zu Klassen | 208 | ||
7.2.3 Konvertierungstool für import zu requires | 210 | ||
7.2.4 Besonderheiten bei Reflection | 213 | ||
7.3 Kompatibilität und Migration | 219 | ||
7.3.1 Kompatibilitätsmodus | 219 | ||
7.3.2 Migrationsszenarien | 222 | ||
7.3.3 Fallstrick bei der Bottom-up-Migration | 226 | ||
7.3.4 Beispiel: Migration mit Automatic Modules | 227 | ||
7.3.5 Beispiel: Automatic und Unnamed Module | 229 | ||
7.3.6 Abwandlung mit zwei Automatic Modules | 232 | ||
7.3.7 Mögliche Schwierigkeiten bei Migrationen | 234 | ||
7.3.8 Fazit | 234 | ||
8 Übungen zur Modularisierung | 235 | ||
III Verschiedenes | 0 | ||
9 Build-Tools und IDEs | 247 | ||
9.1 Nicht modularisierte Applikationen | 247 | ||
9.1.1 Gradle | 249 | ||
9.1.2 Maven | 251 | ||
9.1.3 Eclipse | 253 | ||
9.1.4 IntelliJ IDEA | 253 | ||
9.1.5 NetBeans | 253 | ||
9.2 Nicht modularisierte Applikationen mit HTTP/2-API | 254 | ||
9.2.1 Gradle | 254 | ||
9.2.2 Maven | 256 | ||
9.2.3 Eclipse | 258 | ||
9.2.4 IntelliJ IDEA | 259 | ||
9.2.5 NetBeans | 261 | ||
9.3 Modularisierte Applikationen | 262 | ||
9.3.1 Gradle | 263 | ||
9.3.2 Maven | 268 | ||
9.3.3 Eclipse | 273 | ||
9.3.4 IntelliJ IDEA | 275 | ||
9.3.5 NetBeans | 279 | ||
9.4 Besonderheiten beim Unit-Testen | 282 | ||
9.4.1 Gradle | 283 | ||
9.4.2 Maven | 284 | ||
9.4.3 Eclipse | 285 | ||
9.4.4 IntelliJ IDEA | 286 | ||
9.4.5 NetBeans | 286 | ||
9.4.6 Kommandozeile | 286 | ||
9.5 Kompatibilitätsmodus | 293 | ||
9.5.1 Gradle | 294 | ||
9.5.2 Maven | 295 | ||
9.5.3 Eclipse | 296 | ||
9.5.4 IntelliJ IDEA | 296 | ||
9.5.5 NetBeans | 296 | ||
9.5.6 Kommandozeile | 296 | ||
9.6 Fazit | 297 | ||
10 Zusammenfassung | 299 | ||
IV Anhang | 0 | ||
A Schnelleinstieg in Java 8 | 305 | ||
A.1 Einstieg in Lambdas | 305 | ||
A.1.1 Lambdas am Beispiel | 305 | ||
A.1.2 Functional Interfaces und SAM-Typen | 306 | ||
A.1.3 Type Inference und Kurzformen der Syntax | 309 | ||
A.1.4 Methodenreferenzen | 310 | ||
A.2 Streams im Überblick | 311 | ||
A.2.1 Streams erzeugen – Create Operations | 312 | ||
A.2.2 Intermediate und Terminal Operations im Überblick | 314 | ||
A.2.3 Zustandslose Intermediate Operations | 316 | ||
A.2.4 Zustandsbehaftete Intermediate Operations | 319 | ||
A.2.5 Terminal Operations | 321 | ||
A.3 Neuerungen in der Datumsverarbeitung | 325 | ||
A.3.1 Neue Aufzählungen, Klassen und Interfaces | 326 | ||
A.3.2 Die Klasse Instant | 328 | ||
A.3.3 Die Klasse Duration | 329 | ||
A.3.4 Die Klassen LocalDate, LocalTime und LocalDateTime | 330 | ||
A.3.5 Die Klasse Period | 331 | ||
A.3.6 Datumsarithmetik mit TemporalAdjusters | 333 | ||
A.4 Diverse Erweiterungen | 335 | ||
A.4.1 Erweiterungen im Interface Comparator |
335 | ||
A.4.2 Die Klasse Optional |
337 | ||
A.4.3 Die Klasse CompletableFuture | 343 | ||
B Einführung Gradle | 347 | ||
B.1 Projektstruktur für Maven und Gradle | 347 | ||
B.2 Builds mit Gradle | 349 | ||
C Einführung Maven | 359 | ||
C.1 Maven im Überblick | 359 | ||
C.2 Maven am Beispiel | 362 | ||
Literaturverzeichnis | 365 | ||
Index | 365 | ||
www.dpunkt.de | 0 |