- OSGi
-
OSGi Service Platform Entwickler OSGi Alliance Aktuelle Version 4.3
(April 2011)Betriebssystem Java Kategorie Standard Lizenz OSGi Specification License www.osgi.org Die OSGi Alliance (früher Open Services Gateway initiative) spezifiziert eine hardwareunabhängige dynamische Softwareplattform, die es erleichtert, Anwendungen und ihre Dienste per Komponentenmodell („Bundle“/„Service“) zu modularisieren und zu verwalten („Service Registry“). Die OSGi-Plattform setzt eine Java Virtual Machine (JVM) voraus und bietet darauf aufbauend das OSGi-Programmiergerüst.
Von OSGi existieren inzwischen verschiedene Generationen, die allesamt von der OSGi Alliance, einem Industriekonsortium, spezifiziert wurden. Die Allianz besteht aus Großunternehmen wie IBM, Deutsche Telekom, NTT und Oracle, aber auch aus vielen kleineren Unternehmen, u. A. aus dem Open Source Software-Bereich. Der gemeinsam definierte OSGi-Standard steht daher allen Interessenten offen und es existiert gleichfalls ein entsprechend liberales Patent-Gesetzeswerk.
Die OSGi Alliance selbst spezifiziert hierbei lediglich die Programmierschnittstellen (APIs) und Testfälle für OSGi-Implementierungen von dritter Seite und stellt im Rahmen dessen auch eine Referenzimplementierung zur Verfügung. Diese ist nicht für den Produktiveinsatz gedacht, sondern dient lediglich als Vorlage für kommerzielle und OSS-Alternativen.
Die im Ergebnis herstellerunabhängige, generische OSGi-Softwareplattform kann zur Steuerung oder Vernetzung aller Arten von Geräten eingesetzt werden – z. B. im Automotive-Bereich, in Handys, in der Gebäudeautomatisierung, zur intelligenten Fernsteuerung von Hausgeräten oder im Bereich „Assisted Living“. Besonders im Heimbereich spielt das Gateway-Prinzip eine große Rolle, d. h. hier wird häufig nicht unmittelbar ein OSGi-Programmiergerüst auf den jeweiligen Geräten installiert, sondern auf sogenannten Residential Gateways – sie können verstanden werden als eingebettetes System, das (vergleichbar einem DSL-Router), einzelnen Geräten den Zugriff auf bestimmte Dienste vermittelt oder von außen den abstrakten Zugriff auf bestimmte Geräte ermöglicht. Anders kommen OSGi-Programmiergerüste in Autos und Mobiltelefonen zum Einsatz – hier laufen sie ohne zusätzliches Gateway direkt auf der leistungsfähigen eingebetteten Hardware.
Die Spezifikation der OSGi Service Platform definiert eine Java-basierte Laufzeitumgebung oberhalb der JVM und deren Basisdienste. Ein bedeutendes Merkmal der Service-Plattform ist die Möglichkeit, dynamisch und kontrolliert Service-Anwendungen (sogenannte Bundles) zur Laufzeit einzuspielen und – vor allem – auch zu aktualisieren und wieder zu entfernen. Das Modell der OSGi-Service-Plattform gibt damit die Möglichkeit, verschiedene weitgehend unabhängige und modulare Anwendungen parallel in derselben virtuellen Maschine laufen zu lassen und diese während des gesamten Lebenszyklus der Anwendung (fern-) zu administrieren und zu aktualisieren. Dabei werden Abhängigkeiten zwischen Bundles automatisch aufgelöst und ein intelligentes Versionsmanagement steht zur Verfügung.
Die einzelnen Implementierungen der jeweiligen Hersteller bestehen meist aus dem OSGi-Programmiergerüst und idealerweise einer großen Anzahl von Service-Bundles (Packages), die aufgrund der modularen Architektur ebenfalls dynamisch hinzugefügt werden können.
Inhaltsverzeichnis
Definition: OSGi-Framework
Ein OSGi-Framework ist eine offene, modulare und skalierbare „Service Delivery Platform“ auf Java-Basis. Es handelt sich um ein Komponentenmodell mit Komponenten-Registry (= „Service-Registry“). Der „Service“-Begriff, der im OSGi-Kontext oft fällt, geht dabei kaum über den allgemeinen „Schnittstellen“-Begriff einer Komponente hinaus.
Während Service-orientierte Architekturen, als Paradigma zur unternehmensweiten Strukturierung von Systemlandschaften, Ortstransparenz und Zugriffstransparenz erfordern, sind die Möglichkeiten zur Programmierung verteilter Systeme nicht integraler Bestandteil des OSGi-Programmiergerüsts, welches seinen Ursprung in eingebetteten Systemen hat. Im OSGi-Programmiergerüst steht die Komponente (= „Bundle“) im Vordergrund, die ihre Schnittstelle (= „Service“) per Registry (= „Service-Registry“) JVM-lokal veröffentlicht und das Re/Deployment per Komponenten-Lebenszyklus unterstützt. Das OSGi-Programmiergerüst als zugrundeliegendes Komponentenmodell einer SOA in einer Java-Umgebung zu verwenden ist trotzdem letztlich möglich.
Sie ermöglicht in ihrer Ausprägung als Software-Basisplattform für eingebettete Geräte die Vernetzung von intelligenten Endgeräten durch nachträgliche Auslieferung und Installation von Webdiensten zur Laufzeit. Dies schließt somit die Aufgabe der klassischen Fernsteuerung, Ferndiagnose und -wartung dieser Geräte mit ein. Weiterhin wird die Verteilung von Informationen und multimedialen Unterhaltungsinhalten an diese Geräte über geeignete Protokolle ermöglicht.
In ihrer Ausprägung als Applikationscontainer im Enterprise-Bereich ermöglicht sie die Realisierung einer SOA-Plattform über ihre entsprechenden feingranularen service-basierten Java-Spezifikationen. Die auf den einzelnen Clients laufenden Anwendungen können gleichfalls per Remote Management über geeignete Protokolle administriert werden.
OSGi im JCP
OSGi wurde inzwischen als „JSR 291: Dynamic Component Support for Java SE“ im Rahmen des Java Community Process (JCP) als offizielles dynamisches Komponentenmodell für Java angenommen – neben „JSR 232: Mobile Operational Management“, das sich auf mobile Umgebungen unter Java ME bezieht. JSR-232 korrespondiert dabei mit der R4 Mobile Spezifikation (MEG) und JSR-291 korrespondiert mit OSGi R4.1.
Anwendungsbeispiele
Der Einsatz von OSGi erfolgt typischerweise in Fahrzeugen (Telematik), mobilen Endgeräten (Handys, PDAs) und im Bereich der Heimvernetzung (Residential Gateways, Router) - dort wiederum in den Bereichen Smart Grid, Assisted Living oder der Gebäudeverwaltung (Facility Management). Darüber hinaus kommt es auch in industriellen Automatisierungslösungen oder völlig anders gearteten eingebetteten Systemen (Aviation, Parksysteme etc.) zur Anwendung, häufig auch im Zusammenspiel mit passenden Remote Management-Lösungen.
Eines der neueren Einsatzgebiete von OSGi ist die Integrierte Entwicklungsumgebung (IDE) Eclipse, wo OSGi in Form des Equinox-Programmiergerüsts die Rolle einer eher desktop- bzw. enterprise-orientierten Plattform übernimmt und dabei das recht neue Rich Client (RCP) Paradigma bedient. Eclipse wurde ursprünglich vom OSGi-Mitglied IBM entwickelt – inzwischen ist Eclipse quelloffen (OSS), und Plugins für Eclipse sind (seit Version 3) OSGi-Bundles. Eclipse selbst ist somit ein Beispiel für eine Enterprise-Anwendung von OSGi, die über die ursprüngliche eingebettete Ausrichtung hinausgeht – dies hat im Umkehrschluss auch Auswirkungen auf die weitere Entwicklung der Spezifikation.
Über diverse Aktivitäten im Java Community Process (JSR 232, 246 und 248/9), die federführend u. A. von Nokia und Motorola gesteuert werden, findet OSGi derzeit als Teil einer „Mobile Service Architecture“ (MSA) Einzug in Mobiltelefone. Hierfür wurde es speziell für die Erfordernisse in diesen Umgebungen angepasst und mit Standards wie OMA-DM integriert.
Durch die Standardisierung als generische Java-Erweiterung (JSR-291) sind weitere, neue Anwendungen im eingebetteten und RCP-Umfeld zu erwarten.
Erste Produkte kombinieren die Funktion eines OSGi Remote Management Servers mit den Möglichkeiten von TR-069, zur Fernkonfiguration und Administration von hochbandbreitigem Endanwender-Equipment (z. B. DSL-Router, Set-Top-Boxen etc.) – ebenso wie mit OMA-DM, für den Bereich der mobilen Endgeräte. Daneben bietet es sich natürlich an, z. B. einen TR-069 Client auf SOAP-Basis als OSGi-Bundle zu implementieren.
Die OSGi-Website listet zahlreiche weitere Anwendungsbeispiele.
Einordnung: OSGi & System-Schichten
- Die Abbildung zeigt den Schichtenaufbau einer typischen OSGi-Architektur.
- Server meint in diesem Zusammenhang meist ein klassisches eingebettetes System, nicht notwendigerweise einen Enterprise-Server oder Desktop-Client (RCP) – obwohl OSGi sich auch in diese Richtung weiterentwickelt, siehe Eclipse und Equinox.
Organisation
Gegründet wurde die OSGi Alliance 1999. Ihr gehören über 100 Unternehmen aus unterschiedlichen Branchen an. Diese Branchen werden innerhalb der Organisation durch verschiedene Arbeitsgruppen, sog. „expert groups“, bedient, die alle an der weiteren Spezifikation des Standards mitwirken und dadurch helfen, dass der Standard industrieübergreifend eingesetzt werden kann. Bei der Mitgliedschaft wird zwischen „Full Members“, „Adopters“ und „Supporters“ unterschieden.
Die Allianz wird von einem Direktorium (Board of Directors) geleitet, das jährlich von seinen Vollmitgliedern gewählt wird. Zusätzlich zu den Unternehmensvertretern, die als „directors“ gewählt werden, gibt es noch sog. „officers“, die innerhalb des Direktoriums bestimmte Aufgaben übernehmen und dem Direktorium zuarbeiten.
Auf der kommerziellen Ebene wird in diversen Komitees (Committees) zusammengearbeitet, während technische Fragen – wie die Weiterentwicklung der Spezifikation, von Release 1 über 2 und 3 bis hin zu Version 4 – von den diversen Arbeitsgruppen vorangetrieben werden. Es existieren derzeit (Stand: Januar 2008) Expert Groups für die Bereiche Residential, Enterprise, Mobile, Vehicle und Core Platform.
Board of Directors
Zusammensetzung des „Board of Directors“ in alphabetischer Ordnung (nach repräsentierten Unternehmen) (Stand März 2011):
- Hans-Werner Bitzer, Deutsche Telekom
- Dan Bandera, IBM Corporation
- Ryutaro Kawamura, Dr., NTT
- Anish Karmarkar, Oracle Corporation
- Richard Nicholson, Paremus
- Jaime Merrit, Progress Software
- Susan Schwarze, Dr., ProSyst Software
- Radoslav Nicolov, SAP
- Prasad Yendluri, Software AG
- Peter Cooper-Ellis, SpringSource
- Stan Moyer, Telcordia Technologies
Spezifikation
Die aktuelle OSGi-Spezifikation nennt sich „OSGi Service Platform Release 4“, adressiert J2ME/CDC Java-Plattformen, und steht – einschließlich älterer Versionen und Errata – auf der OSGi-Website zur Verfügung:
- OSGi Release 1 (R1): Mai 2000
- OSGi Release 2 (R2): Oktober 2001
- OSGi Release 3 (R3): März 2003
- OSGi Release 4 (R4): Oktober 2005 / September 2006
- Kern-Spezifikation (R4 Core): Oktober 2005
- Kern-Erweiterungen (R4 Compendium): Oktober 2005
- Mobil-Spezifikation (R4 Mobile / JSR-232): September 2006
- OSGi Release 4.1 (R4.1): Mai 2007
- OSGi Release 4.2 (R4.2): September 2009 / März 2010
- Kern-Spezifikation (R4.2 Core): September 2009
- Kern-Erweiterungen (R4.2 Compendium): September 2009
- Enterprise-Erweiterungen (R4.2 Enterprise): März 2010
- OSGi Release 4.3 (R4.3): April 2011
- Kern-Spezifikation (R4.3 Core): April 2011
Die OSGi Alliance selbst spezifiziert lediglich die Ausführungsumgebung, die APIs und Testfälle für OSGi-Implementierungen von Dritter Seite – und stellt im Rahmen dessen auch eine Referenzimplementierung zur Verfügung. Diese ist jedoch nicht für den Produktiveinsatz gedacht, so dass für diesen Zweck in der Regel Implementierungen von Mitgliedern der Alliance bzw. des OSS-Umfelds genutzt werden.
OSGi-Frameworks
Die Referenzimplementierung der OSGi Alliance ist nicht für den Produktiveinsatz gedacht, sondern dient lediglich als Vorlage für andere Implementierungen.
Produktivtaugliche OSGi-Frameworks sind von verschiedenen Anbietern erhältlich, einerseits als kostenlose, frei verfügbare Open-Source-Lösungen, andererseits als kommerzielle Produkte. Beide Varianten haben Vor- und Nachteile.
Kommerzielle bzw. Closed Source OSGi-Frameworks
Kommerzielle bzw. Closed Source Frameworks sind in der Regel zertifiziert, stärker anwendungsbezogen ausgerichtet (bzw. dahingehend optimiert) und beinhalten neben dem eigentlichen Framework in der Regel weitere optionale Softwarepakete – letztere bilden häufig die Basis für kundenspezifische Auftragsarbeiten, die sich auch in anwendungsbezogen optimierten Framework-Varianten niederschlagen können (z. B. für den Mobilbereich). Inwieweit die Nichtverfügbarkeit des Quellcodes hier Vor- oder Nachteile bietet, ist im Einzelfall unterschiedlich zu gewichten, zumal über Verschwiegenheitserklärungen häufig Zugriff ermöglicht wird.
Kommerzielle R4 zertifizierte OSGi Service Platforms (Frameworks) sind folgende (Stand Februar 2010):
- ProSyst Software mBedded Server
- Makewave Knopflerfish Pro
- Samsung OSGi R4 Solution
- HitachiSoft SuperJ Engine Framework
- KT OSGi Service Platform (KOSP)
Quelloffene OSGi-Frameworks
Open-Source-Frameworks sind in der Regel weniger anwendungsbezogen ausgerichtet – oder im Gegenteil stark auf eine bestimmte Anwendung fokussiert (siehe Equinox) und/oder von einem einzelnen Unternehmen dominiert, das sein früheres kommerzielles Produkt auf diesem Wege ausgekoppelt hat oder von Anfang an als OSS-Produkt pflegt. Teilweise werden auch aufgewertete OSS-Lösungen kommerziell vertrieben. Inwieweit die Quellcodeverfügbarkeit hier Vor- oder Nachteile bietet, ist im Einzelfall unterschiedlich zu gewichten.
Liste der OSS OSGi-Frameworks:
- Equinox – getrieben von Eclipse (Enterprise)
- mBedded Server Equinox Edition – OSS Produkt von ProSyst basierend auf dem Equinox-Framework von Eclipse (ergänzt um zusätzliche Features)
- Oscar – ursprünglich akademisches Projekt, wird inzwischen als Apache Felix weiterentwickelt
- Apache Felix – Community-Projekt der Apache Software Foundation
- Knopflerfish – ursprünglich kommerzielles Embedded-Produkt von Gatespace
- Concierge – leichtgewichtige OSGi Implementierung für mobile und eingebettete Systeme
- Jadabs – rudimentärer Ansatz, Zitat: „A dynamic lightweight container for small devices in a distributed environment“
Referenzen
Entwickler-Informationen der OSGi
- OSGi Service Platform, Release 3, IOS Press (2003), englisch, ISBN 1-58603-311-5
- Direkter Spezifikationsdownload (R3/R4)
- OSGi Alliance Developer Site – Public Wiki & APIs
Enterprise-Programmiergerüste
- Spring-OSGi-Specification – OSGi-Services im Spring-J2EE-Programmiergerüst
Relevante RFCs und Java-Standards
- RFC 2608 (Service Location Protocol)
- Sun JINI™ (Java Intelligent Network Infrastructure)
- Sun JCP JSR-277 (Java Module System)
- Sun JCP JSR-232 (Mobile Operational Management – OSGi R4 MEG)
- Sun JCP JSR-246 (Device Management API)
- Sun JCP JSR-249 (Mobile Service Architecture for CDC)
- Sun JCP JSR-291 (Dynamic Component Support for Java SE – OSGi R4.1)
Literatur
- Bernd Weber, Patrick Baumgartner, Prof. Dr. Oliver Braun OSGi für Praktiker: Prinzipien, Werkzeuge und praktische Anleitungen auf dem Weg zur „kleinen SOA“ Hanser Verlag, 2010, ISBN 978-3446420946
- Gerd Wütherich, Nils Hartmann, Bernd Kolb, Matthias Lübken Die OSGi Service Platform – Eine Einführung mit Eclipse Equinox dpunkt.verlag, 2008, ISBN 978-3-89864-457-0
- Christoph Schmidt-Casdorff, Thorsten Vogel OSGi Einstieg und Überblick Entwickler.Press, 2008, ISBN 978-3-86802-043-4
- Bartlett, Neil (10. Januar 2009), OSGi In Practice (DRAFT ed.), Frei verfügbares Buch, im Entwurfsstadium, mit praktischen Beispielen (Englisch)
Weblinks
- Über die OSGi Alliance
- OSGi Blog − offizielles Blog des „OSGi Evangelist“ der OSGi
- Mobile OSGi Blog − Blog zu OSGi in Mobilgeräten
- Das OSGi Framework − Onlineartikel zur Einführung in das OSGi-Framework (deutsch)
- Erste Schritte mit OSGi − 4-teiliger Onlineartikel (deutsch)
- OSGi Kernkonzepte im Überblick
- OSGi Remote Management Remote Management von Geräten mit OSGi
Komplementäre Standards
Kategorien:- IT-Konsortium
- Java-Bibliothek
- Telematik
Wikimedia Foundation.