OSGi Framework
OSGI FRAMEWORK 1
Roman Klimt Jakub Jáchym Stanislav Vojíř
STRUKTURA PREZENTACE Úvod Struktura OSGI Příklady
OSGi Framework
2
ÚVOD OSGI je specifikace, která definuje standard pro vývoj, nasazení a správu aplikací v řízeném prostředí. OSGI kontejner - prostředí vystavěné nad JVM, které řídí souţití aplikací Modulární systém – dáváme dohromady jednotlivé aplikace(bundles)
OSGi Framework
3
OSGI ALLIANCE Organizace která vyvíjí standard OSGI IBM, Sun Microsystems, Intel, BMW, Ericsson
OSGi Framework
4
PROČ POUŢÍVAT OSGI? Nároky na obsáhlé IS neustále se zvyšují Narůstá počet vnitřních vazeb v systému mezi jednotlivými částmi kódu Klesá spolehlivost, rozšiřitelnost a udrţovatelnost OSGi definuje standard jak tyto problémy řešit Př: Equinox, Knopflerfish
OSGi Framework
5
VÝHODY MODULÁRNÍCH SYSTÉMŮ Provázanost kódu se zredukuje pouze na úroveň modulů, které jsou jiţ snadněji upravovatelné. Práci na vývoji systému je moţné rozdělit a moduly vyvíjet paralelně. Je moţné snadno rozšiřovat systém přidáváním dalších modulů. Vývojář se můţe soustředit pouze na implementaci funkcionality v rámci jednoho modulu a nemusí detailně znát celý systém. Znuvupouţitelnost modulu v jiné aplikaci.
OSGi Framework
6
OSGI POUŢITÍ V PRAXI Původním cílem nasazení tohoto rámce byla oblast mobilních a zabudovaných zařízení. Dnes v rozsáhlých aplikacích a enterprise systémech Uţití OSGI sluţeb např. sluţby pro zpracování XML, logování, spouštění servletů, bezpečnostní politiku, přístup k zařízením atd.
OSGi Framework
7
STRUKTURA
Framework je rozdělen do několika vrstev: Výkonné prostředí Moduly Management ţivotního cyklu Registr sluţeb
OSGi Framework
8
VRSTVA 0 – VÝKONNÉ PROSTŘEDÍ Výkonné prostředí je specifikací jazyka Java. OSGi Framework je vystavěn nad JVM, proto je pro jeho provoz nutný virtuální stroj.
OSGi Framework
9
VRSTVA 1 – MODULY Definuje politiku načítání tříd. Základem je Java, do které přidává modularizaci. Bezpečnostní architektura umoţňující rozvinout uzavřené systémy, tzv. „walled gardens“, nebo výhradně uţivatelsky spravované systémy.
OSGi Framework
10
VRSTVA 2 – MANAGEMENT ŢIVOTNÍHO CYKLU
Umoţňuje dynamickou
OSGi Framework
instalaci odinstalaci spouštění zastavování aktualizaci
balíků (bundles). Funkčně
provázána s vrstvou Moduly, ke které přidává API. 11
VRSTVA 3 – REGISTR SLUŢEB Poskytuje kooperační model pro dynamicky zaváděné balíky. Balíky mohou spolupracovat prostřednictvím
OSGi Framework
tradičního sdílení tříd komplexního modelu sdílení objektů
12
VŠUDYPŘÍTOMNÁ BEZPEČNOST
Bezpečnost zaloţena na bezpečnostním modelu Javy a Javy 2.
OSGi Framework
Jazyk svou stavbou omezuje mnoho moţných konstrukcí Modifikátory přístupu v jazyku omezují viditelnost kódu pro ostatní programátory
OSGi platforma
rozšiřuje tento model umoţněním soukromého přístupu přidává plně dynamickou správu oprávnění 13
CO POTŘEBUJEME K VYUŢITÍ OSGI FRAMEWORKU?
Potřebujeme implementaci potřebného pracovního prostředí. Nejrozšířenější jsou 3 varianty: Apache Felix Knopflerfish Equinox
My se budeme blíţe zabývat prostředím Equinox, které je nedílnou součástí např. vývojového nástroje Eclipse.
OSGi Framework
14
SPUŠTĚNÍ PODPŮRNÉHO PROSTŘEDÍ Najděte si ve sloţce s Eclipse soubor org.eclipse.osgi_*.jar Spuštění pomocí příkazu
java -jar equinox.jar –console
Zobrazí se nám výzva: osgi> Nyní máme moţnost obsluhovat příkazy na konzoli:
ss - zobrazení nainstalovaných modulů a jejich aktivity install file:jmenosouboru - instalace modulu start ID - spustí modul se zadaným ID stop ID - zastaví modul se zadaným ID uninstall ID - odinstalace modulu se zadaným ID quit - ukončení Equinoxu
OSGi Framework
15
NÁŠ PRVNÍ MODUL PRO OSGI
OSGi Framework
Soubor priklad1.java import org.osgi.framework.*; public class priklad1 implements BundleActivator { public void start(BundleContext context) { System.out.println("Spusteno!"); } public void stop(BundleContext context) { System.out.println("Zastaveno!"); } Soubor priklad1.mf Manifest-Version: 1.0 Bundle-Name: priklad1 Bundle-Activator: priklad1 Bundle-SymbolicName: HelloWorld Bundle-Version: 1.0.0 Import-Package: org.osgi.framework
16
PRVNÍ MODUL V OSGI – VYSVĚTLENÍ Modul musí implementovat rozhraní BundleActivator Při tvorbě musíme do ClassPath přidat JAR soubor s equinoxem. Pro spuštění musíme nejprve spustit podpůrné prostředí equinoxu, poté modul nainstalovat a teprve poté je ho moţné spustit.
OSGi Framework
Modul je moţné spustit také přímo pomocí Eclipse Získáme navíc moţnost ladění Ztrácíme nastavení modulů mezi jednotlivými spuštěními
17
PRÁCE S EQUINOXEM Pro pouţívání a správu jednotlivých modulů samozřejmě nemusíme vyuţívat konzoli equinoxu, ale je moţné ji obsluhovat pomocí dalších modulů… Slouţí nám k tomu rozhraní BundleContext
OSGi Framework
18
BUNDLECONTEXT - PŘÍKLAD import org.osgi.framework.*; public class HelloWorldKiller implements BundleActivator { public void start(BundleContext context) { Bundle[] bundles = context.getBundles(); for(int i=0; i
OSGi Framework
System.out.println("HelloWorldKiller searching...");
System.out.println("Hello World found, destroying!"); bundles[i].uninstall(); return; } catch (BundleException e) { System.err.println("Failed: " + e.getMessage()); } } } System.out.println("Hello World bundle not found"); }
19
APLIKACE PRO ECLIPSE
OSGi Framework
Eclipse povaţujeme za tzv. RCP (Rich Client Platform) a tato se vyuţívá nejen pro tvorbu samotných modulů, ale ještě častěji pro vývoj samotných pluginů do Eclipse.
20
VÝVOJ PLUGINU PRO ECLIPSE
org.eclipse.core.runtime.IPlatformRunnable; org.eclipse.swt.widgets.Display; org.eclipse.ui.PlatformUI; org.eclipse.ui.application.WorkbenchAdvisor;
OSGi Framework
Při vývoji aplikací pro eclipse nevyuţíváme čistý OSGI Framework, ale jakousi vylepšenou variantu. Konkrétně pro jednoduchou aplikaci budeme potřebovat minimálně tyto třídy:
Máme moţnost zvolit si kompatibilitu… Equinox Obecný OSGI framework
Příklad – viz dokument na webu
21
ZDROJE
http://www.osgi.org/About/Technology
http://www.sweb.cz/pichlik/archive/2007_08_26_archive.html http://www.theserverside.com/tt/articles/article.tss?l=EclipseEquinoxO SGi
http://en.wikipedia.org/wiki/OSGi
http://www.kiv.zcu.cz/research/groups/dss/compsubst/doc/2006-11-objekty.pdf
http://blog.novoj.net/2007/09/08/serial-modularni-systemy-ve-spring-
OSGi Framework
frameworku
22
23
OSGi Framework
DĚKUJEME ZA POZORNOST