SlideShare una empresa de Scribd logo
1 de 39
Descargar para leer sin conexión
OSGi Konzepte



    Thementag OSGi

       03.11.2009




          Autor:
Christoph Schmidt-Casdorff
Agenda

     Modularisierung

     OSGi – ein Einstieg

     OSGi-Architektur
       – Modularisierung
       – Dynamik von Bundles
       – Servicekonzept

     Zusammenfassung




OSGi Konzepte                  Seite 3 / 38
Agenda

     Modularisierung

     OSGi – ein Einstieg

     OSGi-Architektur
       – Modularisierung
       – Dynamik von Bundles
       – Servicekonzept

     Zusammenfassung




OSGi Konzepte                  Seite 4 / 38
Agenda




Quelle : http://techdistrict.kirkk.com/2009/08/13/modularity-by-example
OSGi Konzepte                                                             Seite 5 / 38
Modularität – „Teile und Herrsche“

     Prinzip „Teile und Herrsche“

     Bausteine eines Softwaresystems sind Softwareeinheiten
     (Module), die
      – einen möglichst großen Grad an Isolierung/Unabhängigkeit
        zum Systemkontext besitzen
      – definierte Abgrenzungen zum Systemkontext und anderen
        Modulen besitzen

     Kann ein Modul in Java formuliert werden?




OSGi Konzepte                                                      Seite 6 / 38
Modularität in Java

     Sichtbarkeit von Klassen
     Package
      – Einzige Strukturierung jenseits der Klassen
      – Hat Sichtbarkeitsregeln
      – Sichtbarkeiten sind nicht hierarchisch
                • Sichtbarkeiten sind nur innerhalb eines Packages eingeschränkt
     JAR
      – Ist eine auslieferbare Ansammlung von Klassen/Ressourcen
      – Keine Sichtbarkeiten auf dieser Ebene
      – Wäre Kandidat für Modul

     Java bietet keine Unterstützung zur Modularisierung
      – Es muss etwas getan werden

OSGi Konzepte                                                                      Seite 7 / 38
Module

     Module
      – Sind Softwareeinheiten (physisch)
      – Können Abhängigkeiten untereinander definieren
                • Veröffentlichung für andere Module
                • Import von Veröffentlichung anderer Module
       – Können unabhängig voneinander de-/installiert werden

     Ein Modul kann aktiv bestimmen, welche Teile von ihm
     privat und welche öffentlich sind




OSGi Konzepte                                                   Seite 8 / 38
Komponentenmodelle

     Komponentenmodelle sind gelebte Modularität
      – Liefern ein(e) Verfahren / Modell / Spezifikation zur Modularisierung

     Komponentenmodelle definieren Verträge,
      – wie eine Komponente aufgebaut ist
      – wie Abhängigkeiten zwischen Komponenten beschrieben werden
                • welche Klassen exportiert / importiert werden
       – welche Anforderungen eine Komponente an den Systemkontext
         stellen kann

     Begriffe Modul und Komponente verwenden wir synonym
      – Module zielen mehr auf physische Struktur ab
      – Komponenten sind allgemeiner (auch auf logische Strukturen)

OSGi Konzepte                                                           Seite 9 / 38
Komponentenframework

     Komponentenframework
      – Laufzeitumgebung für Module
      – Implementierung des Vertragwerks

     Dirigent im Orchester der Module
      – De-/Installation von Modulen
      – Auflösung der Abhängigkeit zwischen den Modulen
      – Integration der Module in das Gesamtsystem




OSGi Konzepte                                             Seite 10 / 38
Warum Komponenten?

     Komponenten
      – Komponenten sind ‚missing link‘ zwischen Architektur und
        OO-Design
      – Wichtige Strukturierungsebene für den Übergang

     Management von Abhängigkeiten
      – Unnötige Abhängigkeiten
                • Erhöhen Komplexität der Anwendung
                • Sind Haupttreiber von ‚rotten design‘


     Isolierte Entwicklung
      – Anwendung ist eine Zusammenstellung von Komponenten
      – Geschieht erst auf Integrationsplattform
      – Idee: Anwendungsentwicklung als Baukasten
OSGi Konzepte                                                      Seite 11 / 38
Agenda

     Modularisierung

     OSGi – ein Einstieg

     OSGi-Architektur
       – Modularisierung
       – Dynamik von Bundles
       – Servicekonzept

     OSGi Compendium Services

     Zusammenfassung

OSGi Konzepte                   Seite 12 / 38
Modularisierung und Java

     Java besitzt keine Unterstützung zur Modularisierung

     Bietet aber technologische Vorrausetzungen für Modularisierung
      – Classloader-Konzept




