Top Banner
Thementag OSGi 03.11.2009 OSGi Konzepte Autor: Christoph Schmidt-Casdorff
39

OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Aug 14, 2019

Download

Documents

dinhcong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Thementag OSGi

03.11.2009

OSGi Konzepte

Autor:

Christoph Schmidt-Casdorff

Page 2: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 3 / 38OSGi Konzepte

Agenda

Modularisierung

OSGi – ein Einstieg

OSGi-Architektur

– Modularisierung

– Dynamik von Bundles

– Servicekonzept

Zusammenfassung

Page 3: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 4 / 38OSGi Konzepte

Agenda

Modularisierung

OSGi – ein Einstieg

OSGi-Architektur

– Modularisierung

– Dynamik von Bundles

– Servicekonzept

Zusammenfassung

Page 5: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 6 / 38OSGi Konzepte

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?

Page 6: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 7 / 38OSGi Konzepte

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

Page 7: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 8 / 38OSGi Konzepte

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

Page 8: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 9 / 38OSGi Konzepte

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)

Page 9: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 10 / 38OSGi Konzepte

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

Page 10: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 11 / 38OSGi Konzepte

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

Page 11: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 12 / 38OSGi Konzepte

Agenda

Modularisierung

OSGi – ein Einstieg

OSGi-Architektur

– Modularisierung

– Dynamik von Bundles

– Servicekonzept

OSGi Compendium Services

Zusammenfassung

Page 12: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 13 / 38OSGi Konzepte

Modularisierung und Java

Java besitzt keine Unterstützung zur Modularisierung

Bietet aber technologische Vorrausetzungen für Modularisierung

– Classloader-Konzept

Page 13: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 14 / 38OSGi Konzepte

OSGi

OSGi

– Modularisierung mittels Java

Page 14: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 15 / 38OSGi Konzepte

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

Page 15: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 16 / 38OSGi Konzepte

Agenda

Modularisierung

OSGi – ein Einstieg

OSGi-Architektur

– Modularisierung

– Dynamik von Bundles

– Servicekonzept

OSGi Compendium Services

Zusammenfassung

Page 16: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 17 / 38OSGi Konzepte

OSGi-Architektur - Modularisierung

Page 17: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 18 / 38OSGi Konzepte

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

Page 18: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 19 / 38OSGi Konzepte

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

Page 19: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 20 / 38OSGi Konzepte

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"

Page 20: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 21 / 38OSGi Konzepte

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

Page 21: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 22 / 38OSGi Konzepte

Sichtbarkeiten von Ressourcen

Bundles können in unterschiedlichen Versionen koexistieren

Die Konsistenz eines Bundles beeinflusst den Zustand anderer

Bundles

– Export / Import

Page 22: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 23 / 38OSGi Konzepte

OSGi-Architektur – Life Cycle

Page 23: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 24 / 38OSGi Konzepte

Life Cycle Layer - Dynamik von Bundles

Offene Fragen

– Ist in OSGi die Abhängigkeit zwischen Bundles statisch?

– 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

NEIN

Page 24: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 25 / 38OSGi Konzepte

Laufzeitzustände von Bundles

Importe korrekt aufgelöst

Start des Bundles

Stop des Bundles

Page 25: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 26 / 38OSGi Konzepte

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

Page 26: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 27 / 38OSGi Konzepte

OSGi-Architektur - Services

Page 27: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 28 / 38OSGi Konzepte

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

Page 28: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 29 / 38OSGi Konzepte

OSGi Service

Service Regist rierung

Service Service Benutzer

findenveröffent lichen

benutzen

Service Beschreibungen

Virtual Machine Grenze

Page 29: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 30 / 38OSGi Konzepte

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

Page 30: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 31 / 38OSGi Konzepte

Agenda

Modularisierung

OSGi – ein Einstieg

OSGi-Architektur

– Modularisierung

– Dynamik von Bundles

– Servicekonzept

OSGi Compendium Services

Zusammenfassung

Page 31: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 32 / 38OSGi Konzepte

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

Page 32: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 33 / 38OSGi Konzepte

Agenda

Modularisierung

OSGi – ein Einstieg

OSGi-Architektur

– Modularisierung

– Dynamik von Bundles

– Servicekonzept

OSGi Compendium Services

Zusammenfassung

Page 33: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 34 / 38OSGi Konzepte

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

Page 34: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 35 / 38OSGi Konzepte

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

Page 35: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 36 / 38OSGi Konzepte

Zusammenfassung

Modularisierung und Komponentenmodelle

Ansatz von OSGi

Architektur von OSGi

– Modularisierung

– Dynamik von Bundles

– Servicekonzept

Page 37: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Seite 38 / 38OSGi Konzepte

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/

Page 38: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

Fragen?

Page 39: OSGi Konzepte - IKS GmbH · OSGi Konzepte Seite 7 / 38 Modularität in Java Sichtbarkeit von Klassen Package –Einzige Strukturierung jenseits der Klassen –Hat Sichtbarkeitsregeln

www.iks-gmbh.com