Vorwort | 5 |
Inhaltsverzeichnis | 11 |
I Einführung und Grundlagen | 15 |
Das Prinzip der Modularisierung | 17 |
Was ist Modularisierung? | 17 |
Was ist ein Modul? | 20 |
Geheimnisprinzip und Datenkapselung | 23 |
Modularisierung eines Systems | 25 |
Entwurfsprozess für Module | 25 |
Entwurfstechniken | 26 |
Entwurfskriterien zur Modularisierung | 29 |
Probleme bei der Modularisierung | 35 |
Warum modularisieren? | 37 |
Zusammenfassung | 40 |
Der Weg zum Java-Modulsystem | 43 |
Modularisierung vor Java 9 | 46 |
Methoden, Klassen und Komponenten | 46 |
Pakete | 46 |
JARs und Build-Tools | 47 |
Open Services Gateway initiative (OSGi) | 47 |
Ziele des Java-Modulsystems | 47 |
Abhängigkeiten | 48 |
Startup Performance | 50 |
Mangelnde Sicherheit | 50 |
Skalierbarkeit der Plattform | 50 |
Zusammenfassung | 51 |
II Module in der Praxis | 53 |
Das Java-Modulsystem | 55 |
Das Modul | 55 |
Abhängigkeiten und Sichtbarkeiten | 60 |
Verteilter Modul-Quellcode | 67 |
Transitive Abhängigkeiten | 68 |
Services | 71 |
Services vor Java 9 | 73 |
Services mit Modulen | 75 |
ServiceLoader und Module | 80 |
Ressourcen | 87 |
Modulübergreifender und -interner Zugriff | 89 |
Arten von Modulen | 92 |
Platform Explicit Modules | 93 |
Application Explicit Modules | 94 |
Automatic Modules | 94 |
Namensfestlegung für Automatic Modules | 95 |
Open Modules | 97 |
Unnamed Module | 98 |
Reflection | 100 |
Schichten und Klassenloader | 106 |
Anlegen neuer Schichten | 108 |
Analyse von Modulen | 114 |
Visualisierung des Modulgraphen | 115 |
Ein Blick unter die Motorhaube | 117 |
Die Entstehung eines Modulgraphen | 117 |
Configuration | 119 |
ModuleLayer | 123 |
Zusammenfassung | 126 |
Das modularisierte JDK | 129 |
Das JDK war ein Monolith | 129 |
Compact Profiles | 131 |
Die Modularisierung der Plattform | 132 |
JDK-Struktur | 133 |
Eigene modulare Laufzeit-Images erstellen | 135 |
Zusammenfassung | 138 |
Testen und Patchen von Modulen | 139 |
Testen – kurz und knapp | 139 |
Validierung und Verifizierung | 140 |
Testplanung und -spezifikation | 141 |
Testarten | 141 |
Black-Box-Test | 142 |
White-Box-Test | 147 |
Patchen | 149 |
Zusammenfassung | 153 |
Migration von Anwendungen | 155 |
Was bedeutet Migration? | 155 |
Fallstricke | 156 |
Migrationsstrategien | 157 |
Reine Plattform-Migration | 158 |
Big-Bang-Migration | 159 |
Top-down-Migration | 160 |
Bottom-up-Migration | 161 |
Beispiel für die Vorgehensweise einer Migration | 163 |
Big Kill Switch | 167 |
Praktisches Beispiel | 168 |
Die Anwendung | 168 |
Untersuchung auf Abhängigkeiten | 173 |
Probleme bei der Migration vom Klassenpfad | 174 |
Integration nichtmodularer Abhängigkeiten | 174 |
Die Migration der Anwendung | 175 |
Tipps für die Migration | 177 |
Zusammenfassung | 178 |
Kritik am Modulsystem | 181 |
OSGi vs. Java-Modulsystem | 185 |
Was ist OSGi? | 185 |
OSGi in Kürze | 186 |
Unterschiede zum Java-Modulsystem | 190 |
Zusammenfassung | 192 |
Entwicklungswerkzeuge | 195 |
IDEs | 195 |
Eclipse | 195 |
NetBeans IDE | 202 |
IntelliJ IDEA | 208 |
Build-Tools | 210 |
Ant | 211 |
Maven | 215 |
Maven und Eclipse | 222 |
Gradle | 228 |
Zusammenfassung | 234 |
Ein „Real World“-Projekt | 235 |
Eine modularisierte Anwendung | 236 |
Klassischer Ansatz | 236 |
Anwendungsarchitektur | 237 |
Modulentwurf und Implementierung | 240 |
Starten der Anwendung | 267 |
Alternativer Ansatz | 269 |
Anwendungsarchitektur | 270 |
Modulentwurf und Implementierung | 270 |
Starten der Anwendung | 287 |
Vergleich beider Ansätze | 289 |
Zusammenfassung | 290 |
Weitere Modularisierungsansätze | 291 |
Microservices | 291 |
Was ist ein Microservice? | 291 |
Eigenschaften von Microservices | 292 |
Größe eines Microservice | 293 |
Kommunikation | 293 |
Vorteile | 294 |
Nachteile | 295 |
Microservices vs. Java-Module | 296 |
Microservices und Java EE | 297 |
Ein auf Java-Modulen basierender Microservice | 300 |
Zusammenfassung | 312 |
Container | 312 |
Virtualisierung | 313 |
Was ist Docker? | 314 |
Docker, das modularisierte JDK und Java-Module | 315 |
Ein Docker-Container mit Java-Modulen | 315 |
Zusammenfassung | 321 |
Literaturverzeichnis | 323 |
Index | 327 |
www.dpunkt.de | 0 |