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 9 – Die Neuerungen

Book Description

Dieses Buch bietet einen fundierten Überblick über die vielfältigen Neuerungen in JDK 9. Zunächst werden die Änderungen in der Sprache selbst behandelt. Einen weiteren Schwerpunkt bilden die Erweiterungen in diversen APIs, etwa sinnvolle Ergänzungen in den Klassen Optional und Stream.Aber auch im Bereich Concurrency wurde die Klasse CompletableFuture ergänzt. Wichtiger ist aber wohl die Unterstützung von Reactive Streams.

Table of Contents

  1. Cover
  2. Titel
  3. Impressum
  4. Inhaltsverzeichnis
  5. Vorwort
  6. 1 Einleitung
  7. I Sprach- und API-Erweiterungen
    1. 2 Syntaxerweiterungen
    2. 2.1 Anonyme innere Klassen und der Diamond Operator
    3. 2.2 Nutzung von »effectively final«-Variablen im ARM
    4. 2.3 Neuerung bei der @SafeVarargs-Annotation
    5. 2.4 Erweiterung der @Deprecated-Annotation
    6. 2.5 Private Methoden in Interfaces
    7. 2.6 Verbotener Bezeichner ’_’
    8. 3 Neues und Änderungen im JDK
    9. 3.1 Neue APIs
    10. 3.1.1 Das neue Process-API
    11. 3.1.2 Collection-Factory-Methoden
    12. 3.1.3 Reactive Streams und die Klasse Flow
    13. 3.1.4 Taskbar-Support
    14. 3.1.5 Verarbeitung von Stackframes und die Klasse StackWalker
    15. 3.1.6 HTTP/2-Support
    16. 3.2 Erweiterte APIs
    17. 3.2.1 Erweiterungen in der Klasse InputStream
    18. 3.2.2 Erweiterungen rund um die Klasse Optional
    19. 3.2.3 Erweiterungen im Stream-API
    20. 3.2.4 Erweiterungen in der Klasse LocalDate
    21. 3.2.5 Support von UTF-8 in ResourceBundles
    22. 3.2.6 Erweiterungen in der Klasse Arrays
    23. 3.2.7 Erweiterungen in der Klasse Objects
    24. 3.2.8 Erweiterungen in der Klasse CompletableFuture
    25. 3.2.9 Erweiterungen in Class<T>
    26. 3.2.10 Die Klasse MethodHandle
    27. 3.2.11 Die Klasse VarHandle
    28. 3.3 Sonstige Änderungen
    29. 3.3.1 Optimierung bei Strings
    30. 3.3.2 Erweiterungen im Unicode-Support
    31. 3.3.3 HiDPI-Support
    32. 3.3.4 Multi-Resolution Images
    33. 3.3.5 Unterstützung von TIFF-Grafiken
    34. 3.3.6 Support für Spin-Wait-Loops
    35. 3.3.7 Deprecation diverser Typen und Methoden im JDK
    36. 4 Änderungen in der JVM
    37. 4.1 Performance-Verbesserungen
    38. 4.2 HTML5 Javadoc
    39. 4.3 Änderung des Versionsschemas
    40. 4.4 Browser-Plugin ist deprecated
    41. 4.5 Garbage Collection
    42. 4.6 Unterstützung von Multi-Release-JARs
    43. 4.7 Java + REPL => jshell
    44. 5 Übungen zu den Neuerungen in JDK 9
  8. II Modularisierung
    1. 6 Modularisierung mit Project Jigsaw
    2. 6.1 Grundlagen
    3. 6.1.1 Bisherige Varianten der Modularisierung
    4. 6.1.2 Warum wir Modularisierung brauchen
    5. 6.2 Modularisierung im Überblick
    6. 6.2.1 Grundlagen zu Project Jigsaw
    7. 6.2.2 Einführendes Beispiel
    8. 6.2.3 Komplexeres Beispiel
    9. 6.2.4 Packaging
    10. 6.2.5 Linking
    11. 6.2.6 Abhängigkeiten und Modulgraphen
    12. 6.2.7 Module des JDKs einbinden
    13. 6.2.8 Arten von Modulen
    14. 6.3 Sichtbarkeiten und Zugriffsschutz
    15. 6.3.1 Sichtbarkeiten
    16. 6.3.2 Zugriffsschutz an Beispielen
    17. 6.3.3 Transitive Abhängigkeiten (Implied Readability)
    18. 6.4 Zusammenfassung
    19. 7 Weiterführende Themen zur Modularisierung
    20. 7.1 Modularisierung und Services
    21. 7.1.1 Begrifflichkeiten: API, SPI und Service Provider
    22. 7.1.2 Service-Ansatz in Java seit JDK 6
    23. 7.1.3 Services im Bereich der Modularisierung
    24. 7.1.4 Definition eines Service Interface
    25. 7.1.5 Realisierung eines Service Provider
    26. 7.1.6 Realisierung eines Service Consumer
    27. 7.1.7 Kontrolle der Abhängigkeiten
    28. 7.1.8 Fazit
    29. 7.2 Modularisierung und Reflection
    30. 7.2.1 Verarbeitung von Modulen mit Reflection
    31. 7.2.2 Tool zur Ermittlung von Modulen zu Klassen
    32. 7.2.3 Konvertierungstool für import zu requires
    33. 7.2.4 Besonderheiten bei Reflection
    34. 7.3 Kompatibilität und Migration
    35. 7.3.1 Kompatibilitätsmodus
    36. 7.3.2 Migrationsszenarien
    37. 7.3.3 Fallstrick bei der Bottom-up-Migration
    38. 7.3.4 Beispiel: Migration mit Automatic Modules
    39. 7.3.5 Beispiel: Automatic und Unnamed Module
    40. 7.3.6 Abwandlung mit zwei Automatic Modules
    41. 7.3.7 Mögliche Schwierigkeiten bei Migrationen
    42. 7.3.8 Fazit
    43. 8 Übungen zur Modularisierung
  9. III Verschiedenes
    1. 9 Build-Tools und IDEs
    2. 9.1 Nicht modularisierte Applikationen
    3. 9.1.1 Gradle
    4. 9.1.2 Maven
    5. 9.1.3 Eclipse
    6. 9.1.4 IntelliJ IDEA
    7. 9.1.5 NetBeans
    8. 9.2 Nicht modularisierte Applikationen mit HTTP/2-API
    9. 9.2.1 Gradle
    10. 9.2.2 Maven
    11. 9.2.3 Eclipse
    12. 9.2.4 IntelliJ IDEA
    13. 9.2.5 NetBeans
    14. 9.3 Modularisierte Applikationen
    15. 9.3.1 Gradle
    16. 9.3.2 Maven
    17. 9.3.3 Eclipse
    18. 9.3.4 IntelliJ IDEA
    19. 9.3.5 NetBeans
    20. 9.4 Besonderheiten beim Unit-Testen
    21. 9.4.1 Gradle
    22. 9.4.2 Maven
    23. 9.4.3 Eclipse
    24. 9.4.4 IntelliJ IDEA
    25. 9.4.5 NetBeans
    26. 9.4.6 Kommandozeile
    27. 9.5 Kompatibilitätsmodus
    28. 9.5.1 Gradle
    29. 9.5.2 Maven
    30. 9.5.3 Eclipse
    31. 9.5.4 IntelliJ IDEA
    32. 9.5.5 NetBeans
    33. 9.5.6 Kommandozeile
    34. 9.6 Fazit
    35. 10 Zusammenfassung
  10. IV 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 Neue Aufzählungen, Klassen und Interfaces
    15. A.3.2 Die Klasse Instant
    16. A.3.3 Die Klasse Duration
    17. A.3.4 Die Klassen LocalDate, LocalTime und LocalDateTime
    18. A.3.5 Die Klasse Period
    19. A.3.6 Datumsarithmetik mit TemporalAdjusters
    20. A.4 Diverse Erweiterungen
    21. A.4.1 Erweiterungen im Interface Comparator<T>
    22. A.4.2 Die Klasse Optional<T>
    23. A.4.3 Die Klasse CompletableFuture
    24. B Einführung Gradle
    25. B.1 Projektstruktur für Maven und Gradle
    26. B.2 Builds mit Gradle
    27. C Einführung Maven
    28. C.1 Maven im Überblick
    29. C.2 Maven am Beispiel
  11. Literaturverzeichnis
  12. Index
  13. Fußnoten