OSGi
Was ist das und warum sollte man es sich mal anschauen
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
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
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
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
TaskService
6
Blueprint
• Basiert auf Spring Dynamic Modules (DM)
• Definition per xml oder Annotations
• Wird mit Proxies umgesetzt
• Implementierungen
• Apache Aries
• Eclipse Gemini
7
Blueprint Provider
8
Blueprint Consumer
9
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
Declarative Service Provider
11
Declerative Service Consumer
12
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
OSGi Kritik und Mythen
• Zu kompliziert!
• Im „Alltag“ macht das meiste ein Maven Plugin
14
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
Vielen Dank für die
Aufmerksamkeit
Quellen/Sammlung
• https://github.com/cschneider/Karaf-Tutorial
• https://www.osgi.org/
• http://enroute.osgi.org/
• http://planet.jboss.org/post/thoughts_on_blueprint_and_declarative
_services_dependency_injection_or_dependency_management
• https://events.static.linuxfound.org/sites/events/files/slides/Microse
rvices-CXF-Karaf.pdf
17

JUG MZ OSGi Lightning Talk

  • 1.
    OSGi Was ist dasund warum sollte man es sich mal anschauen
  • 2.
    Warum sollte ichOSGi 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 Metadateneiner 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 isteine 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
  • 6.
  • 7.
    Blueprint • Basiert aufSpring Dynamic Modules (DM) • Definition per xml oder Annotations • Wird mit Proxies umgesetzt • Implementierungen • Apache Aries • Eclipse Gemini 7
  • 8.
  • 9.
  • 10.
    Declarative Services • Kommtaus 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
  • 11.
  • 12.
  • 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 undMythen • Zu kompliziert! • Im „Alltag“ macht das meiste ein Maven Plugin 14
  • 15.
    OSGi Kritik undMythen • Zu kompliziert! • Im „Alltag“ macht das meiste ein Maven Plugin 15 •Mit Karaf super tooling und deployment, debugging • Karaf Container • Karaf Cellar • Karaf Decanter
  • 16.
    Vielen Dank fürdie Aufmerksamkeit
  • 17.
    Quellen/Sammlung • https://github.com/cschneider/Karaf-Tutorial • https://www.osgi.org/ •http://enroute.osgi.org/ • http://planet.jboss.org/post/thoughts_on_blueprint_and_declarative _services_dependency_injection_or_dependency_management • https://events.static.linuxfound.org/sites/events/files/slides/Microse rvices-CXF-Karaf.pdf 17