وبلاگ بلیان

Java – die Neuerungen in Version 9 bis 12 : Modularisierung, Syntax- und API-Erweiterungen

معرفی کتاب «Java – die Neuerungen in Version 9 bis 12 : Modularisierung, Syntax- und API-Erweiterungen» نوشتهٔ Michael Inden، منتشرشده توسط نشر "dpunkt.verlag GmbH" در سال 2019. این کتاب در فرمت pdf، زبان آلمانی ارائه شده است.

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. Modularisierung, Syntax- und API-Erweiterungen 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 53 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 66 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 78 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 113 7.2.4 Erweiterung im Interface Predicate 113 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 308 A.4.2 Erweiterungen in der Klasse Optional 310 A.4.3 Erweiterungen in der Klasse CompletableFuture 312 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 Dieses Buch richtet sich an diejenigen Leser, die bereits solides Java-Know-how besitzen und sich kurz und prägnant über die wichtigsten Neuerungen in den Java-Version 9 bis 12 informieren wollen. Aufgrund des nun halbjährlichen Releasezyklus finden sich in Java 10, 11 und 12 jeweils weniger Änderungen als in früheren Versionen. Neben deren Beschreibung werden in diesem Buch auch diverse Neuerungen aus Java 9 thematisiert, weil dies das letzte große Update nach Java 8 war, das eine Vielzahl an relevanten Erweiterungen mitbringt. Damit eignet sich dieses Buch für all jene, die ihr Java-Wissen auf den neuesten Stand bringen möchten. Vertiefen können Sie Ihr Wissen durch eine Vielzahl an Übungen Dieses Buch eignet sich für alle, die ihr Java-Wissen auf den neuesten Stand bringen und es durch eine Vielzahl von Übungen festigen möchten. Es beschreibt alle wichtigen Neuerungen in Java 9 - dem letzten grösseren 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. Ein Schnelleinstieg zu den wichtigsten Neuerungen von Java 8 rundet dieses Buch ab
دانلود کتاب Java – die Neuerungen in Version 9 bis 12 : Modularisierung, Syntax- und API-Erweiterungen