Book description
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.
Table of contents
- Cover
- Über den Autor
- Titel
- Impressum
- Inhaltsverzeichnis
- Vorwort
- 1 Einleitung
-
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<T>
- 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<T>
- 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
-
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<T>
- 7.2.4 Erweiterung im Interface Predicate<T>
- 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
-
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
-
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
-
V 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<T>
- A.4.2 Erweiterungen in der Klasse Optional<T>
- A.4.3 Erweiterungen in der Klasse CompletableFuture<T>
- 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
- Fußnoten
- Index
Product information
- Title: Java – die Neuerungen in Version 9 bis 12
- Author(s):
- Release date: April 2019
- Publisher(s): dpunkt
- ISBN: 9783864906725
You might also like
book
Java – die Neuerungen in Version 9 bis 14
Dieses Buch richtet sich an Leser, die bereits solides Java-Know-how besitzen und sich prägnant über die …
book
Java Übungsbuch - Für die Versionen Java 8 bis Java 13 - Aufgaben mit vollständigen Lösungen
Trainieren Sie Ihre Java-Kenntnisse Learning by Doing anhand praktischer Übungen Mit vollständigen und kommentierten Lösungen Dieses …
book
Java – die Neuerungen in Version 17 LTS, 18 und 19
Dieses Buch richtet sich an alle, die bereits ein solides Java-Know-how besitzen und sich prägnant über …
book
Nebenläufige Programmierung mit Java
umfassend, praxisorientiert, aktuell:- Konzepte werden verständlich und in praxisrelevanter Tiefe dargestellt- Autoren behandeln u.a. die erst …