Book description
Dieses Buch richtet sich an alle, die bereits ein solides Java-Know-how besitzen und sich prägnant über die wichtigsten Neuerungen in der wichtigen Java-Version 17 LTS und deren Nachfolgern Java 18 und 19 informieren und Ihr Wissen auf den neuesten Stand bringen möchten. Eine Vielzahl an Übungen hilft beim Aufbau und Vertiefen des Wissens.
Wird regelmäßig auf die aktuellen Java-Versionen fortgeschrieben.
Table of contents
- Cover
- Über den Autor
- Titel
- Impressum
- Widmung
- Inhaltsverzeichnis
- Vorwort
-
1 Einleitung
- 1.1 Releasepolitik
- 1.2 Inhaltsübersicht: Was erwartet Sie im Folgenden?
- 1.3 Grundgerüst des Eclipse-Projekts
- 1.4 Anmerkung zum Programmierstil
- 1.4.1 Gedanken zur Sourcecode-Kompaktheit
- 1.4.2 Gedanken zu final und var
- 1.4.3 Blockkommentare in Listings
- 1.4.4 Gedanken zur Formatierung
- 1.5 Konfigurationen für Build-Tools und IDEs
- 1.5.1 Java 17 mit Gradle
- 1.5.2 Java 17 mit Maven
- 1.5.3 Java 17 mit Eclipse
- 1.5.4 Java 17 mit IntelliJ
- 1.6 Ausprobieren der Beispiele und Lösungen
- 1.6.1 Ausprobieren neuer Java-Features mit der JShell oder der Kommandozeile
- 1.6.2 Ausprobieren neuer Java-Features in einer Sandbox
-
I Neuerungen in Java 11 bis 17
- 2 Neuerungen in Java 17 im Überblick
- 2.1 JEPs im Überblick
- 2.1.1 JEP 306: Restore Always-Strict Floating-Point Semantics
- 2.1.2 JEP 356: Enhanced Pseudo-Random Number Generators
- 2.1.3 JEP 382: New macOS Rendering Pipeline
- 2.1.4 JEP 391: macOS/AArch64 Port
- 2.1.5 JEP 398: Deprecate the Applet API for Removal
- 2.1.6 JEP 403: Strongly Encapsulate JDK Internals
- 2.1.7 JEP 406: Pattern Matching for switch (Preview)
- 2.1.8 JEP 407: Remove RMI Activation
- 2.1.9 JEP 409: Sealed Classes
- 2.1.10 JEP 410: Remove the Experimental AOT and JIT Compiler
- 2.1.11 JEP 411: Deprecate the Security Manager for Removal
- 2.1.12 JEP 412: Foreign Function & Memory API (Incubator)
- 2.1.13 JEP 414: Vector API (Second Incubator)
- 2.1.14 JEP 415: Context-Specific Deserialization Filters
- 2.2 Neue Releasepolitik im Überblick
- 3 Syntaxneuerungen bis Java 17
- 3.1 Text Blocks
- 3.1.1 Grundlegende Syntax
- 3.1.2 Besonderheiten
- 3.1.3 Platzhalter
- 3.2 Switch Expressions
- 3.2.1 Einführendes Beispiel
- 3.2.2 Vollständigkeitsprüfung
- 3.2.3 Fallstricke der alten Syntax und Abhilfen
- 3.2.4 Rückgabe mit yield
- 3.2.5 Rückwärtskompatible Angabe bei case mit yield
- 3.3 Records
- 3.3.1 Einführendes Beispiel
- 3.3.2 Records für DTOs und Rückgabewerte
- 3.3.3 Erweiterungsmöglichkeiten
- 3.3.4 Besonderheit – Generics in Records
- 3.3.5 Besonderheit – Records und Interfaces
- 3.3.6 Zusammenfassung
- 3.4 Pattern Matching bei instanceof
- 3.4.1 Neue Syntax und einführendes Beispiel
- 3.4.2 Im Praxiseinsatz
- 3.5 Sealed Types
- 3.5.1 Neue Schlüsselwörter
- 3.5.2 Einführendes Beispiel
- 3.5.3 Wissenswertes
- 3.6 Lokale Enums und Interfaces
- 3.7 Statische Attribute und Methoden in inneren Klassen
- 3.8 Pattern Matching und Erweiterung für switch (Preview)
- 3.8.1 Einfaches Pattern Matching
- 3.8.2 Pattern Matching mit Bedingung
- 3.8.3 Spezialfall: Behandlung von null
- 4 Übungen zu den Syntaxneuerungen in JDK 11 bis 17
- 4.1 Aufgaben
- 4.2 Lösungen
- 5 Neues und Änderungen in den Java-17-APIs
- 5.1 Erweiterungen in der Klasse String
- 5.1.1 Die Methode isBlank()
- 5.1.2 Die Methode lines()
- 5.1.3 Die Methode repeat(int)
- 5.1.4 Die Methoden strip(), stripLeading() und stripTrailing()
- 5.1.5 Die Methode indent()
- 5.1.6 Die Methode transform()
- 5.1.7 Die Methode formatted()
- 5.2 Erweiterung im Interface Predicate<T>
- 5.3 Erweiterung in der Klasse Optional<T>
- 5.4 Erweiterungen in der Utility-Klasse Files
- 5.4.1 Die Methoden writeString() und readString()
- 5.4.2 Die Methode mismatch()
- 5.5 Erweiterungen im Stream-API
- 5.5.1 Der teeing()-Kollektor
- 5.5.2 Die Methode toList() als Shortcut zum Kollektor
- 5.5.3 Die Intermediate Operation mapMulti()
- 5.6 HTTP/2-API
- 5.6.1 Einführung
- 5.6.2 Real-World-Example: Wechselkurs mit REST
- 5.7 Die Utility-Klasse CompactNumberFormat
- 5.7.1 Einführendes Beispiel
- 5.7.2 Rundung steuern
- 5.7.3 Eigene Einheiten angeben
- 5.8 Verschiedenes und Deprecations
- 5.8.1 Unix-Domain-Socket Channels
- 5.8.2 Day Period Support
- 5.8.3 Aufruf von Defaultmethoden aus Dynamic Proxies
- 5.8.4 Deprecations der Konstruktoren der Wrapper-Klassen
- 6 Übungen zu den API-Neuerungen in JDK 11 bis 17
- 6.1 Aufgaben
- 6.2 Lösungen
- 7 Änderungen in der JVM bis Java 17
- 7.1 Verbesserung bei NullPointerExceptions
- 7.1.1 Einführende Beispiele
- 7.1.2 Fehlersuche bei komplexen Ausdrücken
- 7.2 Java + REPL => jshell
- 7.2.1 Einführendes Beispiel
- 7.2.2 Weitere Kommandos und Möglichkeiten
- 7.2.3 Neuere Java-Features nutzen
- 7.2.4 Komplexere Aktionen
- 7.2.5 JShell-API
- 7.3 Launch Single-File Source-Code Programs (JDK 11)
- 7.3.1 Einführendes Beispiel
- 7.3.2 Palindrom-Prüfung
- 7.3.3 REST-Calls mit HTTP/2
- 7.3.4 Besonderheit: Shebang-Skript
- 7.3.5 Besonderheit: Preview-Features ausprobieren
- 7.4 Microbenchmarks und JMH
- 7.4.1 Eigene Microbenchmarks und Varianten davon
- 7.4.2 Microbenchmarks mit JMH
- 7.4.3 Weitere Microbenchmarks mit JMH
- 7.4.4 Fallstricke beim Benchmarking mit JMH
- 7.4.5 Projekt zum Experimentieren
- 7.4.6 Fazit zu JMH
- 7.5 Das Packaging-Tool jpackage
- 7.5.1 Einführung
- 7.5.2 jpackage am Beispiel
- 7.5.3 Externe Bibliotheken mit jpackage einbinden
- 7.5.4 Hintergrundwissen: Verzeichnisstruktur und -inhalt der Distributionen
- 7.6 Veränderungen bei den Garbage Collectors
- 7.6.1 Epsilon Garbage Collector (JDK 11)
- 7.6.2 Der Garbage Collector namens ZGC (JDK 15)
- 7.6.3 Entfernung von Concurrent Mark Sweep (CMS)
- 7.7 Ausgliederungen/Deprecations
- 7.7.1 Entfernung der JavaScript-Engine
- 7.7.2 Das Tool jdeprscan
- 7.7.3 Ausgliederung von JavaFX
- 7.7.4 Ausgliederung von Java EE und CORBA
- 7.7.5 Beispiel JAXB
- 8 Übungen zu den JVM-Neuerungen in JDK 11 bis 17
- 8.1 Aufgaben
- 8.2 Lösungen
-
II Ausblick
- 9 Neuerungen in Java 18
- 9.1 Java-18-JEPs im Überblick
- 9.1.1 JEP 400: UTF-8 by Default
- 9.1.2 JEP 408: Simple Web Server
- 9.1.3 JEP 413: Code Snippets in Java API Documentation
- 9.1.4 JEP 416: Reimplement Core Reflection with Method Handles
- 9.1.5 JEP 417: Vector API (Third Incubator)
- 9.1.6 JEP 418: Internet-Address Resolution SPI
- 9.1.7 JEP 419: Foreign Function & Memory API (Second Incubator)
- 9.1.8 JEP 420: Pattern Matching for switch (Second Preview)
- 9.1.9 JEP 421: Deprecate Finalization for Removal
- 9.2 API-Neuerungen
- 9.2.1 Neuerungen in der Klasse FileInputStream
- 9.2.2 Neuerungen in der Klasse Math
- 9.2.3 Neuerungen in der Klasse Duration
- 9.2.4 Neuerungen in der Aufzählung SourceVersion
- 9.2.5 Deprecations
- 9.3 Notwendige Anpassungen für Build-Tools und IDEs
- 9.3.1 Java 18 mit Gradle
- 9.3.2 Java 18 mit Maven
- 9.3.3 Java 18 mit Eclipse
- 9.3.4 Java 18 mit IntelliJ
- 9.4 Fazit
- 10 Ausblick auf Java 19
- 10.1 Java-19-JEPs im Überblick
- 10.1.1 JEP 405: Record Patterns (Preview)
- 10.1.2 JEP 422: Linux/RISC-V Port
- 10.1.3 JEP 424: Foreign Function & Memory API (Preview)
- 10.1.4 JEP 425: Virtual Threads (Preview)
- 10.1.5 JEP 426: Vector API (Fourth Incubator)
- 10.1.6 JEP 427: Pattern Matching for switch (Third Preview)
- 10.1.7 JEP 428: Structured Concurrency (Incubator)
- 10.2 Installation der Java-19-Early-Access-Builds
- 10.2.1 Allgemeine Aktionen
- 10.2.2 Weitere Aktionen unter macOS
- 10.2.3 Weitere Aktionen unter Windows
- 10.2.4 Java-19-Installation prüfen
- 11 Zusammenfassung und Schlusswort
- 11.1 Gedanken zum Umstieg
- 11.2 Fazit
- 11.3 Abschließende Hinweise
-
III Anhang
- A Wesentliches aus Java 8, 9 und 10
- 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.1.5 Das Interface Predicate<T>
- A.2 Streams im Überblick
- A.2.1 Streams erzeugen – Create Operations
- A.2.2 Intermediate und Terminal Operations im Überblick
- A.2.3 Intermediate Operations
- A.2.4 Terminal Operations
- A.3 Neuerungen in der Datumsverarbeitung
- A.3.1 Die Klassen LocalDate, LocalTime und LocalDateTime
- A.3.2 Die Klasse Duration
- A.3.3 Die Klasse Period
- A.3.4 Datumsarithmetik mit TemporalAdjusters
- A.4 Diverse Erweiterungen
- A.4.1 Erweiterungen im Interface Comparator<T>
- A.4.2 Die Klasse Optional<T>
- A.4.3 Collection-Factory-Methoden
- A.4.4 Erweiterungen im NIO und der Klasse Files
- A.4.5 Die Klasse CompletableFuture<T>
- A.5 Weitere Syntaxneuerungen
- A.5.1 Anonyme innere Klassen und der Diamond Operator
- A.5.2 Syntaxerweiterung var
- B Die Build-Tools Gradle und Maven im Überblick
- B.1 Projektstruktur für Gradle und Maven
- B.2 Einführung in Gradle
- B.3 Einführung Maven
- B.3.1 Maven im Überblick
- B.3.2 Maven am Beispiel
- Literaturverzeichnis
- Fußnoten
- Index
Product information
- Title: Java – die Neuerungen in Version 17 LTS, 18 und 19
- Author(s):
- Release date: July 2022
- Publisher(s): dpunkt
- ISBN: 9783864909023
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
Der Java-Profi: Persistenzlösungen und REST-Services
• Erweiterung des Java-Profis für Datenbankprogrammierung• Erfolgsautor Michael Inden• Professionelle Entwicklung von Datenbankanwendungen
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
Der Weg zum Java-Profi, 5th Edition
Dieses Buch bietet eine umfassende Einführung in die professionelle Java-Entwicklung und vermittelt Ihnen das notwendige Wissen, …