O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Java – die Neuerungen in Version 9 bis 12

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

  1. Cover
  2. Über den Autor
  3. Titel
  4. Impressum
  5. Inhaltsverzeichnis
  6. Vorwort
  7. 1 Einleitung
  8. I Sprach- und API-Erweiterungen in Java 9
    1. 2 Syntaxerweiterungen in JDK 9
    2. 2.1 Anonyme innere Klassen und der Diamond Operator
    3. 2.2 Erweiterung der @Deprecated-Annotation
    4. 2.3 Private Methoden in Interfaces
    5. 2.4 Verbotener Bezeichner ’_’
    6. 3 Neues und Änderungen in JDK 9
    7. 3.1 Neue und erweiterte APIs
    8. 3.1.1 Das neue Process-API
    9. 3.1.2 Collection-Factory-Methoden
    10. 3.1.3 Reactive Streams und die Klasse Flow
    11. 3.1.4 Erweiterungen in der Klasse InputStream
    12. 3.1.5 Erweiterungen rund um die Klasse Optional<T>
    13. 3.1.6 Erweiterungen im Stream-API
    14. 3.1.7 Erweiterungen in der Klasse LocalDate
    15. 3.1.8 Erweiterungen in der Klasse Arrays
    16. 3.1.9 Erweiterungen in der Klasse Objects
    17. 3.1.10 Erweiterungen in der Klasse CompletableFuture<T>
    18. 3.2 Sonstige Änderungen
    19. 3.2.1 Optimierung bei Strings
    20. 3.2.2 Deprecation diverser Typen und Methoden im JDK
    21. 4 Änderungen in der JVM in JDK 9
    22. 4.1 Änderung des Versionsschemas
    23. 4.2 Unterstützung von Multi-Release-JARs
    24. 4.3 Java + REPL => jshell
    25. 4.4 HTML5 Javadoc
    26. 5 Übungen zu den Neuerungen in JDK 9
  9. II Sprach- und API-Erweiterungen in Java 10 bis 12
    1. 6 Neues und Änderungen in Java 10
    2. 6.1 Syntaxerweiterung var
    3. 6.2 API-Neuerungen
    4. 6.2.1 Unveränderliche Kopien von Collections
    5. 6.2.2 Immutable Collections aus Streams erzeugen
    6. 6.2.3 Erweiterung in der Klasse Optional
    7. 6.2.4 Modifikationen in der Versionierung
    8. 6.2.5 Verschiedenes
    9. 6.3 Fazit
    10. 7 Neues und Änderungen in Java 11
    11. 7.1 Syntaxerweiterung für var
    12. 7.2 API-Neuerungen
    13. 7.2.1 Neue Hilfsmethoden in der Klasse String
    14. 7.2.2 Neue Hilfsmethoden in der Utility-Klasse Files
    15. 7.2.3 Erweiterung in der Klasse Optional<T>
    16. 7.2.4 Erweiterung im Interface Predicate<T>
    17. 7.2.5 HTTP/2-API
    18. 7.3 Neuerungen in der JVM
    19. 7.3.1 Epsilon Garbage Collector
    20. 7.3.2 Launch Single-File Source-Code Programs
    21. 7.3.3 Das Tool Flight Recorder
    22. 7.4 Deprecations und Entfernungen im JDK
    23. 7.4.1 Aufräumarbeiten in der Klasse Thread
    24. 7.4.2 Deprecation der JavaScript-Unterstützung
    25. 7.4.3 Ausgliederung von JavaFX
    26. 7.4.4 Ausgliederung von Java EE und CORBA
    27. 7.5 Fazit
    28. 8 Neues und Änderungen in Java 12
    29. 8.1 Switch Expressions
    30. 8.1.1 Einführendes Beispiel
    31. 8.1.2 Zuweisungen im Lambda
    32. 8.1.3 break mit Rückgabewert
    33. 8.2 Microbenchmark Suite
    34. 8.2.1 Eigene Microbenchmarks und Varianten davon
    35. 8.2.2 Microbenchmarks mit JMH
    36. 8.2.3 Fazit
    37. 8.3 Java 12 – notwendige Anpassungen für Build-Tools und IDEs
    38. 8.3.1 Java 12 mit Gradle
    39. 8.3.2 Java 12 mit Maven
    40. 8.3.3 Java 12 mit Eclipse
    41. 8.3.4 Java 12 mit IntelliJ
    42. 8.4 Fazit
    43. 9 Übungen zu den Neuerungen in den JDKs 10 und 11
  10. III Modularisierung
    1. 10 Modularisierung mit Project Jigsaw
    2. 10.1 Grundlagen
    3. 10.1.1 Bisherige Varianten der Modularisierung
    4. 10.1.2 Warum Modularisierung wünschenswert ist
    5. 10.2 Modularisierung im Überblick
    6. 10.2.1 Grundlagen zu Project Jigsaw
    7. 10.2.2 Einführendes Beispiel mit zwei Modulen
    8. 10.2.3 Packaging
    9. 10.2.4 Linking
    10. 10.2.5 Abhängigkeiten und Modulgraphen
    11. 10.2.6 Module des JDKs einbinden
    12. 10.2.7 Arten von Modulen
    13. 10.3 Sichtbarkeiten und Zugriffsschutz
    14. 10.3.1 Sichtbarkeiten
    15. 10.3.2 Zugriffsschutz an Beispielen
    16. 10.3.3 Transitive Abhängigkeiten (Implied Readability)
    17. 10.4 Zusammenfassung
    18. 11 Weiterführende Themen zur Modularisierung
    19. 11.1 Empfehlenswertes Verzeichnislayout für Module
    20. 11.2 Modularisierung und Services
    21. 11.2.1 Begrifflichkeiten: API, SPI und Service Provider
    22. 11.2.2 Service-Ansatz in Java seit JDK 6
    23. 11.2.3 Services im Bereich der Modularisierung
    24. 11.2.4 Definition eines Service Interface
    25. 11.2.5 Realisierung eines Service Provider
    26. 11.2.6 Realisierung eines Service Consumer
    27. 11.2.7 Kontrolle der Abhängigkeiten
    28. 11.2.8 Fazit
    29. 11.3 Modularisierung und Reflection
    30. 11.3.1 Verarbeitung von Modulen mit Reflection
    31. 11.3.2 Tool zur Ermittlung von Modulen zu Klassen
    32. 11.3.3 Besonderheiten bei Reflection
    33. 11.4 Kompatibilität und Migration
    34. 11.4.1 Kompatibilitätsmodus
    35. 11.4.2 Migrationsszenarien
    36. 11.4.3 Fallstrick bei der Bottom-up-Migration
    37. 11.4.4 Beispiel: Migration mit Automatic Modules
    38. 11.4.5 Beispiel: Automatic und Unnamed Module
    39. 11.4.6 Beispiel: Abwandlung mit zwei Automatic Modules
    40. 11.4.7 Mögliche Schwierigkeiten bei Migrationen
    41. 11.4.8 Fazit
    42. 12 Übungen zur Modularisierung
  11. IV Verschiedenes
    1. 13 Build-Tools und IDEs mit Java 11
    2. 13.1 Nicht modularisierte Applikationen
    3. 13.1.1 Gradle
    4. 13.1.2 Maven
    5. 13.1.3 Eclipse
    6. 13.1.4 IntelliJ IDEA
    7. 13.1.5 Externe Abhängigkeiten im Kompatibilitätsmodus
    8. 13.2 Modularisierte Applikationen
    9. 13.2.1 Gradle
    10. 13.2.2 Maven
    11. 13.2.3 Eclipse
    12. 13.2.4 IntelliJ IDEA
    13. 13.3 Fazit
    14. 14 Zusammenfassung
  12. V Anhang
    1. A Schnelleinstieg in Java 8
    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.2 Streams im Überblick
    8. A.2.1 Streams erzeugen – Create Operations
    9. A.2.2 Intermediate und Terminal Operations im Überblick
    10. A.2.3 Zustandslose Intermediate Operations
    11. A.2.4 Zustandsbehaftete Intermediate Operations
    12. A.2.5 Terminal Operations
    13. A.3 Neuerungen in der Datumsverarbeitung
    14. A.3.1 Die Klasse Instant
    15. A.3.2 Die Klassen LocalDate, LocalTime und LocalDateTime
    16. A.3.3 Die Klasse Duration
    17. A.3.4 Die Klasse Period
    18. A.3.5 Datumsarithmetik mit TemporalAdjusters
    19. A.4 Diverse Erweiterungen
    20. A.4.1 Erweiterungen im Interface Comparator<T>
    21. A.4.2 Erweiterungen in der Klasse Optional<T>
    22. A.4.3 Erweiterungen in der Klasse CompletableFuture<T>
    23. B Einführung Gradle
    24. B.1 Projektstruktur für Maven und Gradle
    25. B.2 Builds mit Gradle
    26. C Einführung Maven
    27. C.1 Maven im Überblick
    28. C.2 Maven am Beispiel
  13. Literaturverzeichnis
  14. Fußnoten
  15. Index