2. Warum sollte ich OSGi verwenden?
• modulare Anwendungen
• Versionierte Anwendungen
• (wenn richtig) wenig Abhängigkeiten
• (wenn richtig) hoher grad an Isolation der Module
• (wenn richtig) Entwickeln nur gegen Schnittstelle
2
3. Allgemeines und Geschichte
• SOA (Service Orientated Architechture) innerhalb einer Java VM
• Open Services Gateway initiative
• JCP „JSR-291: Dynamic Component Support for Java SE“
• Ziel sind Modulare Anwendungen für Java SE
• Derzeit Spec 7 im Draft
• Spezifiziert zwei Standards (Blueprint und Declerative Services)
• Spezifiziert auch Services (Standard Services)
3
4. Erweitert um Metadaten einer JAR
• MANIFEST.MF einer JAR wird um OGSi Header erweitert
• Zusätzliche Informationen zu Services unter OSGI-INF Ordner
• Erweiterte JAR wird als Bundle bezeichnet
• Jedes Bundle ist auch eine JAR
• Weitere Analogien:
• WAR Pendant heißt WAB (Web Application Bundle)
• EAR Pendant heißt EAB (Enterprise Application Bundle)
4
5. Ein Interface ist eine Servicebeschreibung
• Einfache Java Interfaces als Services
• Java Klassen binden das Interface ein
• OSGi Metadata definieren die Kardinalität und Notwendigkeiten
• OSGi Runtime kümmert sich um das Befriedigen der Abhängigkeit
5
7. Blueprint
• Basiert auf Spring Dynamic Modules (DM)
• Definition per xml oder Annotations
• Wird mit Proxies umgesetzt
• Implementierungen
• Apache Aries
• Eclipse Gemini
7
10. Declarative Services
• Kommt aus dem Standard
• Definition per xml oder Annotations
• Cascading Call model
• Standardisierte Methoden/Annotations für Starten und Stoppen
• Implementierung
• Referenzimplementierung der OSGi Alliance
• aQute.biz
10
13. OSGi Runtime
• Runtime:
• Apache Felix vs Eclipse Equinox
• Repos:
• Apache Maven vs Eclipse P2 vs OBR ObjectBundleRepository
• Container
• Apache Karaf
• Eclipse Virgo (small footprint)
• “Eclipse IDE”
• IBM WebSphere
• RedHat Wildfly
13
14. OSGi Kritik und Mythen
• Zu kompliziert!
• Im „Alltag“ macht das meiste ein Maven Plugin
14
15. OSGi Kritik und Mythen
• Zu kompliziert!
• Im „Alltag“ macht das meiste ein Maven Plugin
15
•Mit Karaf super tooling und deployment, debugging
• Karaf Container
• Karaf Cellar
• Karaf Decanter