OSGi Konzepte                                                   Seite 13 / 38
OSGi

     OSGi
      – Modularisierung mittels Java




OSGi Konzepte                          Seite 14 / 38
OSGi – historischer Abriss


     Open Gateway Service initiative

     OSGi ist eine Spezifikation
      – Durch OSGi Alliance organisiert
      – Gegründet 1999

     Wurzeln von OSGi liegen in Anwendungen für Mobile Endgeräte

     Mittlerweile engagiert sich OSGi im Bereich der Java Middleware
      – Aktuelle Version der Spezifikation ist 4.1



OSGi Konzepte                                                    Seite 15 / 38
Agenda

     Modularisierung

     OSGi – ein Einstieg

     OSGi-Architektur
       – Modularisierung
       – Dynamik von Bundles
       – Servicekonzept

     OSGi Compendium Services

     Zusammenfassung

OSGi Konzepte                   Seite 16 / 38
OSGi-Architektur - Modularisierung




OSGi Konzepte                        Seite 17 / 38
OSGi-Architektur - Modularisierung

     Module heißen in OSGi Bundle

     Bundle sind normale jar-Dateien

     Enthalten aber selbstbeschreibende Informationen
      – Ablage als Manifest-Datei
      – Vertrag des Bundles mit dem OSGi Framework




OSGi Konzepte                                           Seite 18 / 38
Bundle-Selbstbeschreibung

     Bundle-beschreibende Informationen sind beispielsweise

       – Name, Identifikation, Version
       – Angabe der zu veröffentlichen Klassen/Ressourcen
                • Auf Ebene von java-Packages
                • Versioniert
       – Angabe von zu importierenden Klassen/Ressourcen
                • Auf Ebene von java-Packages
                • Versioniert
       – Angabe von zu importierenden Bundles
                • Versioniert




OSGi Konzepte                                                 Seite 19 / 38
Beispiel einer Manifest-Datei
Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: HelloWorld
Bundle-Version: 1.0
Bundle-SymbolicName:sample.HelloWorld
Bundle-ClassPath: .,
    target/dependency/junit-3.8.1.jar
Bundle-Activator:sample.internal.Activator
Export-Package:sample
Import-Package: common.commons,sample;
       version="[3.0.0, 4.0.0)",
   org.osgi.framework
Require-Bundle:com.sample.chess,
   com.sample.chess.core;version="2.0"

OSGi Konzepte                                Seite 20 / 38
Sichtbarkeiten von Ressourcen

     Die Modularisierung bedingt Sichtbarkeiten von Ressourcen
      – Private Ressourcen müssen vor anderen Bundles versteckt
         werden
      – Öffentliche Ressourcen müssen anderen Bundles zugänglich
         gemacht werden (Export)
      – Angeforderte Ressourcen müssen bereitgestellt werden (Import)

     OSGi löst Sichtbarkeiten über eine komplexe Classloader-Hierarchie
      – Jedes Bundle hat seinen eigenen Classloader
      – Ein Bundle wird durch die von ihm angeforderten Bundles
        (transitiv) erweitert




OSGi Konzepte                                                      Seite 21 / 38
Sichtbarkeiten von Ressourcen


     Bundles können in unterschiedlichen Versionen koexistieren

     Die Konsistenz eines Bundles beeinflusst den Zustand anderer
     Bundles
      – Export / Import




OSGi Konzepte                                                     Seite 22 / 38
OSGi-Architektur – Life Cycle




OSGi Konzepte                   Seite 23 / 38
Life Cycle Layer - Dynamik von Bundles

     Offene Fragen

       – Ist in OSGi die Abhängigkeit zwischen Bundles statisch?   NEIN
       – Welche Folgen hat die De-/ Installation eines Bundles ?
                • Imports sind womöglich nicht mehr aufzulösen


       – Wo wird denn die eigentliche Logik angestoßen?
                • Wo geht eine OSGi-Anwendung los?

     Mit diesen Fragen beschäftigt sich der Life Cycle Layer




OSGi Konzepte                                                       Seite 24 / 38
Laufzeitzustände von Bundles
                                    Start des Bundles

      Importe korrekt aufgelöst




                                  Stop des Bundles
OSGi Konzepte                                           Seite 25 / 38
Dynamik von Bundles

     OSGi Framework
       – Ist für die Zustände der Bundles verantwortlich
                • Genauer gesagt : management agent
       – Prüft die Zustände dynamisch
                • Selbstheilung des OSGi Frameworks


     Bundle kann spezifischen Code ausführen
      – Während der Aktivierungsphase (start)
      – Während der Deaktivierungsphase (stop)
      – Methoden des Bundles werden durch OSGi
        Framework gerufen
      – Methoden Bundle Activator bereitgestellt


