Die Kernkomponente von OSGi Service Platform definiert eine sichere und verwaltete Serviceplattform, die auf Java™ basiert. Diese Plattform unterstützt die Implementierung erweiterbarer und für den Download verfügbarer Anwendungen, die Bundles genannt werden. Die Spezifikation definiert ein Sicherheitsmodell, ein Verwaltungsmodell für den Anwendungslebenszyklus, eineService-Registry, eine Ausführungsumgebung und Module.
Die Ausführungsumgebungsschicht gibt die Java-Umgebung an (zum Beispiel Java EE oder Java SE), in der ein Bundle ausgeführt wird. Sie müssen für OSGi-Anwendungen, die in WebSphere Application Server ausgeführt werden, keine Ausführungsumgebung angeben.
In der Modulschicht verarbeitet das OSGi-Framework die modularen Aspekte eines Bundles. Die Metadaten, mit denen das OSGi-Framework das Bundle verarbeitet, sind in einer Bundlemanifestdatei definiert.
Die Schicht für das Lebenszyklusmanagement von Bundles in OSGi beseitigt das Problem des Ladens von Java-Klassen und die zur Ausführungszeit auftretenden Ausnahmebedingungen vom Typ Klasse nicht gefunden, bei dem abhängige Klassen nicht geladen werden können, das sie nicht gefunden werden. Bei der Implementierung eines installierten Bundles in das Framework löst das Framework zuerst alle zugehörigen deklarierten Abhängigkeiten auf. Ungelöste Abhängigkeiten werden vom Framework gemeldet und das Bundle wird nicht gestartet.
Anwendungen müssen in der Regel keinen Bundleaktivator bereitstellen. Wenn jedoch beim Starten und Stoppen des Bundles eine Initialisierung erforderlich ist, kann ein Bundleaktivator erstellt werden.
Die Service-Registry-Schicht in OSGi unterstützt an sich serviceorientierte Architektur (SOA). Bundles veröffentlichen Services in der Service-Registry und andere Bundles können diese Services über die Service-Registry aufspüren.
Diese Services sind das primäre Mittel für die Kooperation zwischen Bundles. Ein OSGi-Service ist ein POJO (Plain Old Java Object), das in der Service-Registry unter einem oder mehreren Java-Schnittstellennamen veröffentlicht wird und optionale Metadaten als angepasste Eigenschaften (Name/Wert-Paare) enthalten kann. Ein Erkennungsbundle sucht in der Service-Registry nach einem Service anhand eines Schnittstellennamens und kann anschließend die Services mithilfe der angepassten Eigenschaften filtern.
Services sind völlig dynamisch und haben in der Regel denselben Lebenszyklus wie das Bundle, das sie bereitstellt.