Java – die Neuerungen in Version 9 bis 12: Modularisierung, Syntax- und API-Erweiterungen
Book information
Description
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. Inhaltsverzeichnis Vorwort 1 Einleitung Teil I - Sprach- und API-Erweiterungen in Java 9 2 Syntaxerweiterungen in JDK 9 2.1 Anonyme innere Klassen und der Diamond Operator 2.2 Erweiterung der @Deprecated-Annotation 2.3 Private Methoden in Interfaces 2.4 Verbotener Bezeichner '_' 3 Neues und Änderungen in JDK 9 3.1 Neue und erweiterte APIs 3.1.1 Das neue Process-API 3.1.2 Collection-Factory-Methoden 3.1.3 Reactive Streams und die Klasse Flow 3.1.4 Erweiterungen in der Klasse InputStream 3.1.5 Erweiterungen rund um die Klasse Optional 3.1.6 Erweiterungen im Stream-API 3.1.7 Erweiterungen in der Klasse LocalDate 3.1.8 Erweiterungen in der Klasse Arrays 3.1.9 Erweiterungen in der Klasse Objects 3.1.10 Erweiterungen in der Klasse CompletableFuture 3.2 Sonstige Änderungen 3.2.1 Optimierung bei Strings 3.2.2 Deprecation diverser Typen und Methoden im JDK 4 Änderungen in der JVM in JDK 9 4.1 Änderung des Versionsschemas 4.2 Unterstützung von Multi-Release-JARs 4.3 Java + REPL => jshell 4.4 HTML5 Javadoc 5 Übungen zu den Neuerungen in JDK 9 Teil II - Sprach- und API-Erweiterungen in Java 10 bis 12 6 Neues und Änderungen in Java 10 6.1 Syntaxerweiterung var 6.2 API-Neuerungen 6.2.1 Unveränderliche Kopien von Collections 6.2.2 Immutable Collections aus Streams erzeugen 6.2.3 Erweiterung in der Klasse Optional 6.2.4 Modifikationen in der Versionierung 6.2.5 Verschiedenes 6.3 Fazit 7 Neues und Änderungen in Java 11 7.1 Syntaxerweiterung für var 7.2 API-Neuerungen 7.2.1 Neue Hilfsmethoden in der Klasse String 7.2.2 Neue Hilfsmethoden in der Utility-Klasse Files 7.2.3 Erweiterung in der Klasse Optional 7.2.4 Erweiterung im Interface Predicate 7.2.5 HTTP/2-API 7.3 Neuerungen in der JVM 7.3.1 Epsilon Garbage Collector 7.3.2 Launch Single-File Source-Code Programs 7.3.3 Das Tool Flight Recorder 7.4 Deprecations und Entfernungen im JDK 7.4.1 Aufräumarbeiten in der Klasse Thread 7.4.2 Deprecation der JavaScript-Unterstützung 7.4.3 Ausgliederung von JavaFX 7.4.4 Ausgliederung von Java EE und CORBA 7.5 Fazit 8 Neues und Änderungen in Java 12 8.1 Switch Expressions 8.1.1 Einführendes Beispiel 8.1.2 Zuweisungen im Lambda 8.1.3 break mit Rückgabewert 8.2 Microbenchmark Suite 8.2.1 Eigene Microbenchmarks und Varianten davon 8.2.2 Microbenchmarks mit JMH 8.2.3 Fazit 8.3 Java 12 – notwendige Anpassungen für Build-Tools und IDEs 8.3.1 Java 12 mit Gradle 8.3.2 Java 12 mit Maven 8.3.3 Java 12 mit Eclipse 8.3.4 Java 12 mit IntelliJ 8.4 Fazit 9 Übungen zu den Neuerungen in den JDKs 10 und 11 Teil III - Modularisierung 10 Modularisierung mit Project Jigsaw 10.1 Grundlagen 10.1.1 Bisherige Varianten der Modularisierung 10.1.2 Warum Modularisierung wünschenswert ist 10.2 Modularisierung im Überblick 10.2.1 Grundlagen zu Project Jigsaw 10.2.2 Einführendes Beispiel mit zwei Modulen 10.2.3 Packaging 10.2.4 Linking 10.2.5 Abhängigkeiten und Modulgraphen 10.2.6 Module des JDKs einbinden 10.2.7 Arten von Modulen 10.3 Sichtbarkeiten und Zugriffsschutz 10.3.1 Sichtbarkeiten 10.3.2 Zugriffsschutz an Beispielen 10.3.3 Transitive Abhängigkeiten (Implied Readability) 10.4 Zusammenfassung 11 Weiterführende Themen zur Modularisierung 11.1 Empfehlenswertes Verzeichnislayout für Module 11.2 Modularisierung und Services 11.2.1 Begrifflichkeiten: API, SPI und Service Provider 11.2.2 Service-Ansatz in Java seit JDK 6 11.2.3 Services im Bereich der Modularisierung 11.2.4 Definition eines Service Interface 11.2.5 Realisierung eines Service Provider 11.2.6 Realisierung eines Service Consumer 11.2.7 Kontrolle der Abhängigkeiten 11.2.8 Fazit 11.3 Modularisierung und Reflection 11.3.1 Verarbeitung von Modulen mit Reflection 11.3.2 Tool zur Ermittlung von Modulen zu Klassen 11.3.3 Besonderheiten bei Reflection 11.4 Kompatibilität und Migration 11.4.1 Kompatibilitätsmodus 11.4.2 Migrationsszenarien 11.4.3 Fallstrick bei der Bottom-up-Migration 11.4.4 Beispiel: Migration mit Automatic Modules 11.4.5 Beispiel: Automatic und Unnamed Module 11.4.6 Beispiel: Abwandlung mit zwei Automatic Modules 11.4.7 Mögliche Schwierigkeiten bei Migrationen 11.4.8 Fazit 12 Übungen zur Modularisierung Teil IV - Verschiedenes 13 Build-Tools und IDEs mit Java 11 13.1 Nicht modularisierte Applikationen 13.1.1 Gradle 13.1.2 Maven 13.1.3 Eclipse 13.1.4 IntelliJ IDEA 13.1.5 Externe Abhängigkeiten im Kompatibilitätsmodus 13.2 Modularisierte Applikationen 13.2.1 Gradle 13.2.2 Maven 13.2.3 Eclipse 13.2.4 IntelliJ IDEA 13.3 Fazit 14 Zusammenfassung Anhang A Schnelleinstieg in Java 8 A.1 Einstieg in Lambdas A.1.1 Lambdas am Beispiel A.1.2 Functional Interfaces und SAM-Typen A.1.3 Type Inference und Kurzformen der Syntax A.1.4 Methodenreferenzen A.2 Streams im Überblick A.2.1 Streams erzeugen – Create Operations A.2.2 Intermediate und Terminal Operations im Überblick A.2.3 Zustandslose Intermediate Operations A.2.4 Zustandsbehaftete Intermediate Operations A.2.5 Terminal Operations A.3 Neuerungen in der Datumsverarbeitung A.3.1 Die Klasse Instant A.3.2 Die Klassen LocalDate, LocalTime und LocalDateTime A.3.3 Die Klasse Duration A.3.4 Die Klasse Period A.3.5 Datumsarithmetik mit TemporalAdjusters A.4 Diverse Erweiterungen A.4.1 Erweiterungen im Interface Comparator A.4.2 Erweiterungen in der Klasse Optional A.4.3 Erweiterungen in der Klasse CompletableFuture B Einführung Gradle B.1 Projektstruktur für Maven und Gradle B.2 Builds mit Gradle C Einführung Maven C.1 Maven im Überblick C.2 Maven am Beispiel Literaturverzeichnis Index
Similar books
Modern Programming Made Easy: Using Java, Scala, Groovy, and JavaScript, 2nd Edition
2020 · PDF
Modern Programming Made Easy: Using Java, Scala, Groovy, and JavaScript, 2nd Edition
2020 · EPUB
Foundational Java: Key Elements and Practical Programming, 2nd Edition
2012 · EPUB
Think Java
2020 · PDF
Beginning Java, (Java 7 Edition) - Ivor Horton
2011 · PDF
Learning Java by Building Android Games
2018 · PDF
The Java Tutorial: A Short Course on the Basics
2014 · PDF
Java in Two Semesters Featuring JavaFX
2019 · PDF