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
- Cover
- Titel
- Impressum
- Vorwort
- Inhaltsverzeichnis
-
I Einführung und Grundlagen
- 1 Das Prinzip der Modularisierung
- 1.1 Was ist Modularisierung?
- 1.2 Was ist ein Modul?
- 1.2.1 Geheimnisprinzip und Datenkapselung
- 1.3 Modularisierung eines Systems
- 1.3.1 Entwurfsprozess für Module
- 1.3.2 Entwurfstechniken
- 1.3.3 Entwurfskriterien zur Modularisierung
- 1.3.4 Probleme bei der Modularisierung
- 1.4 Warum modularisieren?
- 1.5 Zusammenfassung
- 2 Der Weg zum Java-Modulsystem
- 2.1 Modularisierung vor Java 9
- 2.1.1 Methoden, Klassen und Komponenten
- 2.1.2 Pakete
- 2.1.3 JARs und Build-Tools
- 2.1.4 Open Services Gateway initiative (OSGi)
- 2.2 Ziele des Java-Modulsystems
- 2.2.1 Abhängigkeiten
- 2.2.2 Startup Performance
- 2.2.3 Mangelnde Sicherheit
- 2.2.4 Skalierbarkeit der Plattform
- 2.3 Zusammenfassung
-
II Module in der Praxis
- 3 Das Java-Modulsystem
- 3.1 Das Modul
- 3.2 Abhängigkeiten und Sichtbarkeiten
- 3.2.1 Verteilter Modul-Quellcode
- 3.2.2 Transitive Abhängigkeiten
- 3.3 Services
- 3.3.1 Services vor Java 9
- 3.3.2 Services mit Modulen
- 3.3.3 ServiceLoader und Module
- 3.4 Ressourcen
- 3.4.1 Modulübergreifender und -interner Zugriff
- 3.5 Arten von Modulen
- 3.5.1 Platform Explicit Modules
- 3.5.2 Application Explicit Modules
- 3.5.3 Automatic Modules
- 3.5.4 Namensfestlegung für Automatic Modules
- 3.5.5 Open Modules
- 3.5.6 Unnamed Module
- 3.6 Reflection
- 3.7 Schichten und Klassenloader
- 3.7.1 Anlegen neuer Schichten
- 3.8 Analyse von Modulen
- 3.8.1 Visualisierung des Modulgraphen
- 3.9 Ein Blick unter die Motorhaube
- 3.9.1 Die Entstehung eines Modulgraphen
- 3.9.2 Configuration
- 3.9.3 ModuleLayer
- 3.10 Zusammenfassung
- 4 Das modularisierte JDK
- 4.1 Das JDK war ein Monolith
- 4.2 Compact Profiles
- 4.3 Die Modularisierung der Plattform
- 4.3.1 JDK-Struktur
- 4.4 Eigene modulare Laufzeit-Images erstellen
- 4.5 Zusammenfassung
- 5 Testen und Patchen von Modulen
- 5.1 Testen – kurz und knapp
- 5.1.1 Validierung und Verifizierung
- 5.1.2 Testplanung und -spezifikation
- 5.1.3 Testarten
- 5.2 Black-Box-Test
- 5.3 White-Box-Test
- 5.4 Patchen
- 5.5 Zusammenfassung
- 6 Migration von Anwendungen
- 6.1 Was bedeutet Migration?
- 6.2 Fallstricke
- 6.3 Migrationsstrategien
- 6.3.1 Reine Plattform-Migration
- 6.3.2 Big-Bang-Migration
- 6.3.3 Top-down-Migration
- 6.3.4 Bottom-up-Migration
- 6.4 Beispiel für die Vorgehensweise einer Migration
- 6.5 Big Kill Switch
- 6.6 Praktisches Beispiel
- 6.6.1 Die Anwendung
- 6.6.2 Untersuchung auf Abhängigkeiten
- 6.6.3 Probleme bei der Migration vom Klassenpfad
- 6.6.4 Integration nichtmodularer Abhängigkeiten
- 6.6.5 Die Migration der Anwendung
- 6.7 Tipps für die Migration
- 6.8 Zusammenfassung
- 7 Kritik am Modulsystem
- 8 OSGi vs. Java-Modulsystem
- 8.1 Was ist OSGi?
- 8.2 OSGi in Kürze
- 8.3 Unterschiede zum Java-Modulsystem
- 8.4 Zusammenfassung
- 9 Entwicklungswerkzeuge
- 9.1 IDEs
- 9.1.1 Eclipse
- 9.1.2 NetBeans IDE
- 9.1.3 IntelliJ IDEA
- 9.2 Build-Tools
- 9.2.1 Ant
- 9.2.2 Maven
- 9.2.3 Maven und Eclipse
- 9.2.4 Gradle
- 9.3 Zusammenfassung
- 10 Ein »Real World«-Projekt
- 10.1 Eine modularisierte Anwendung
- 10.2 Klassischer Ansatz
- 10.2.1 Anwendungsarchitektur
- 10.2.2 Modulentwurf und Implementierung
- 10.2.3 Starten der Anwendung
- 10.3 Alternativer Ansatz
- 10.3.1 Anwendungsarchitektur
- 10.3.2 Modulentwurf und Implementierung
- 10.3.3 Starten der Anwendung
- 10.4 Vergleich beider Ansätze
- 10.5 Zusammenfassung
- 11 Weitere Modularisierungsansätze
- 11.1 Microservices
- 11.1.1 Was ist ein Microservice?
- 11.1.2 Eigenschaften von Microservices
- 11.1.3 Größe eines Microservice
- 11.1.4 Kommunikation
- 11.1.5 Vorteile
- 11.1.6 Nachteile
- 11.1.7 Microservices vs. Java-Module
- 11.1.8 Microservices und Java EE
- 11.1.9 Ein auf Java-Modulen basierender Microservice
- 11.1.10 Zusammenfassung
- 11.2 Container
- 11.2.1 Virtualisierung
- 11.2.2 Was ist Docker?
- 11.2.3 Docker, das modularisierte JDK und Java-Module
- 11.2.4 Ein Docker-Container mit Java-Modulen
- 11.2.5 Zusammenfassung
- Literaturverzeichnis
- Index
Product information
- Title: Modularisierung mit Java 9
- Author(s):
- Release date: January 2018
- Publisher(s): dpunkt
- ISBN: 9783864904776
You might also like
book
Java – die Neuerungen in Version 17 LTS, 18 und 19
Dieses Buch richtet sich an alle, die bereits ein solides Java-Know-how besitzen und sich prägnant über …
book
Java – die Neuerungen in Version 9 bis 14
Dieses Buch richtet sich an Leser, die bereits solides Java-Know-how besitzen und sich prägnant über die …
book
Java Übungsbuch - Für die Versionen Java 8 bis Java 13 - Aufgaben mit vollständigen Lösungen
Trainieren Sie Ihre Java-Kenntnisse Learning by Doing anhand praktischer Übungen Mit vollständigen und kommentierten Lösungen Dieses …
book
Android-Apps programmieren - Professionelle App-Entwicklung mit Android Studio 4
Praktischer Einstieg von den Grundlagen der App-Programmierung bis hin zu fortgeschrittenen Techniken Vollständiges Beispielprojekt mit zahlreichen …