Java 9 - Die Neuerungen (eBook)

Syntax- und API-Erweiterungen und Modularisierung im Überblick
eBook Download: PDF
2018 | 1. Auflage
376 Seiten
dpunkt (Verlag)
978-3-96088-378-4 (ISBN)

Lese- und Medienproben

Java 9 - Die Neuerungen -  Michael Inden
Systemvoraussetzungen
26,90 inkl. MwSt
  • Download sofort lieferbar
  • Zahlungsarten anzeigen
Dieses Buch bietet einen fundierten Einstieg in Java 9 und gibt einen Überblick über die darin enthaltenen umfangreichen Neuerungen. Damit eignet sich das Buch für all jene, die ihr Java-Wissen auf den neuesten Stand bringen möchten. Eine Vielzahl von Übungen unterstützt Sie dabei, die einzelnen Themengebiete zu vertiefen und besser zu verstehen. Zunächst werden die Änderungen in der Sprache selbst behandelt. Einen weiteren Schwerpunkt bilden die Erweiterungen in diversen APIs, etwa dem Process-API, dem Stream-API, bei Collections, in der Klasse Optional und vielem mehr. Aber auch im Bereich Concurrency finden sich Erweiterungen - vor allem die Unterstützung von Reactive Streams. Viele dieser Neuerungen machen das Programmiererleben noch ein wenig angenehmer. Die fundamentalste Änderung in Java 9 stellt die als Projekt 'Jigsaw' entwickelte Modularisierungslösung dar, die es erlaubt, eigene Programme in Softwarekomponenten - so genannte Module - zu unterteilen. Auf diese Weise lassen sich Abhängigkeiten klar definieren, um selbst größere Softwaresysteme möglichst beherrschbar und änderbar zu halten. Weil Java 9 einige Auswirkungen auf Build-Tools und IDEs besitzt, gibt ein Kapitel einen Überblick über das aktuelle Tooling rund um die neue Java-Version. Auch fortgeschrittenere Themen wie Services und die Migration bestehender Applikationen werden besprochen. Ein Schnelleinstieg in die wichtigsten Neuerungen von Java 8, die im Repertoire keines Java-Entwicklers fehlen sollten und die zudem hilfreich beim Verständnis der Neuerungen aus JDK 9 sind, rundet dieses Buch ab. Zudem widmen sich zwei kurze Anhänge den Build-Tools 'Maven' und 'Gradle'.

Dipl.-Inform. Michael Inden ist Oracle-zertifizierter Java-Entwickler für JDK 6. Nach seinem Studium in Oldenburg war er lange Zeit als Softwareentwickler und -architekt bei verschiedenen internationalen Firmen tätig und arbeitet derzeit als Teamleiter Softwareentwicklung in Zürich. Michael Inden hat rund 20 Jahre Erfahrung beim Entwurf komplexer Softwaresysteme gesammelt, an diversen Fortbildungen und an mehreren Java-One-Konferenzen in San Francisco teilgenommen. Sein Wissen gibt er gerne als Trainer in Schulungen und auf Konferenzen weiter. Sein besonderes Interesse gilt dem Design qualitativ hochwertiger Applikationen mit ergonomischen, grafischen Oberflächen sowie dem Coaching von Kollegen.

Dipl.-Inform. Michael Inden ist Oracle-zertifizierter Java-Entwickler für JDK 6. Nach seinem Studium in Oldenburg war er lange Zeit als Softwareentwickler und -architekt bei verschiedenen internationalen Firmen tätig und arbeitet derzeit als Teamleiter Softwareentwicklung in Zürich. Michael Inden hat rund 20 Jahre Erfahrung beim Entwurf komplexer Softwaresysteme gesammelt, an diversen Fortbildungen und an mehreren Java-One-Konferenzen in San Francisco teilgenommen. Sein Wissen gibt er gerne als Trainer in Schulungen und auf Konferenzen weiter. Sein besonderes Interesse gilt dem Design qualitativ hochwertiger Applikationen mit ergonomischen, grafischen Oberflächen sowie dem Coaching von Kollegen.

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< T>
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
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< T>
A.4.2 Die Klasse Optional< T>
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

Erscheint lt. Verlag 5.1.2018
Verlagsort Heidelberg
Sprache deutsch
Themenwelt Informatik Programmiersprachen / -werkzeuge Java
Schlagworte Bad Smells • codereviews • Coding-Conventions • collections • Entwurfsmuster • Java 8 • java 9 • JavaFX • Java SE • JDK 8 • JDK 9 • Jigsaw • lambdas • Modularisierung • Multithreading • Objektorientiertes Design • Programmierstil • Refactorings • Unit Tests
ISBN-10 3-96088-378-1 / 3960883781
ISBN-13 978-3-96088-378-4 / 9783960883784
Haben Sie eine Frage zum Produkt?
Wie bewerten Sie den Artikel?
Bitte geben Sie Ihre Bewertung ein:
Bitte geben Sie Daten ein:
PDFPDF (Wasserzeichen)
Größe: 9,3 MB

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: PDF (Portable Document Format)
Mit einem festen Seiten­layout eignet sich die PDF besonders für Fach­bücher mit Spalten, Tabellen und Abbild­ungen. Eine PDF kann auf fast allen Geräten ange­zeigt werden, ist aber für kleine Displays (Smart­phone, eReader) nur einge­schränkt geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.

Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich
Einführung, Ausbildung, Praxis

von Christian Ullenboom

eBook Download (2023)
Rheinwerk Computing (Verlag)
49,90