Nicht aus der Schweiz? Besuchen Sie lehmanns.de

Java - die Neuerungen in Version 9 bis 12 (eBook)

Modularisierung, Syntax- und API-Erweiterungen
eBook Download: PDF
2019 | 1. Auflage
344 Seiten
dpunkt (Verlag)
978-3-96088-777-5 (ISBN)

Lese- und Medienproben

Java - die Neuerungen in Version 9 bis 12 -  Michael Inden
Systemvoraussetzungen
26,90 inkl. MwSt
(CHF 26,25)
Der eBook-Verkauf erfolgt durch die Lehmanns Media GmbH (Berlin) zum Preis in Euro inkl. MwSt.
  • Download sofort lieferbar
  • Zahlungsarten anzeigen
Dieses Buch eignet sich für alle, die ihr Java-Wissen auf den neuesten Stand bringen und es durch eine Vielzahl an Übungen festigen möchten. Es beschreibt alle wichtigen Neuerungen in Java 9 - dem letzten größeren Update - und in den Versionen Java 10, 11 und 12. Letztere bringen aufgrund halbjährlicher Releasezyklen jeweils weniger Änderungen als frühere Versionen mit und werden daher kompakter behandelt. Eine fundamentale Änderung in Java 9 stellt die als Projekt 'Jigsaw' entwickelte Modularisierungslösung dar. Auch fortgeschrittenere Themen wie Services und die Migration bestehender Applikationen werden besprochen. In verschiedenen Kapiteln werden Änderungen in der Sprache selbst behandelt. Einen Schwerpunkt bilden die Erweiterungen in diversen APIs. Neben Vereinfachungen beim Prozess-Handling, der Verarbeitung mit Optional sowie im Stream-API schauen wir auf fundamentale Neuerungen im Bereich der Concurrency durch Reactive Streams. Auch der mit Java 11 offiziell ins JDK aufgenommene HTTP/2-Support wird thematisiert. Weil die neuen Java-Versionen auch Auswirkungen auf Build-Tools und IDEs besitzen, gibt ein Kapitel einen Überblick über das aktuelle Tooling. Außerdem widmen sich zwei kurze Anhänge 'Gradle' und 'Maven'. Ein Schnelleinstieg zu den wichtigsten Neuerungen von Java 8, die im Repertoire keines Java-Entwicklers fehlen sollten und die hilfreich beim Verständnis der vielfältigen Neuerungen aus JDK 9 bis 12 sind, rundet dieses Buch ab.

Dipl.-Inform. Michael Inden ist Oracle-zertifizierter Java-Entwickler. Nach seinem Studium in Oldenburg hat er bei diversen internationalen Firmen in verschiedenen Rollen etwa als Softwareentwickler, -architekt, Consultant, Teamleiter sowie Trainer gearbeitet. Zurzeit ist er als CTO und Leiter Academy in Zürich tätig. Michael Inden hat über zwanzig Jahre Berufserfahrung beim Entwurf komplexer Softwaresysteme gesammelt, an diversen Fortbildungen und mehreren Java-One-Konferenzen teilgenommen. Sein besonderes Interesse gilt dem Design qualitativ hochwertiger Applikationen mit ergonomischen GUIs sowie dem Coaching. Sein Wissen gibt er gerne als Trainer in internen und externen Schulungen und auf Konferenzen weiter, etwa bei der Java User Group Switzerland, bei der JAX/W-JAX, ch.open und den IT-Tagen.

Dipl.-Inform. Michael Inden ist Oracle-zertifizierter Java-Entwickler. Nach seinem Studium in Oldenburg hat er bei diversen internationalen Firmen in verschiedenen Rollen etwa als Softwareentwickler, -architekt, Consultant, Teamleiter sowie Trainer gearbeitet. Zurzeit ist er als CTO und Leiter Academy in Zürich tätig. Michael Inden hat über zwanzig Jahre Berufserfahrung beim Entwurf komplexer Softwaresysteme gesammelt, an diversen Fortbildungen und mehreren Java-One-Konferenzen teilgenommen. Sein besonderes Interesse gilt dem Design qualitativ hochwertiger Applikationen mit ergonomischen GUIs sowie dem Coaching. Sein Wissen gibt er gerne als Trainer in internen und externen Schulungen und auf Konferenzen weiter, etwa bei der Java User Group Switzerland, bei der JAX/W-JAX, ch.open und den IT-Tagen.

