- Osgi
-
OSGi Service Platform Entwickler: OSGi Alliance Aktuelle Version: 4.1
(Mai 2007)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, Nokia und Oracle, aber auch aus vielen kleineren Unternehmen, u. A. aus dem OSS-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 oder zur intelligenten Fernsteuerung von Hausgeräten. 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 Basisdiensten. 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 Programmiergerüst
Ein OSGi-Programmiergerüst 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üste, 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 Diensten 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) oder der Gebäudeverwaltung (Facility Management), aber auch in industriellen Automatisierungslösungen oder völlig anders gearteten eingebetteten Systemen (Aviation, Parksysteme etc.)
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, daß 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“ (Stand Januar 2009):
- Dan Bandera, IBM Corporation
- John R. Barr, Dr., Motorola, Inc.
- Hans-Werner Bitzer, Deutsche Telekom
- Peter Cooper-Ellis, SpringSource
- Anish Karmarkar, Oracle Corporation
- Ryutaro Kawamura, Dr., NTT
- Frank Mittag, SAP AG
- Stan Moyer, Telcordia Technologies, Inc.
- Susan Schwarze, Dr., ProSyst Software GmbH
- Gordon Van Huizen, Progress Software
- Prasad Yendluri, Software AG
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
Die OSGi Alliance selbst spezifiziert lediglich 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 Programmiergerüste von Mitgliedern der Alliance bzw. des OSS-Umfelds genutzt werden.
OSGi-Programmiergerüste
Die Referenzimplementierung der OSGi Alliance ist nicht für den Produktiveinsatz gedacht, sondern dient lediglich als Vorlage für andere Implementierungen.
Produktivtaugliche OSGi-Programmiergerüste 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 OSGi-Programmiergerüste
Kommerzielle Programmiergerüste sind in der Regel zertifiziert, stärker anwendungsbezogen ausgerichtet (bzw. dahingehend optimiert) und beinhalten neben dem eigentlichen Programmiergerüst in der Regel weitere optionale Softwarepakete – letztere bilden häufig die Basis für kundenspezifische Auftragsarbeiten, die sich auch in anwendungsbezogen optimierten Programmiergerüst-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.
Quelloffene OSGi-Programmiergerüste
Open-Source-Programmiergerüste 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. Inwieweit die Quellcodeverfügbarkeit hier Vor- oder Nachteile bietet, ist im Einzelfall unterschiedlich zu gewichten.
Liste der OSS OSGi-Programmiergerüste:
- Equinox – getrieben von Eclipse (Enterprise)
- mBedded Server Equinox Edition – OSS Produkt von ProSyst basierend auf dem Equinox-Programmiergerüst 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
- 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
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)
Komplementäre Standards
Wikimedia Foundation.