OSGi Konzepte                                              Seite 26 / 38
OSGi-Architektur - Services




OSGi Konzepte                 Seite 27 / 38
OSGi Services
     Services
      – Sind Java Objekte
      – Bieten Dienste an, die für andere Bundles interessant sein könnten
      – Werden i.d.R. beim Start eines Bundles erzeugt

     OSGi bietet eine zentrale Service-Registratur an, bei der
      – sich Services eintragen können
                • Mit Kriterien, unter denen sie gefunden werden
                • Qualitative Beschreibung des Service
       – Servicenutzer suchen nach bestimmten Kriterien Services

     Keine direkte Beziehung zwischen Serviceanbieter und –Nutzer
      – Implementierungen können wechseln
      – Mehrere Implementierungen können pro Service angeboten werden
OSGi Konzepte                                                        Seite 28 / 38
OSGi Service


                                                    Virt ual Machine Grenze


                           Service Regist rierung


                          Service Beschreibungen
    veröffent lichen                                    finden




                Service                             Service Benut zer
                                 benut zen



OSGi Konzepte                                                      Seite 29 / 38
Dynamik von Services

     Anbieter können ihre Services beliebig an- und abmelden
      – Situation für den Servicenutzer kann sich jederzeit ändern
      – Dynamik von Services

     OSGi bietet Bordmittel auf unterschiedlichen Leveln an
      – low level: Nutzung von Verwaltungsmechanismen des Frameworks
                • Sehr komplex und sehr aufwendig
       – medium level: Sogenannte Service Tracker, die im Hintergrund
         die Situation für den Nutzer aktuell halten
                • Komplex und aufwendig
       – high level: (Service Component) Modelle, die diese Dynamik
         im Hintergrund abhandeln
                • Spring DM, OSGi Declarative Services, iPOJO ….
                • Neue Programmiermodelle
OSGi Konzepte                                                         Seite 30 / 38
Agenda

     Modularisierung

     OSGi – ein Einstieg

     OSGi-Architektur
       – Modularisierung
       – Dynamik von Bundles
       – Servicekonzept

     OSGi Compendium Services

     Zusammenfassung

OSGi Konzepte                   Seite 31 / 38
OSGi Compendium Services

     OSGi standardisiert eine Reihe von Querschnittservices
      – Logging
      – Eventhandling
      – Integration von Fremdanwendungen
      – Monitoring
      – Konfiguration
      – ...
     OSGi Compendium Services
      – Sind (i.d.R.) normale Services
      – Setzen auf OSGi auf

     Jede standardkonforme Implementierung läuft auf jedem
     OSGi Framework
OSGi Konzepte                                                 Seite 32 / 38
Agenda

     Modularisierung

     OSGi – ein Einstieg

     OSGi-Architektur
      – Modularisierung
      – Dynamik von Bundles
      – Servicekonzept

     OSGi Compendium Services

     Zusammenfassung


OSGi Konzepte                   Seite 33 / 38
Architektur reloaded
     Modularisierung
      – Definiert Vertrag zwischen Bundles und ihrer Umgebung
      – Definiert, wie dieser Vertrag umzusetzen ist
      – Definiert, welche Aufgaben das OSGi Framework zu übernehmen hat

     Life Cycle Layer
      – Definiert Zustände von Bundles und deren Übergängen
      – Bildet Modularisierung auf Zustände ab
      – Bietet den Einstiegspunkt zu eigener Programmlogik

     Service Layer
      – Definiert das Servicekonzept von OSGi
      – Beschreibt die Dynamik von Services und deren Konsequenzen
      – Beschreibt den Umgang mit dynamischen Services
OSGi Konzepte                                                   Seite 34 / 38
OSGi Rekapitulation

     Modularisierung
      – Statische Sicht auf die Auslieferungseinheiten
      – Reduziert Abhängigkeiten der Module
                • Ausufernde Abhängigkeiten sind auschlaggebend für ‚rotten design‘


     Life Cycle Layer
      – Module können zur Laufzeit de-/installiert werden
      – Dynamische Funktionalität
      – Selbstheilung des Systems

     Services
      – Korrespondenz der Funktionalität via Service-Registry
      – SOA light

OSGi Konzepte                                                                    Seite 35 / 38
Zusammenfassung

     Modularisierung und Komponentenmodelle

     Ansatz von OSGi

     Architektur von OSGi
       – Modularisierung
       – Dynamik von Bundles
       – Servicekonzept