Inhaltsverzeichnis 5
Vorwort 11
1 Einleitung 19
Teil I - Sprach- und API-Erweiterungen in Java 9 23
2 Syntaxerweiterungen in JDK 9 25
2.1 Anonyme innere Klassen und der Diamond Operator 25
2.2 Erweiterung der @Deprecated-Annotation 26
2.3 Private Methoden in Interfaces 27
2.4 Verbotener Bezeichner '_' 29
3 Neues und Änderungen in JDK 9 31
3.1 Neue und erweiterte APIs 31
3.1.1 Das neue Process-API 31
3.1.2 Collection-Factory-Methoden 37
3.1.3 Reactive Streams und die Klasse Flow 41
3.1.4 Erweiterungen in der Klasse InputStream 51
3.1.5 Erweiterungen rund um die Klasse Optional< T>
3.1.6 Erweiterungen im Stream-API 58
3.1.7 Erweiterungen in der Klasse LocalDate 62
3.1.8 Erweiterungen in der Klasse Arrays 63
3.1.9 Erweiterungen in der Klasse Objects 65
3.1.10 Erweiterungen in der Klasse CompletableFuture< T>
3.2 Sonstige Änderungen 70
3.2.1 Optimierung bei Strings 70
3.2.2 Deprecation diverser Typen und Methoden im JDK 71
4 Änderungen in der JVM in JDK 9 73
4.1 Änderung des Versionsschemas 73
4.2 Unterstützung von Multi-Release-JARs 75
4.3 Java + REPL => jshell
4.4 HTML5 Javadoc 83
5 Übungen zu den Neuerungen in JDK 9 85
Teil II - Sprach- und API-Erweiterungen in Java 10 bis 12 93
6 Neues und Änderungen in Java 10 95
6.1 Syntaxerweiterung var 95
6.2 API-Neuerungen 99
6.2.1 Unveränderliche Kopien von Collections 99
6.2.2 Immutable Collections aus Streams erzeugen 101
6.2.3 Erweiterung in der Klasse Optional 102
6.2.4 Modifikationen in der Versionierung 103
6.2.5 Verschiedenes 105
6.3 Fazit 106
7 Neues und Änderungen in Java 11 107
7.1 Syntaxerweiterung für var 108
7.2 API-Neuerungen 109
7.2.1 Neue Hilfsmethoden in der Klasse String 109
7.2.2 Neue Hilfsmethoden in der Utility-Klasse Files 111
7.2.3 Erweiterung in der Klasse Optional< T>
7.2.4 Erweiterung im Interface Predicate< T>
7.2.5 HTTP/2-API 114
7.3 Neuerungen in der JVM 119
7.3.1 Epsilon Garbage Collector 119
7.3.2 Launch Single-File Source-Code Programs 119
7.3.3 Das Tool Flight Recorder 120
7.4 Deprecations und Entfernungen im JDK 120
7.4.1 Aufräumarbeiten in der Klasse Thread 120
7.4.2 Deprecation der JavaScript-Unterstützung 120
7.4.3 Ausgliederung von JavaFX 121
7.4.4 Ausgliederung von Java EE und CORBA 121
7.5 Fazit 122
8 Neues und Änderungen in Java 12 123
8.1 Switch Expressions 123
8.1.1 Einführendes Beispiel 123
8.1.2 Zuweisungen im Lambda 127
8.1.3 break mit Rückgabewert 127
8.2 Microbenchmark Suite 128
8.2.1 Eigene Microbenchmarks und Varianten davon 129
8.2.2 Microbenchmarks mit JMH 131
8.2.3 Fazit 136
8.3 Java 12 – notwendige Anpassungen für Build-Tools und IDEs 137
8.3.1 Java 12 mit Gradle 137
8.3.2 Java 12 mit Maven 138
8.3.3 Java 12 mit Eclipse 139
8.3.4 Java 12 mit IntelliJ 139
8.4 Fazit 139
9 Übungen zu den Neuerungen in den JDKs 10 und 11 141
Teil III - Modularisierung 149
10 Modularisierung mit Project Jigsaw 151
10.1 Grundlagen 152
10.1.1 Bisherige Varianten der Modularisierung 153
10.1.2 Warum Modularisierung wünschenswert ist 155
10.2 Modularisierung im Überblick 156
10.2.1 Grundlagen zu Project Jigsaw 156
10.2.2 Einführendes Beispiel mit zwei Modulen 164
10.2.3 Packaging 173
10.2.4 Linking 175
10.2.5 Abhängigkeiten und Modulgraphen 179
10.2.6 Module des JDKs einbinden 181
10.2.7 Arten von Modulen 186
10.3 Sichtbarkeiten und Zugriffsschutz 188
10.3.1 Sichtbarkeiten 188
10.3.2 Zugriffsschutz an Beispielen 190
10.3.3 Transitive Abhängigkeiten (Implied Readability) 195
10.4 Zusammenfassung 200
11 Weiterführende Themen zur Modularisierung 201
11.1 Empfehlenswertes Verzeichnislayout für Module 202
11.2 Modularisierung und Services 204
11.2.1 Begrifflichkeiten: API, SPI und Service Provider 204
11.2.2 Service-Ansatz in Java seit JDK 6 205
11.2.3 Services im Bereich der Modularisierung 208
11.2.4 Definition eines Service Interface 209
11.2.5 Realisierung eines Service Provider 211
11.2.6 Realisierung eines Service Consumer 212
11.2.7 Kontrolle der Abhängigkeiten 215
11.2.8 Fazit 216
11.3 Modularisierung und Reflection 217
11.3.1 Verarbeitung von Modulen mit Reflection 217
11.3.2 Tool zur Ermittlung von Modulen zu Klassen 219
11.3.3 Besonderheiten bei Reflection 221
11.4 Kompatibilität und Migration 227
11.4.1 Kompatibilitätsmodus 227
11.4.2 Migrationsszenarien 230
11.4.3 Fallstrick bei der Bottom-up-Migration 234
11.4.4 Beispiel: Migration mit Automatic Modules 236
11.4.5 Beispiel: Automatic und Unnamed Module 237
11.4.6 Beispiel: Abwandlung mit zwei Automatic Modules 240
11.4.7 Mögliche Schwierigkeiten bei Migrationen 242
11.4.8 Fazit 242
12 Übungen zur Modularisierung 243
Teil IV - Verschiedenes 253
13 Build-Tools und IDEs mit Java 11 255
13.1 Nicht modularisierte Applikationen 255
13.1.1 Gradle 257
13.1.2 Maven 259
13.1.3 Eclipse 261
13.1.4 IntelliJ IDEA 261
13.1.5 Externe Abhängigkeiten im Kompatibilitätsmodus 262
13.2 Modularisierte Applikationen 264
13.2.1 Gradle 265
13.2.2 Maven 269
13.2.3 Eclipse 274
13.2.4 IntelliJ IDEA 276
13.3 Fazit 278
14 Zusammenfassung 279
Anhang 283
A Schnelleinstieg in Java 8 285
A.1 Einstieg in Lambdas 285
A.1.1 Lambdas am Beispiel 285
A.1.2 Functional Interfaces und SAM-Typen 286
A.1.3 Type Inference und Kurzformen der Syntax 289
A.1.4 Methodenreferenzen 290
A.2 Streams im Überblick 291
A.2.1 Streams erzeugen – Create Operations 292
A.2.2 Intermediate und Terminal Operations im Überblick 293
A.2.3 Zustandslose Intermediate Operations 295
A.2.4 Zustandsbehaftete Intermediate Operations 297
A.2.5 Terminal Operations 298
A.3 Neuerungen in der Datumsverarbeitung 301
A.3.1 Die Klasse Instant 302
A.3.2 Die Klassen LocalDate, LocalTime und LocalDateTime 302
A.3.3 Die Klasse Duration 304
A.3.4 Die Klasse Period 305
A.3.5 Datumsarithmetik mit TemporalAdjusters 306
A.4 Diverse Erweiterungen 308
A.4.1 Erweiterungen im Interface Comparator< T>
A.4.2 Erweiterungen in der Klasse Optional< T>
A.4.3 Erweiterungen in der Klasse CompletableFuture< T>
B Einführung Gradle 317
B.1 Projektstruktur für Maven und Gradle 317
B.2 Builds mit Gradle 319
C Einführung Maven 329
C.1 Maven im Überblick 329
C.2 Maven am Beispiel 332
Literaturverzeichnis 335
Index 337

Erscheint lt. Verlag 15.4.2019
Verlagsort Heidelberg
Sprache deutsch
Themenwelt Informatik Programmiersprachen / -werkzeuge Java
Schlagworte Bad Smells • codereviews • Coding-Conventions • collections • Entwurfsmuster • Java 10 • Java 11 • Java 12 • java 9 • Java SE • JDK 9 • Jigsaw • lambdas • Modularisierung • Multithreading • Objektorientiertes Design • Programmierstil • Refactorings • Unit Tests
ISBN-10 3-96088-777-9 / 3960887779
ISBN-13 978-3-96088-777-5 / 9783960887775
Haben Sie eine Frage zum Produkt?
PDFPDF (Wasserzeichen)
Größe: 10,8 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)
CHF 48,75