Java – die Neuerungen in Version 17 LTS, 18 und 19

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

  1. Cover
  2. Über den Autor
  3. Titel
  4. Impressum
  5. Widmung
  6. Inhaltsverzeichnis
  7. Vorwort
  8. 1 Einleitung
    1. 1.1 Releasepolitik
    2. 1.2 Inhaltsübersicht: Was erwartet Sie im Folgenden?
    3. 1.3 Grundgerüst des Eclipse-Projekts
    4. 1.4 Anmerkung zum Programmierstil
    5. 1.4.1 Gedanken zur Sourcecode-Kompaktheit
    6. 1.4.2 Gedanken zu final und var
    7. 1.4.3 Blockkommentare in Listings
    8. 1.4.4 Gedanken zur Formatierung
    9. 1.5 Konfigurationen für Build-Tools und IDEs
    10. 1.5.1 Java 17 mit Gradle
    11. 1.5.2 Java 17 mit Maven
    12. 1.5.3 Java 17 mit Eclipse
    13. 1.5.4 Java 17 mit IntelliJ
    14. 1.6 Ausprobieren der Beispiele und Lösungen
    15. 1.6.1 Ausprobieren neuer Java-Features mit der JShell oder der Kommandozeile
    16. 1.6.2 Ausprobieren neuer Java-Features in einer Sandbox
  9. I Neuerungen in Java 11 bis 17
    1. 2 Neuerungen in Java 17 im Überblick
    2. 2.1 JEPs im Überblick
    3. 2.1.1 JEP 306: Restore Always-Strict Floating-Point Semantics
    4. 2.1.2 JEP 356: Enhanced Pseudo-Random Number Generators
    5. 2.1.3 JEP 382: New macOS Rendering Pipeline
    6. 2.1.4 JEP 391: macOS/AArch64 Port
    7. 2.1.5 JEP 398: Deprecate the Applet API for Removal
    8. 2.1.6 JEP 403: Strongly Encapsulate JDK Internals
    9. 2.1.7 JEP 406: Pattern Matching for switch (Preview)
    10. 2.1.8 JEP 407: Remove RMI Activation
    11. 2.1.9 JEP 409: Sealed Classes
    12. 2.1.10 JEP 410: Remove the Experimental AOT and JIT Compiler
    13. 2.1.11 JEP 411: Deprecate the Security Manager for Removal
    14. 2.1.12 JEP 412: Foreign Function & Memory API (Incubator)
    15. 2.1.13 JEP 414: Vector API (Second Incubator)
    16. 2.1.14 JEP 415: Context-Specific Deserialization Filters
    17. 2.2 Neue Releasepolitik im Überblick
    18. 3 Syntaxneuerungen bis Java 17
    19. 3.1 Text Blocks
    20. 3.1.1 Grundlegende Syntax
    21. 3.1.2 Besonderheiten
    22. 3.1.3 Platzhalter
    23. 3.2 Switch Expressions
    24. 3.2.1 Einführendes Beispiel
    25. 3.2.2 Vollständigkeitsprüfung
    26. 3.2.3 Fallstricke der alten Syntax und Abhilfen
    27. 3.2.4 Rückgabe mit yield
    28. 3.2.5 Rückwärtskompatible Angabe bei case mit yield
    29. 3.3 Records
    30. 3.3.1 Einführendes Beispiel
    31. 3.3.2 Records für DTOs und Rückgabewerte
    32. 3.3.3 Erweiterungsmöglichkeiten
    33. 3.3.4 Besonderheit – Generics in Records
    34. 3.3.5 Besonderheit – Records und Interfaces
    35. 3.3.6 Zusammenfassung
    36. 3.4 Pattern Matching bei instanceof
    37. 3.4.1 Neue Syntax und einführendes Beispiel
    38. 3.4.2 Im Praxiseinsatz
    39. 3.5 Sealed Types
    40. 3.5.1 Neue Schlüsselwörter
    41. 3.5.2 Einführendes Beispiel
    42. 3.5.3 Wissenswertes
    43. 3.6 Lokale Enums und Interfaces
    44. 3.7 Statische Attribute und Methoden in inneren Klassen
    45. 3.8 Pattern Matching und Erweiterung für switch (Preview)
    46. 3.8.1 Einfaches Pattern Matching
    47. 3.8.2 Pattern Matching mit Bedingung
    48. 3.8.3 Spezialfall: Behandlung von null
    49. 4 Übungen zu den Syntaxneuerungen in JDK 11 bis 17
    50. 4.1 Aufgaben
    51. 4.2 Lösungen
    52. 5 Neues und Änderungen in den Java-17-APIs
    53. 5.1 Erweiterungen in der Klasse String
    54. 5.1.1 Die Methode isBlank()
    55. 5.1.2 Die Methode lines()
    56. 5.1.3 Die Methode repeat(int)
    57. 5.1.4 Die Methoden strip(), stripLeading() und stripTrailing()
    58. 5.1.5 Die Methode indent()
    59. 5.1.6 Die Methode transform()
    60. 5.1.7 Die Methode formatted()
    61. 5.2 Erweiterung im Interface Predicate<T>
    62. 5.3 Erweiterung in der Klasse Optional<T>
    63. 5.4 Erweiterungen in der Utility-Klasse Files
    64. 5.4.1 Die Methoden writeString() und readString()
    65. 5.4.2 Die Methode mismatch()
    66. 5.5 Erweiterungen im Stream-API
    67. 5.5.1 Der teeing()-Kollektor
    68. 5.5.2 Die Methode toList() als Shortcut zum Kollektor
    69. 5.5.3 Die Intermediate Operation mapMulti()
    70. 5.6 HTTP/2-API
    71. 5.6.1 Einführung
    72. 5.6.2 Real-World-Example: Wechselkurs mit REST
    73. 5.7 Die Utility-Klasse CompactNumberFormat
    74. 5.7.1 Einführendes Beispiel
    75. 5.7.2 Rundung steuern
    76. 5.7.3 Eigene Einheiten angeben
    77. 5.8 Verschiedenes und Deprecations
    78. 5.8.1 Unix-Domain-Socket Channels
    79. 5.8.2 Day Period Support
    80. 5.8.3 Aufruf von Defaultmethoden aus Dynamic Proxies
    81. 5.8.4 Deprecations der Konstruktoren der Wrapper-Klassen
    82. 6 Übungen zu den API-Neuerungen in JDK 11 bis 17
    83. 6.1 Aufgaben
    84. 6.2 Lösungen
    85. 7 Änderungen in der JVM bis Java 17
    86. 7.1 Verbesserung bei NullPointerExceptions
    87. 7.1.1 Einführende Beispiele
    88. 7.1.2 Fehlersuche bei komplexen Ausdrücken
    89. 7.2 Java + REPL => jshell
    90. 7.2.1 Einführendes Beispiel
    91. 7.2.2 Weitere Kommandos und Möglichkeiten
    92. 7.2.3 Neuere Java-Features nutzen
    93. 7.2.4 Komplexere Aktionen
    94. 7.2.5 JShell-API
    95. 7.3 Launch Single-File Source-Code Programs (JDK 11)
    96. 7.3.1 Einführendes Beispiel
    97. 7.3.2 Palindrom-Prüfung
    98. 7.3.3 REST-Calls mit HTTP/2
    99. 7.3.4 Besonderheit: Shebang-Skript
    100. 7.3.5 Besonderheit: Preview-Features ausprobieren
    101. 7.4 Microbenchmarks und JMH
    102. 7.4.1 Eigene Microbenchmarks und Varianten davon
    103. 7.4.2 Microbenchmarks mit JMH
    104. 7.4.3 Weitere Microbenchmarks mit JMH
    105. 7.4.4 Fallstricke beim Benchmarking mit JMH
    106. 7.4.5 Projekt zum Experimentieren
    107. 7.4.6 Fazit zu JMH
    108. 7.5 Das Packaging-Tool jpackage
    109. 7.5.1 Einführung
    110. 7.5.2 jpackage am Beispiel
    111. 7.5.3 Externe Bibliotheken mit jpackage einbinden
    112. 7.5.4 Hintergrundwissen: Verzeichnisstruktur und -inhalt der Distributionen
    113. 7.6 Veränderungen bei den Garbage Collectors
    114. 7.6.1 Epsilon Garbage Collector (JDK 11)
    115. 7.6.2 Der Garbage Collector namens ZGC (JDK 15)
    116. 7.6.3 Entfernung von Concurrent Mark Sweep (CMS)
    117. 7.7 Ausgliederungen/Deprecations
    118. 7.7.1 Entfernung der JavaScript-Engine
    119. 7.7.2 Das Tool jdeprscan
    120. 7.7.3 Ausgliederung von JavaFX
    121. 7.7.4 Ausgliederung von Java EE und CORBA
    122. 7.7.5 Beispiel JAXB
    123. 8 Übungen zu den JVM-Neuerungen in JDK 11 bis 17
    124. 8.1 Aufgaben
    125. 8.2 Lösungen
  10. II Ausblick
    1. 9 Neuerungen in Java 18
    2. 9.1 Java-18-JEPs im Überblick
    3. 9.1.1 JEP 400: UTF-8 by Default
    4. 9.1.2 JEP 408: Simple Web Server
    5. 9.1.3 JEP 413: Code Snippets in Java API Documentation
    6. 9.1.4 JEP 416: Reimplement Core Reflection with Method Handles
    7. 9.1.5 JEP 417: Vector API (Third Incubator)
    8. 9.1.6 JEP 418: Internet-Address Resolution SPI
    9. 9.1.7 JEP 419: Foreign Function & Memory API (Second Incubator)
    10. 9.1.8 JEP 420: Pattern Matching for switch (Second Preview)
    11. 9.1.9 JEP 421: Deprecate Finalization for Removal
    12. 9.2 API-Neuerungen
    13. 9.2.1 Neuerungen in der Klasse FileInputStream
    14. 9.2.2 Neuerungen in der Klasse Math
    15. 9.2.3 Neuerungen in der Klasse Duration
    16. 9.2.4 Neuerungen in der Aufzählung SourceVersion
    17. 9.2.5 Deprecations
    18. 9.3 Notwendige Anpassungen für Build-Tools und IDEs
    19. 9.3.1 Java 18 mit Gradle
    20. 9.3.2 Java 18 mit Maven
    21. 9.3.3 Java 18 mit Eclipse
    22. 9.3.4 Java 18 mit IntelliJ
    23. 9.4 Fazit
    24. 10 Ausblick auf Java 19
    25. 10.1 Java-19-JEPs im Überblick
    26. 10.1.1 JEP 405: Record Patterns (Preview)
    27. 10.1.2 JEP 422: Linux/RISC-V Port
    28. 10.1.3 JEP 424: Foreign Function & Memory API (Preview)
    29. 10.1.4 JEP 425: Virtual Threads (Preview)
    30. 10.1.5 JEP 426: Vector API (Fourth Incubator)
    31. 10.1.6 JEP 427: Pattern Matching for switch (Third Preview)
    32. 10.1.7 JEP 428: Structured Concurrency (Incubator)
    33. 10.2 Installation der Java-19-Early-Access-Builds
    34. 10.2.1 Allgemeine Aktionen
    35. 10.2.2 Weitere Aktionen unter macOS
    36. 10.2.3 Weitere Aktionen unter Windows
    37. 10.2.4 Java-19-Installation prüfen
    38. 11 Zusammenfassung und Schlusswort
    39. 11.1 Gedanken zum Umstieg
    40. 11.2 Fazit
    41. 11.3 Abschließende Hinweise
  11. III Anhang
    1. A Wesentliches aus Java 8, 9 und 10
    2. A.1 Einstieg in Lambdas
    3. A.1.1 Lambdas am Beispiel
    4. A.1.2 Functional Interfaces und SAM-Typen
    5. A.1.3 Type Inference und Kurzformen der Syntax
    6. A.1.4 Methodenreferenzen
    7. A.1.5 Das Interface Predicate<T>
    8. A.2 Streams im Überblick
    9. A.2.1 Streams erzeugen – Create Operations
    10. A.2.2 Intermediate und Terminal Operations im Überblick
    11. A.2.3 Intermediate Operations
    12. A.2.4 Terminal Operations
    13. A.3 Neuerungen in der Datumsverarbeitung
    14. A.3.1 Die Klassen LocalDate, LocalTime und LocalDateTime
    15. A.3.2 Die Klasse Duration
    16. A.3.3 Die Klasse Period
    17. A.3.4 Datumsarithmetik mit TemporalAdjusters
    18. A.4 Diverse Erweiterungen
    19. A.4.1 Erweiterungen im Interface Comparator<T>
    20. A.4.2 Die Klasse Optional<T>
    21. A.4.3 Collection-Factory-Methoden
    22. A.4.4 Erweiterungen im NIO und der Klasse Files
    23. A.4.5 Die Klasse CompletableFuture<T>
    24. A.5 Weitere Syntaxneuerungen
    25. A.5.1 Anonyme innere Klassen und der Diamond Operator
    26. A.5.2 Syntaxerweiterung var
    27. B Die Build-Tools Gradle und Maven im Überblick
    28. B.1 Projektstruktur für Gradle und Maven
    29. B.2 Einführung in Gradle
    30. B.3 Einführung Maven
    31. B.3.1 Maven im Überblick
    32. B.3.2 Maven am Beispiel
  12. Literaturverzeichnis
  13. Fußnoten
  14. Index

Product information

  • Title: Java – die Neuerungen in Version 17 LTS, 18 und 19
  • Author(s): Michael Inden
  • Release date: July 2022
  • Publisher(s): dpunkt
  • ISBN: 9783864909023