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

Mac OSX,Windows PC für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Online-Lesen für: Mac OSX,Linux,Windows PC

Preis: 26,90 EUR

eBook anfordern 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