OSGi
OSGi Service Platform | |
---|---|
Basisdaten | |
Entwickler | OSGi Alliance |
Erscheinungsjahr | Mai 2000[1][2] |
Aktuelle Version | 7[3][4] |
Betriebssystem | Java |
Programmiersprache | Java |
Kategorie | Standard |
Lizenz | OSGi Specification License (OSGi Core Release 7) |
www.osgi.org |
DieOSGi Alliance (früherOpen Services Gateway initiative) spezifizierte einehardwareunabhängige dynamischeSoftwareplattform, die es erleichtert, Anwendungen und ihre Dienste perKomponentenmodell („Bundle“/„Service“) zu modularisieren und zu verwalten („Service Registry“). Die OSGi-Plattform setzt eineJava Virtual Machine (JVM) voraus und bietet darauf aufbauend das OSGi-Framework.
Hintergründe
[Bearbeiten |Quelltext bearbeiten]Im Jahr 2021 übertrug die OSGi Alliance ihre Aufgabe an dieOSGi Working Group derEclipse Foundation.[5][6][7]
Von OSGi existieren inzwischen verschiedene Generationen, die allesamt von der OSGi Alliance, einem Industriekonsortium, spezifiziert wurden. Die Allianz besteht aus Großunternehmen wieIBM,Deutsche Telekom,NTT undOracle, aber auch aus vielen kleineren Unternehmen, u. a. aus demOpen-Source-Software-Bereich (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 spezifizierte hierbei lediglich dieProgrammierschnittstellen (APIs) undTestfälle für OSGi-Implementierungen von dritter Seite und stellte 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. in derAutomobilindustrie, in Handys, in derGebäudeautomation, 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-Framework auf den jeweiligen Geräten installiert, sondern auf sogenanntenResidential Gateways – sie können alseingebettetes System verstanden werden, das (vergleichbar einemDSL-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-Frameworks in Autos undMobiltelefonen zum Einsatz – hier laufen sie ohne zusätzliches Gateway direkt auf der leistungsfähigen eingebetteten Hardware.
Die Spezifikation der OSGi Service Platform definiert eineJava-basierte Laufzeitumgebung oberhalb derJVM 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 einzelnenImplementierungen der jeweiligen Hersteller bestehen meist aus dem OSGi-Framework und idealerweise einer großen Anzahl von Service-Bundles (Packages), die aufgrund der modularen Architektur ebenfalls dynamisch hinzugefügt werden können.
Definition: OSGi-Framework
[Bearbeiten |Quelltext bearbeiten]Ein OSGi-Framework ist eine offene, modulare und skalierbare „Service Delivery Platform“ auf Java-Basis. Es handelt sich um einKomponentenmodell 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ährendserviceorientierte Architekturen als Paradigma zur unternehmensweiten Strukturierung vonSystemlandschaften Ortstransparenz und Zugriffstransparenz erfordern, sind die Möglichkeiten zur Programmierung verteilter Systeme nicht integraler Bestandteil des OSGi-Frameworks, welches seinen Ursprung in eingebetteten Systemen hat. Im OSGi-Framework 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-Framework als zugrundeliegendes Komponentenmodell einerSOA 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 dieVernetzung von intelligentenEndgeräten durch nachträgliche Auslieferung und Installation vonWebservices zur Laufzeit. Dies schließt somit die Aufgabe der klassischenFernsteuerung, Ferndiagnose und -wartung dieser Geräte mit ein. Weiterhin wird die Verteilung vonInformationen undmultimedialen 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
[Bearbeiten |Quelltext bearbeiten]OSGi wurde 2007[8] als „JSR-291: Dynamic Component Support for Java SE“ im Rahmen desJava Community Process (JCP) als offizielles dynamisches Komponentenmodell für Java angenommen – neben „JSR 232: Mobile Operational Management“, das sich auf mobile Umgebungen unterJava ME bezieht. JSR-232 (bzw. JSR-232, 246, 248/9) korrespondiert dabei mit der R4 Mobile Spezifikation (MEG) und JSR-291 korrespondiert mit OSGi R4.1. Des Weiteren gibt es inhaltliche Berührungspunkte zu JSR-277 und JSR-294.
Anwendungsbeispiele
[Bearbeiten |Quelltext bearbeiten]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 BereichenSmart Grid,Assisted Living oder der Gebäudeverwaltung (Facilitymanagement). Darüber hinaus kommt es auch in industriellen Automatisierungslösungen oder völlig anders gearteteneingebetteten Systemen (Aviation, Parksysteme etc.) zur Anwendung, häufig auch im Zusammenspiel mit passenden Remote Management-Lösungen.
Ein weiteres Einsatzgebiet von OSGi ist dieIntegrierte Entwicklungsumgebung (IDE)Eclipse, wo OSGi in Form desEquinox-Frameworks die Rolle des Modul-Systems für die desktop- bzw. enterprise-orientierten Plattform übernimmt und dabei dasRich Client (RCP) Paradigma bedient. Eclipse wurde ursprünglich vom OSGi-Mitglied IBM entwickelt – inzwischen ist Eclipse quelloffen (OSS), und Plugins für Eclipse sind (ab 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.
Darüber hinaus wird OSGi heute auch zur Modularisierung von Java (J2EE) basierten Application Servern eingesetzt, wo es als Basis komplexerer Frameworks dient.
Über diverse Aktivitäten imJava Community Process (JSR-232, 246 und 248/9), die federführend u. a. von Nokia und Motorola gesteuert wurden, fand OSGi auch 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 wieOMA-DM integriert. Diese Entwicklung ist jedoch seit Android und HTML5 in dieser Form überholt.
Im Breitband-Bereich kombinieren bereits viele Produkte ein clientseitiges OSGi-Framework (ggf. mit integriertemTR-069 Client) mit einemOSGi Remote Management Server (oder einem herkömmlichen TR-069 ACS) um einerseits die Fernkonfiguration und Administration von hochbandbreitigem Endanwender-Equipment (z. B. DSL-Router, Set-Top-Boxen,Smart-Meter Gateways, Smart Home Gateways, Energy Management Gateways etc.) und andererseits das Management von lokalenApps zu in einer ganzheitlichen Ende-zu-Ende-Lösung zu kombinieren. Als alternatives Protokoll für den Telematik-Bereich gilt das analog fürOMA-DM-basierte Lösungen.
Durch die Standardisierung als generische Java-Erweiterung (JSR-291) einerseits und durch die Zusammenarbeit mit derHGI (Home Gateway Initiative) sind weitere, neue Anwendungen im Embedded-Umfeld zu erwarten. Die Enterprise-Schiene wiederum wird durch gesteigertes Interesse bei den Anbietern von Application Servern bzw. dem RCP-/Eclipse-Umfeld bedient.
Die OSGi-Website listet zahlreiche weitere Anwendungsbeispiele.
Einordnung: OSGi & System-Schichten
[Bearbeiten |Quelltext bearbeiten]- Die Abbildung zeigt den Schichtenaufbau einer typischen OSGi-Architektur.
- Server bedeutet 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, sieheEclipse undEquinox.
Organisation
[Bearbeiten |Quelltext bearbeiten]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 derMitgliedschaft 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 BereicheResidential,Enterprise,Mobile,Vehicle undCore Platform.
Board of Directors
[Bearbeiten |Quelltext bearbeiten]Zusammensetzung des „Board of Directors“ in alphabetischer Ordnung (nach repräsentierten Unternehmen) (Stand: Oktober 2019)[9]:
- Carsten Ziegeler,Adobe Inc.
- Kai Hackbarth,Bosch Software Innovations
- Dan Bandera,IBM Corporation
- Ray Auge, Liferay
- Hiroyuki Maeomichi,NTT
- Tim Ward, Paremus
- Prasad Yendluri,Software AG
Spezifikation
[Bearbeiten |Quelltext bearbeiten]Die aktuelle OSGi-Spezifikation nennt sich „OSGi Service Platform Release 5“, adressiertJ2ME/CDCJava-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
- Kern-Erweiterungen (R4.3 Compendium): Mai 2012
- Residential-Spezifikation (R4.3 Residential): Mai 2012
- OSGi Release 5 (R5): Juni 2012
- Kern-Spezifikation (R5 Core): März 2012
- Enterprise-Erweiterungen (R5 Enterprise): März 2012
- OSGi Release 6 (R6): Juni 2014
- Kern-Spezifikation (R6 Core): Juni 2014
- OSGi Release 7 (R7)
- Compendium Release 7 Specifications: 25. April 2018[10]
Die OSGi Alliance selbst spezifizierte lediglich die Ausführungsumgebung, dieAPIs undTestfälle für OSGi-Implementierungen von Dritter Seite – und stellte im Rahmen dessen auch eine Referenzimplementierung zur Verfügung.
OSGi-Frameworks
[Bearbeiten |Quelltext bearbeiten]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
[Bearbeiten |Quelltext bearbeiten]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 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
[Bearbeiten |Quelltext bearbeiten]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 Vorteile bietet, ist im Einzelfall unterschiedlich zu gewichten.
Liste der OSS OSGi-Frameworks:
- Equinox – getrieben vonEclipse (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“
- Native-OSGi – Implementierung in C/C++
Enterprise / Application Server
[Bearbeiten |Quelltext bearbeiten]- Spring Dynamic Modules – von Spring Source (heute: Pivotal), wird inzwischen als Gemini Blueprint von Eclipse weitergeführt
- Gemini Blueprint – von Eclipse
- JOnAS – von Bull, OW2
- WebSphere Application Server – von IBM, via JSR-291, alsFeature Pack for OSGi Applications
- WebSphere Application Server Community Edition freie Lizenz. – von IBM, via JSR-291, alsFeature Pack for OSGi Applications
- BEA WebLogic – von BEA, via microService Architecture, wurde inzwischen von Oracle übernommen
- Glassfish – von Sun, später von Oracle übernommen, jetztEclipse Foundation
- WildFly – vonJBoss bzw.Red Hat
Sonstiges
[Bearbeiten |Quelltext bearbeiten]- Eclipse – generische IDE der Eclipse Foundation
- Nuxeo Enterprise Platform – Content Management System
Komplementäre Standards
[Bearbeiten |Quelltext bearbeiten]Relevante RFCs und Java-Standards
- RFC:2608 –Service Location Protocol, Version 2. Juni 1999 (englisch).
- SunJini (Java Intelligent Network Infrastructure)
Literatur
[Bearbeiten |Quelltext bearbeiten]- OSGi Service Platform, Release 3 (2003). IOS Press, Amsterdam 2004,ISBN 1-58603-311-5 (englisch).
- Bernd Weber, Patrick Baumgartner, Oliver Braun:OSGi für Praktiker: Prinzipien, Werkzeuge und praktische Anleitungen auf dem Weg zur „kleinen SOA“. Hanser Verlag, 2010,ISBN 978-3-446-42094-6.
- 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 VogelOSGi Einstieg und Überblick Entwickler.Press, 2008,ISBN 978-3-86802-043-4
- Neil Bartlett:OSGi In Practice (DRAFT ed.) 10. Januar 2009, (njbartlett.github.io, Frei verfügbares Buch, im Entwurfsstadium, mit praktischen Beispielen, englisch).
- Kirk KnoernschildJava Application Architecture: Modularity Patterns with Examples Using OSGi. (englisch).
- Holly Cummins, Timothy WardEnterprise Osgi in Action: With Examples Using Apache Aries. (englisch),ISBN 978-1-61729-013-8.
- Richard S. Hall, Karl Pauls, Stuart McCulloch, David Savage:OSGi in Action – Creating Modular Applications in Java. Manning, New York April 2011,ISBN 1-933988-91-6.
- Alexandre De Castro Alves,OSGi in Depth. Manning, New York Dezember 2011,ISBN 978-1-935182-17-7.
Weblinks
[Bearbeiten |Quelltext bearbeiten]- DirekterSpezifikationsdownload (R1 – R8, sowie Entwurfsversion des nächsten OSGi-Release)
- @1@2Vorlage:Toter Link/www2.osgi.orgOSGi Alliance Developer Site (Seite nicht mehr abrufbar, festgestellt im Dezember 2022.Suche in Webarchiven) – Public Wiki & APIs
- Spring OSGi Specification (v0.7) (Memento vom 29. April 2008 imInternet Archive) – OSGi-Services imSpring-J2EE-Framework
- Über die OSGi Alliance (Memento vom 23. September 2020 imInternet Archive)
- OSGi Blog – offizielles Blog des „OSGi Evangelist“ der OSGi
- Mobile OSGi Blog – Blog zu OSGi in Mobilgeräten
- Holger Funke:Das OSGi Framework (Memento vom 12. Juni 2015 imInternet Archive) – Onlineartikel zur Einführung in das OSGi-Framework, 2009 (deutsch)
- Heiko Seeberger:Erste Schritte mit OSGi (Memento vom 14. November 2013 imInternet Archive) – 4-teiliger Onlineartikel, 2008 (deutsch)
- OSGi Remote Management Remote Management von Geräten mit OSGi
- OSGi by Example (PDF; 2,6 MB)
- NativeOSGi
Relevante RFCs und Java-Standards
- Sun JCPJSR-277 (Java Module System)
- Sun JCPJSR-232 (Mobile Operational Management – OSGi R4 MEG)
- Sun JCPJSR-246 (Device Management API)
- Sun JCPJSR-249 (Mobile Service Architecture for CDC)
- Sun JCPJSR-291 (Dynamic Component Support for Java SE – OSGi R4.1)
Einzelnachweise
[Bearbeiten |Quelltext bearbeiten]- ↑OSGi Specifications.
- ↑OSGi Service Gateway Specification Release 1.0. (PDF)
- ↑OSGi Release 7.
- ↑ April 2018.
- ↑Rainald Menge-Sonnentag: OSGi Alliance übergibt Projekte der Eclipse Foundation und löst sich auf. In: heise online. 20. Oktober 2020, abgerufen am 23. Dezember 2022.
- ↑Dan Bandera:Announcement of Transition to Eclipse Foundation (Memento vom 3. Juli 2022 imInternet Archive),in: blog.osgi.org, 19. Oktober 2020 (englisch)
- ↑The OSGi Alliance Transfers Governance of the OSGi Specifications to Open Source Software Leader the Eclipse Foundation. In: eclipse.org. 27. April 2021, abgerufen am 23. Dezember 2022 (englisch).
- ↑JSR 291. Abgerufen am 15. Januar 2020.
- ↑Board & Officers – OSGi™ Alliance. Archiviert vom Original (nicht mehr online verfügbar) am 17. Januar 2021; abgerufen am 18. Oktober 2019.
- ↑OSGi Core Release 7 and Compendium Release 7 Now Available. In: businesswire. 25. April 2018, abgerufen am 23. Dezember 2022 (englisch).