UvodDoKomponent: OSGi

from Wiki KIVu

Navigace

OSGi

OSGi je modulární systém pro Javu, který implementuje dynamický komponentový model. Aplikace modularizované do komponent mohou být instalovány, spuštěny, zastaveny, updatovány a odinstalovány bez nutnosti zastavit JVM.

Komponenty se nazývají bundle a jsou distribuovány v klasickém JAR formátu. Tento formát je rozšířen o nové hlavičky v MANIFEST.MF souboru, aby byl schopen popsat vztahy mezi jednotlivými bundly.

Vrstvy OSGi

Architektura OSGi

Každý framework, který implementuje OSGi standard (komponentový model), poskytuje prostředí pro modularizaci aplikací do bundlů. Každý bundle lze dynamicky načíst do běhového prostředí frameworku.

Framework je koncepčně rozdělen na několik oblastí:

Bundles – Bundly jsou obyčejné jar komponenty s "manifest" hlavičkou navíc.
Services – Tato vrstva propojuje bundly dynamickou cestou. Nabízí model publish-find-bind (služby zveřejňuje hledá a propojuje mezi bundly).
Services Registry – API pro služby správy (ServiceRegistration?, ServiceTracker? a ServiceReference?).
Life-Cycle – API pro správu životního cyklu (install, start, stop, update, and uninstall / instalace, spuštění, ukončení, update a odinstalování) bundlů.
Modules – Vrstva, která se stará o zapouzdření a deklaraci závislostí (jak může bundlu importovat a exportovat kód).
Security – Vrstva, která se stará o bezpečnost, omezováním funkcionality bundlů na předdefinované možnosti.
Execution Environment – Definuje, jaké metody a třídy jsou dostupné v dané platformě. (Na obrázku je znázorněn dvojicí JVM a OS.)

Architektura OSGi

Bundly

Bundle je skupina implementačních tříd a k nim přidružených informací, které jsou uloženy v manifest souboru MANIFEST.MF. Ukázkový manifest může vypadat následovně:

Bundle-Name: Hello World
Bundle-SymbolicName: org.wikipedia.helloworld
Bundle-Description: A Hello World bundle
Bundle-ManifestVersion: 2
Bundle-Version: 1.0.0
Bundle-Activator: org.wikipedia.Activator
Export-Package: org.wikipedia.helloworld;version="1.0.0"
Import-Package: org.osgi.framework;version="1.3.0"

Význam použitých parametrů:

Životní cyklus

INSTALLED – Bundle byl úspěšně nainstalován.
RESOLVED – Všechny třídy, které bundle potřebuje jsou k dispozici. To znamená, že je připraven ke spuštění, nebo byl zastaven.
STARTING – Bundle je spouštěn, tedy volá se metoda BundleActivator?.start().
ACTIVE – Bundle běží. Volání BundleActivator?.start() bylo dokončeno.
STOPPING – Bundle se zastavuje. Volá se metoda BundleActivator?.stop().
UNINSTALLED – Bundle byl odinstalován/odstraněn; není tedy nadále k dispozici.

Služby

V OSGi je služba způsob, kterým lze volat metody cizího bundle. Bundle může nechat registrovat 0-N svých služeb a může 0-M služeb požadovat. Služba se registruje i získává přes rozhraní, které implementuje. Standardně je k dispozici několik systémových služeb: Logging, Configuration Admin, Device Access, User Admin, IO Connector, Preferences, Component Runtime, Deployment Admin, Event Admin, Application Admin.

Implementace OSGi

Komponentový model OSGi implementují následující frameworky:

Praktická část

Tutoriál na vytvoření nového projektu a HelloWorld. Výsledná implementace: Attach:HelloWorldOsgi.zip

Příklad MessagePrinterOsgi pak dokumentuje jen technologicky specifické problémy. Výsledná implementace: Attach:MessagePrinterOsgi.zip

Příklad ParkovisteOsgi a specifikace jeho možné podoby pak dokumentuje jen technologicky specifické problémy. Výsledná implementace: Attach:ParkovisteOsgi.zip

Retrieved from http://wiki.kiv.zcu.cz/UvodDoKomponent/OSGi
Content last modified on 22 January 2015, 16:07