OSGi Konzepte                                 Seite 36 / 38
Referenzen

[CBSD]
   http://en.wikibooks.org/wiki/Computer_programming/Component_based_
   software_development




OSGi Konzepte                                                  Seite 37 / 38
Weiterführende Literatur

     Gerd Wütherich, Nils Hartmann, Bernd Kolb , Matthias Lübken
     Die OSGI Service Platform - Eine Einführung mit Eclipse Equinox ,
     dpunkt Verlag; Auflage: 1 (18. April 2008) ISBN-13: 978-3898644570

     OSGi In Practice von Neil Bartlett http://neilbartlett.name/blog/osgibook/




OSGi Konzepte                                                            Seite 38 / 38
Fragen?
www.iks-gmbh.com

Más contenido relacionado

Similar a OSGi: Grundlagen und Konzepte

Vorstellung OSGi Users'-Forum Germany
Vorstellung OSGi Users'-Forum GermanyVorstellung OSGi Users'-Forum Germany
Vorstellung OSGi Users'-Forum GermanyKai Hackbarth
 
2010, susan schwarze
2010, susan schwarze2010, susan schwarze
2010, susan schwarzeOSGi Alliance
 
Apps for the Enterprise - Ein einheitliches Modulsystem für verteilte Unterne...
Apps for the Enterprise - Ein einheitliches Modulsystem für verteilte Unterne...Apps for the Enterprise - Ein einheitliches Modulsystem für verteilte Unterne...
Apps for the Enterprise - Ein einheitliches Modulsystem für verteilte Unterne...Andreas Weidinger
 
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013goobi_org
 
OSGi und Spring MVC - inovex BrownBag
OSGi und Spring MVC - inovex BrownBag OSGi und Spring MVC - inovex BrownBag
OSGi und Spring MVC - inovex BrownBag inovex GmbH
 
Modulare Enterprise Systeme - Eine Einführung
Modulare Enterprise Systeme - Eine EinführungModulare Enterprise Systeme - Eine Einführung
Modulare Enterprise Systeme - Eine EinführungAndreas Weidinger
 
EnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heuteEnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heutePhilipp Burgmer
 
Ü̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und GradleÜ̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und Gradleadesso AG
 
Morphia, Spring Data & Co
Morphia, Spring Data & CoMorphia, Spring Data & Co
Morphia, Spring Data & CoTobias Trelle
 
Li So G Osci
Li So G OsciLi So G Osci
Li So G OsciCloudcamp
 
Scala - OSGi Bundles from Outer (Java) Space
Scala - OSGi Bundles from Outer (Java) SpaceScala - OSGi Bundles from Outer (Java) Space
Scala - OSGi Bundles from Outer (Java) SpaceOliver Braun
 
OGD Cockpit Barcamp Bochum Krabina 2022.pdf
OGD Cockpit Barcamp Bochum Krabina 2022.pdfOGD Cockpit Barcamp Bochum Krabina 2022.pdf
OGD Cockpit Barcamp Bochum Krabina 2022.pdfBernhard Krabina
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit MavenStefan Scheidt
 
Eclipse Magazin 16 - Die Stärke der Drei
Eclipse Magazin 16 - Die Stärke der DreiEclipse Magazin 16 - Die Stärke der Drei
Eclipse Magazin 16 - Die Stärke der DreiHeiko Seeberger
 
Markthürden reduzieren- der Beitrag von Standardisierungsorganisationen
Markthürden reduzieren- der Beitrag von StandardisierungsorganisationenMarkthürden reduzieren- der Beitrag von Standardisierungsorganisationen
Markthürden reduzieren- der Beitrag von StandardisierungsorganisationenOSGi Alliance
 
Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)
Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)
Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)Christian Janz
 
CCD 2012: Wissensmanagement @MPS - Sören Krasel, Daimler AG
CCD 2012: Wissensmanagement @MPS - Sören Krasel, Daimler AGCCD 2012: Wissensmanagement @MPS - Sören Krasel, Daimler AG
CCD 2012: Wissensmanagement @MPS - Sören Krasel, Daimler AGCommunardo GmbH
 

Similar a OSGi: Grundlagen und Konzepte (20)

Vorstellung OSGi Users'-Forum Germany
Vorstellung OSGi Users'-Forum GermanyVorstellung OSGi Users'-Forum Germany
Vorstellung OSGi Users'-Forum Germany
 
2010, susan schwarze
2010, susan schwarze2010, susan schwarze
2010, susan schwarze
 
