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

Modularisierung mit Java 9

Book Description

Das Buch zeigt Ihnen, was unter dem Konzept der Modularisierung zu verstehen ist, und vermittelt, wie Sie mit Java 9 Anwendungen auf Basis von Modulen entwickeln können.Sie lernen alle wichtigen Änderungen kennen, die sich mit der Modularisierung des JDKs selbst ergeben haben und erfahren, wie Sie schlanke Java-Laufzeitumgebungen erzeugen können, z.B. über kleine Docker-Images zur Ausführung in der Cloud oder auf ressourcenarmen Umgebungen, wie z.B. dem Raspberry Pi. Darüber hinaus werden Migrationsstrategien behandelt, um bestehende Projekte auf Modularisierung umzustellen, und es wird gezeigt, wie sich Modularisierung mit aktuellen Ansätzen wie Microservices, Self-Contained Systems und Container-Technologien verbinden lässt.

Table of Contents

  1. Cover
  2. Titel
  3. Impressum
  4. Vorwort
  5. Inhaltsverzeichnis
  6. I Einführung und Grundlagen
    1. 1 Das Prinzip der Modularisierung
    2. 1.1 Was ist Modularisierung?
    3. 1.2 Was ist ein Modul?
    4. 1.2.1 Geheimnisprinzip und Datenkapselung
    5. 1.3 Modularisierung eines Systems
    6. 1.3.1 Entwurfsprozess für Module
    7. 1.3.2 Entwurfstechniken
    8. 1.3.3 Entwurfskriterien zur Modularisierung
    9. 1.3.4 Probleme bei der Modularisierung
    10. 1.4 Warum modularisieren?
    11. 1.5 Zusammenfassung
    12. 2 Der Weg zum Java-Modulsystem
    13. 2.1 Modularisierung vor Java 9
    14. 2.1.1 Methoden, Klassen und Komponenten
    15. 2.1.2 Pakete
    16. 2.1.3 JARs und Build-Tools
    17. 2.1.4 Open Services Gateway initiative (OSGi)
    18. 2.2 Ziele des Java-Modulsystems
    19. 2.2.1 Abhängigkeiten
    20. 2.2.2 Startup Performance
    21. 2.2.3 Mangelnde Sicherheit
    22. 2.2.4 Skalierbarkeit der Plattform
    23. 2.3 Zusammenfassung
  7. II Module in der Praxis
    1. 3 Das Java-Modulsystem
    2. 3.1 Das Modul
    3. 3.2 Abhängigkeiten und Sichtbarkeiten
    4. 3.2.1 Verteilter Modul-Quellcode
    5. 3.2.2 Transitive Abhängigkeiten
    6. 3.3 Services
    7. 3.3.1 Services vor Java 9
    8. 3.3.2 Services mit Modulen
    9. 3.3.3 ServiceLoader und Module
    10. 3.4 Ressourcen
    11. 3.4.1 Modulübergreifender und -interner Zugriff
    12. 3.5 Arten von Modulen
    13. 3.5.1 Platform Explicit Modules
    14. 3.5.2 Application Explicit Modules
    15. 3.5.3 Automatic Modules
    16. 3.5.4 Namensfestlegung für Automatic Modules
    17. 3.5.5 Open Modules
    18. 3.5.6 Unnamed Module
    19. 3.6 Reflection
    20. 3.7 Schichten und Klassenloader
    21. 3.7.1 Anlegen neuer Schichten
    22. 3.8 Analyse von Modulen
    23. 3.8.1 Visualisierung des Modulgraphen
    24. 3.9 Ein Blick unter die Motorhaube
    25. 3.9.1 Die Entstehung eines Modulgraphen
    26. 3.9.2 Configuration
    27. 3.9.3 ModuleLayer
    28. 3.10 Zusammenfassung
    29. 4 Das modularisierte JDK
    30. 4.1 Das JDK war ein Monolith
    31. 4.2 Compact Profiles
    32. 4.3 Die Modularisierung der Plattform
    33. 4.3.1 JDK-Struktur
    34. 4.4 Eigene modulare Laufzeit-Images erstellen
    35. 4.5 Zusammenfassung
    36. 5 Testen und Patchen von Modulen
    37. 5.1 Testen – kurz und knapp
    38. 5.1.1 Validierung und Verifizierung
    39. 5.1.2 Testplanung und -spezifikation
    40. 5.1.3 Testarten
    41. 5.2 Black-Box-Test
    42. 5.3 White-Box-Test
    43. 5.4 Patchen
    44. 5.5 Zusammenfassung
    45. 6 Migration von Anwendungen
    46. 6.1 Was bedeutet Migration?
    47. 6.2 Fallstricke
    48. 6.3 Migrationsstrategien
    49. 6.3.1 Reine Plattform-Migration
    50. 6.3.2 Big-Bang-Migration
    51. 6.3.3 Top-down-Migration
    52. 6.3.4 Bottom-up-Migration
    53. 6.4 Beispiel für die Vorgehensweise einer Migration
    54. 6.5 Big Kill Switch
    55. 6.6 Praktisches Beispiel
    56. 6.6.1 Die Anwendung
    57. 6.6.2 Untersuchung auf Abhängigkeiten
    58. 6.6.3 Probleme bei der Migration vom Klassenpfad
    59. 6.6.4 Integration nichtmodularer Abhängigkeiten
    60. 6.6.5 Die Migration der Anwendung
    61. 6.7 Tipps für die Migration
    62. 6.8 Zusammenfassung
    63. 7 Kritik am Modulsystem
    64. 8 OSGi vs. Java-Modulsystem
    65. 8.1 Was ist OSGi?
    66. 8.2 OSGi in Kürze
    67. 8.3 Unterschiede zum Java-Modulsystem
    68. 8.4 Zusammenfassung
    69. 9 Entwicklungswerkzeuge
    70. 9.1 IDEs
    71. 9.1.1 Eclipse
    72. 9.1.2 NetBeans IDE
    73. 9.1.3 IntelliJ IDEA
    74. 9.2 Build-Tools
    75. 9.2.1 Ant
    76. 9.2.2 Maven
    77. 9.2.3 Maven und Eclipse
    78. 9.2.4 Gradle
    79. 9.3 Zusammenfassung
    80. 10 Ein »Real World«-Projekt
    81. 10.1 Eine modularisierte Anwendung
    82. 10.2 Klassischer Ansatz
    83. 10.2.1 Anwendungsarchitektur
    84. 10.2.2 Modulentwurf und Implementierung
    85. 10.2.3 Starten der Anwendung
    86. 10.3 Alternativer Ansatz
    87. 10.3.1 Anwendungsarchitektur
    88. 10.3.2 Modulentwurf und Implementierung
    89. 10.3.3 Starten der Anwendung
    90. 10.4 Vergleich beider Ansätze
    91. 10.5 Zusammenfassung
    92. 11 Weitere Modularisierungsansätze
    93. 11.1 Microservices
    94. 11.1.1 Was ist ein Microservice?
    95. 11.1.2 Eigenschaften von Microservices
    96. 11.1.3 Größe eines Microservice
    97. 11.1.4 Kommunikation
    98. 11.1.5 Vorteile
    99. 11.1.6 Nachteile
    100. 11.1.7 Microservices vs. Java-Module
    101. 11.1.8 Microservices und Java EE
    102. 11.1.9 Ein auf Java-Modulen basierender Microservice
    103. 11.1.10 Zusammenfassung
    104. 11.2 Container
    105. 11.2.1 Virtualisierung
    106. 11.2.2 Was ist Docker?
    107. 11.2.3 Docker, das modularisierte JDK und Java-Module
    108. 11.2.4 Ein Docker-Container mit Java-Modulen
    109. 11.2.5 Zusammenfassung
  8. Literaturverzeichnis
  9. Index