Suche
Lesesoftware
Specials
Info / Kontakt
Java 9 - Die Neuerungen - Syntax- und API-Erweiterungen und Modularisierung im Überblick
von: Michael Inden
dpunkt, 2018
ISBN: 9783960883784 , 376 Seiten
Format: PDF, Online Lesen
Kopierschutz: Wasserzeichen
Preis: 26,90 EUR
eBook anfordern
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