Apps for the Enterprise - Ein einheitliches Modulsystem für verteilte Unterne...
Apps for the Enterprise - Ein einheitliches Modulsystem für verteilte Unterne...Apps for the Enterprise - Ein einheitliches Modulsystem für verteilte Unterne...
Apps for the Enterprise - Ein einheitliches Modulsystem für verteilte Unterne...
 
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013
 
OSGi und Spring MVC - inovex BrownBag
OSGi und Spring MVC - inovex BrownBag OSGi und Spring MVC - inovex BrownBag
OSGi und Spring MVC - inovex BrownBag
 
Modulare Enterprise Systeme - Eine Einführung
Modulare Enterprise Systeme - Eine EinführungModulare Enterprise Systeme - Eine Einführung
Modulare Enterprise Systeme - Eine Einführung
 
Webpack
WebpackWebpack
Webpack
 
EnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heuteEnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heute
 
Ü̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und GradleÜ̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und Gradle
 
Morphia, Spring Data & Co
Morphia, Spring Data & CoMorphia, Spring Data & Co
Morphia, Spring Data & Co
 
Li So G Osci
Li So G OsciLi So G Osci
Li So G Osci
 
Scala - OSGi Bundles from Outer (Java) Space
Scala - OSGi Bundles from Outer (Java) SpaceScala - OSGi Bundles from Outer (Java) Space
Scala - OSGi Bundles from Outer (Java) Space
 
OSGi
OSGiOSGi
OSGi
 
Ogc
OgcOgc
Ogc
 
OGD Cockpit Barcamp Bochum Krabina 2022.pdf
OGD Cockpit Barcamp Bochum Krabina 2022.pdfOGD Cockpit Barcamp Bochum Krabina 2022.pdf
OGD Cockpit Barcamp Bochum Krabina 2022.pdf
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit Maven
 
Eclipse Magazin 16 - Die Stärke der Drei
Eclipse Magazin 16 - Die Stärke der DreiEclipse Magazin 16 - Die Stärke der Drei
Eclipse Magazin 16 - Die Stärke der Drei
 
Markthürden reduzieren- der Beitrag von Standardisierungsorganisationen
Markthürden reduzieren- der Beitrag von StandardisierungsorganisationenMarkthürden reduzieren- der Beitrag von Standardisierungsorganisationen
Markthürden reduzieren- der Beitrag von Standardisierungsorganisationen
 
Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)
Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)
Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)
 
CCD 2012: Wissensmanagement @MPS - Sören Krasel, Daimler AG
CCD 2012: Wissensmanagement @MPS - Sören Krasel, Daimler AGCCD 2012: Wissensmanagement @MPS - Sören Krasel, Daimler AG
CCD 2012: Wissensmanagement @MPS - Sören Krasel, Daimler AG
 

Más de IKS Gesellschaft für Informations- und Kommunikationssysteme mbH

Más de IKS Gesellschaft für Informations- und Kommunikationssysteme mbH (20)

Es wird Zeit KI zu nutzen - Wie es mit Azure KI Services und .NET MAUI gelingt
Es wird Zeit KI zu nutzen - Wie es mit Azure KI Services und .NET MAUI gelingtEs wird Zeit KI zu nutzen - Wie es mit Azure KI Services und .NET MAUI gelingt
Es wird Zeit KI zu nutzen - Wie es mit Azure KI Services und .NET MAUI gelingt
 
Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...
Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...
Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...
 
Thementag 2023 04 Lindern, heilen oder gar fit machen.pdf
Thementag 2023 04 Lindern, heilen oder gar fit machen.pdfThementag 2023 04 Lindern, heilen oder gar fit machen.pdf
Thementag 2023 04 Lindern, heilen oder gar fit machen.pdf
 
Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...
Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...
Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...
 
Thementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdf
Thementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdfThementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdf
Thementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdf
 
Thementag 2023 03 Einführung in die Softwaremodernisierung.pdf
Thementag 2023 03 Einführung in die Softwaremodernisierung.pdfThementag 2023 03 Einführung in die Softwaremodernisierung.pdf
Thementag 2023 03 Einführung in die Softwaremodernisierung.pdf
 
Thementag 2022 01 Verpassen Sie nicht den Anschluss.pdf
Thementag 2022 01 Verpassen Sie nicht den Anschluss.pdfThementag 2022 01 Verpassen Sie nicht den Anschluss.pdf
Thementag 2022 01 Verpassen Sie nicht den Anschluss.pdf
 
Thementag 2022 04 ML auf die Schiene gebracht.pdf
Thementag 2022 04 ML auf die Schiene gebracht.pdfThementag 2022 04 ML auf die Schiene gebracht.pdf
Thementag 2022 04 ML auf die Schiene gebracht.pdf
 
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdfThementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
 
Thementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdf
Thementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdfThementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdf
Thementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdf
 
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine LearningDaten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
 
Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...
Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...
Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...
 
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
 
Big Data und Machine Learning - Wer braucht das schon!?
Big Data und Machine Learning - Wer braucht das schon!?Big Data und Machine Learning - Wer braucht das schon!?
Big Data und Machine Learning - Wer braucht das schon!?
 
Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...
Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...
Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...
 
Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...
Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...
Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...
 
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine LearningDaten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
 
Big Data und Machine Learning - Wer braucht das schon!?
Big Data und Machine Learning - Wer braucht das schon!?Big Data und Machine Learning - Wer braucht das schon!?
Big Data und Machine Learning - Wer braucht das schon!?
 
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine LearningDaten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
 
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
 

OSGi: Grundlagen und Konzepte

  • 1. OSGi Konzepte Thementag OSGi 03.11.2009 Autor: Christoph Schmidt-Casdorff
  • 2. Agenda Modularisierung OSGi – ein Einstieg OSGi-Architektur – Modularisierung – Dynamik von Bundles – Servicekonzept Zusammenfassung OSGi Konzepte Seite 3 / 38
  • 3. Agenda Modularisierung OSGi – ein Einstieg OSGi-Architektur – Modularisierung – Dynamik von Bundles – Servicekonzept Zusammenfassung OSGi Konzepte Seite 4 / 38
  • 5. Modularität – „Teile und Herrsche“ Prinzip „Teile und Herrsche“ Bausteine eines Softwaresystems sind Softwareeinheiten (Module), die – einen möglichst großen Grad an Isolierung/Unabhängigkeit zum Systemkontext besitzen – definierte Abgrenzungen zum Systemkontext und anderen Modulen besitzen Kann ein Modul in Java formuliert werden? OSGi Konzepte Seite 6 / 38
  • 6. Modularität in Java Sichtbarkeit von Klassen Package – Einzige Strukturierung jenseits der Klassen – Hat Sichtbarkeitsregeln – Sichtbarkeiten sind nicht hierarchisch • Sichtbarkeiten sind nur innerhalb eines Packages eingeschränkt JAR – Ist eine auslieferbare Ansammlung von Klassen/Ressourcen – Keine Sichtbarkeiten auf dieser Ebene – Wäre Kandidat für Modul Java bietet keine Unterstützung zur Modularisierung – Es muss etwas getan werden OSGi Konzepte Seite 7 / 38
  • 7. Module Module – Sind Softwareeinheiten (physisch) – Können Abhängigkeiten untereinander definieren • Veröffentlichung für andere Module • Import von Veröffentlichung anderer Module – Können unabhängig voneinander de-/installiert werden Ein Modul kann aktiv bestimmen, welche Teile von ihm privat und welche öffentlich sind OSGi Konzepte Seite 8 / 38
  • 8. Komponentenmodelle Komponentenmodelle sind gelebte Modularität – Liefern ein(e) Verfahren / Modell / Spezifikation zur Modularisierung Komponentenmodelle definieren Verträge, – wie eine Komponente aufgebaut ist – wie Abhängigkeiten zwischen Komponenten beschrieben werden • welche Klassen exportiert / importiert werden – welche Anforderungen eine Komponente an den Systemkontext stellen kann Begriffe Modul und Komponente verwenden wir synonym – Module zielen mehr auf physische Struktur ab – Komponenten sind allgemeiner (auch auf logische Strukturen) OSGi Konzepte Seite 9 / 38
  • 9. Komponentenframework Komponentenframework – Laufzeitumgebung für Module – Implementierung des Vertragwerks Dirigent im Orchester der Module – De-/Installation von Modulen – Auflösung der Abhängigkeit zwischen den Modulen – Integration der Module in das Gesamtsystem OSGi Konzepte Seite 10 / 38
  • 10. Warum Komponenten? Komponenten – Komponenten sind ‚missing link‘ zwischen Architektur und OO-Design – Wichtige Strukturierungsebene für den Übergang Management von Abhängigkeiten – Unnötige Abhängigkeiten • Erhöhen Komplexität der Anwendung • Sind Haupttreiber von ‚rotten design‘ Isolierte Entwicklung – Anwendung ist eine Zusammenstellung von Komponenten – Geschieht erst auf Integrationsplattform – Idee: Anwendungsentwicklung als Baukasten OSGi Konzepte Seite 11 / 38
  • 11. Agenda Modularisierung OSGi – ein Einstieg OSGi-Architektur – Modularisierung – Dynamik von Bundles – Servicekonzept OSGi Compendium Services Zusammenfassung OSGi Konzepte Seite 12 / 38
  • 12. Modularisierung und Java Java besitzt keine Unterstützung zur Modularisierung Bietet aber technologische Vorrausetzungen für Modularisierung – Classloader-Konzept OSGi Konzepte Seite 13 / 38
  • 13. OSGi OSGi – Modularisierung mittels Java OSGi Konzepte Seite 14 / 38
  • 14. OSGi – historischer Abriss Open Gateway Service initiative OSGi ist eine Spezifikation – Durch OSGi Alliance organisiert – Gegründet 1999 Wurzeln von OSGi liegen in Anwendungen für Mobile Endgeräte Mittlerweile engagiert sich OSGi im Bereich der Java Middleware – Aktuelle Version der Spezifikation ist 4.1 OSGi Konzepte Seite 15 / 38
  • 15. Agenda Modularisierung OSGi – ein Einstieg OSGi-Architektur – Modularisierung – Dynamik von Bundles – Servicekonzept OSGi Compendium Services Zusammenfassung OSGi Konzepte Seite 16 / 38
  • 16. OSGi-Architektur - Modularisierung OSGi Konzepte Seite 17 / 38
  • 17. OSGi-Architektur - Modularisierung Module heißen in OSGi Bundle Bundle sind normale jar-Dateien Enthalten aber selbstbeschreibende Informationen – Ablage als Manifest-Datei – Vertrag des Bundles mit dem OSGi Framework OSGi Konzepte Seite 18 / 38
  • 18. Bundle-Selbstbeschreibung Bundle-beschreibende Informationen sind beispielsweise – Name, Identifikation, Version – Angabe der zu veröffentlichen Klassen/Ressourcen • Auf Ebene von java-Packages • Versioniert – Angabe von zu importierenden Klassen/Ressourcen • Auf Ebene von java-Packages • Versioniert – Angabe von zu importierenden Bundles • Versioniert OSGi Konzepte Seite 19 / 38
  • 19. Beispiel einer Manifest-Datei Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: HelloWorld Bundle-Version: 1.0 Bundle-SymbolicName:sample.HelloWorld Bundle-ClassPath: ., target/dependency/junit-3.8.1.jar Bundle-Activator:sample.internal.Activator Export-Package:sample Import-Package: common.commons,sample; version="[3.0.0, 4.0.0)", org.osgi.framework Require-Bundle:com.sample.chess, com.sample.chess.core;version="2.0" OSGi Konzepte Seite 20 / 38
  • 20. Sichtbarkeiten von Ressourcen Die Modularisierung bedingt Sichtbarkeiten von Ressourcen – Private Ressourcen müssen vor anderen Bundles versteckt werden – Öffentliche Ressourcen müssen anderen Bundles zugänglich gemacht werden (Export) – Angeforderte Ressourcen müssen bereitgestellt werden (Import) OSGi löst Sichtbarkeiten über eine komplexe Classloader-Hierarchie – Jedes Bundle hat seinen eigenen Classloader – Ein Bundle wird durch die von ihm angeforderten Bundles (transitiv) erweitert OSGi Konzepte Seite 21 / 38
  • 21. Sichtbarkeiten von Ressourcen Bundles können in unterschiedlichen Versionen koexistieren Die Konsistenz eines Bundles beeinflusst den Zustand anderer Bundles – Export / Import OSGi Konzepte Seite 22 / 38
  • 22. OSGi-Architektur – Life Cycle OSGi Konzepte Seite 23 / 38
  • 23. Life Cycle Layer - Dynamik von Bundles Offene Fragen – Ist in OSGi die Abhängigkeit zwischen Bundles statisch? NEIN – Welche Folgen hat die De-/ Installation eines Bundles ? • Imports sind womöglich nicht mehr aufzulösen – Wo wird denn die eigentliche Logik angestoßen? • Wo geht eine OSGi-Anwendung los? Mit diesen Fragen beschäftigt sich der Life Cycle Layer OSGi Konzepte Seite 24 / 38
  • 24. Laufzeitzustände von Bundles Start des Bundles Importe korrekt aufgelöst Stop des Bundles OSGi Konzepte Seite 25 / 38
  • 25. Dynamik von Bundles OSGi Framework – Ist für die Zustände der Bundles verantwortlich • Genauer gesagt : management agent – Prüft die Zustände dynamisch • Selbstheilung des OSGi Frameworks Bundle kann spezifischen Code ausführen – Während der Aktivierungsphase (start) – Während der Deaktivierungsphase (stop) – Methoden des Bundles werden durch OSGi Framework gerufen – Methoden Bundle Activator bereitgestellt OSGi Konzepte Seite 26 / 38
  • 26. OSGi-Architektur - Services OSGi Konzepte Seite 27 / 38
  • 27. OSGi Services Services – Sind Java Objekte – Bieten Dienste an, die für andere Bundles interessant sein könnten – Werden i.d.R. beim Start eines Bundles erzeugt OSGi bietet eine zentrale Service-Registratur an, bei der – sich Services eintragen können • Mit Kriterien, unter denen sie gefunden werden • Qualitative Beschreibung des Service – Servicenutzer suchen nach bestimmten Kriterien Services Keine direkte Beziehung zwischen Serviceanbieter und –Nutzer – Implementierungen können wechseln – Mehrere Implementierungen können pro Service angeboten werden OSGi Konzepte Seite 28 / 38
  • 28. OSGi Service Virt ual Machine Grenze Service Regist rierung Service Beschreibungen veröffent lichen finden Service Service Benut zer benut zen OSGi Konzepte Seite 29 / 38
  • 29. Dynamik von Services Anbieter können ihre Services beliebig an- und abmelden – Situation für den Servicenutzer kann sich jederzeit ändern – Dynamik von Services OSGi bietet Bordmittel auf unterschiedlichen Leveln an – low level: Nutzung von Verwaltungsmechanismen des Frameworks • Sehr komplex und sehr aufwendig – medium level: Sogenannte Service Tracker, die im Hintergrund die Situation für den Nutzer aktuell halten • Komplex und aufwendig – high level: (Service Component) Modelle, die diese Dynamik im Hintergrund abhandeln • Spring DM, OSGi Declarative Services, iPOJO …. • Neue Programmiermodelle OSGi Konzepte Seite 30 / 38
  • 30. Agenda Modularisierung OSGi – ein Einstieg OSGi-Architektur – Modularisierung – Dynamik von Bundles – Servicekonzept OSGi Compendium Services Zusammenfassung OSGi Konzepte Seite 31 / 38
  • 31. OSGi Compendium Services OSGi standardisiert eine Reihe von Querschnittservices – Logging – Eventhandling – Integration von Fremdanwendungen – Monitoring – Konfiguration – ... OSGi Compendium Services – Sind (i.d.R.) normale Services – Setzen auf OSGi auf Jede standardkonforme Implementierung läuft auf jedem OSGi Framework OSGi Konzepte Seite 32 / 38
  • 32. Agenda Modularisierung OSGi – ein Einstieg OSGi-Architektur – Modularisierung – Dynamik von Bundles – Servicekonzept OSGi Compendium Services Zusammenfassung OSGi Konzepte Seite 33 / 38
  • 33. Architektur reloaded Modularisierung – Definiert Vertrag zwischen Bundles und ihrer Umgebung – Definiert, wie dieser Vertrag umzusetzen ist – Definiert, welche Aufgaben das OSGi Framework zu übernehmen hat Life Cycle Layer – Definiert Zustände von Bundles und deren Übergängen – Bildet Modularisierung auf Zustände ab – Bietet den Einstiegspunkt zu eigener Programmlogik Service Layer – Definiert das Servicekonzept von OSGi – Beschreibt die Dynamik von Services und deren Konsequenzen – Beschreibt den Umgang mit dynamischen Services OSGi Konzepte Seite 34 / 38
  • 34. OSGi Rekapitulation Modularisierung – Statische Sicht auf die Auslieferungseinheiten – Reduziert Abhängigkeiten der Module • Ausufernde Abhängigkeiten sind auschlaggebend für ‚rotten design‘ Life Cycle Layer – Module können zur Laufzeit de-/installiert werden – Dynamische Funktionalität – Selbstheilung des Systems Services – Korrespondenz der Funktionalität via Service-Registry – SOA light OSGi Konzepte Seite 35 / 38
  • 35. Zusammenfassung Modularisierung und Komponentenmodelle Ansatz von OSGi Architektur von OSGi – Modularisierung – Dynamik von Bundles – Servicekonzept OSGi Konzepte Seite 36 / 38
  • 36. Referenzen [CBSD] http://en.wikibooks.org/wiki/Computer_programming/Component_based_ software_development OSGi Konzepte Seite 37 / 38
  • 37. Weiterführende Literatur Gerd Wütherich, Nils Hartmann, Bernd Kolb , Matthias Lübken Die OSGI Service Platform - Eine Einführung mit Eclipse Equinox , dpunkt Verlag; Auflage: 1 (18. April 2008) ISBN-13: 978-3898644570 OSGi In Practice von Neil Bartlett http://neilbartlett.name/blog/osgibook/ OSGi Konzepte Seite 38 / 38