ZDE VLOIT ORAZÍTKOVANÉ ZADÁNÍ BAKALÁSKÉ PRÁCE
ii
eské vysoké u£ení technické v Praze Fakulta elektrotechnická
Bakalá°ská práce
Aplikace Mantichora - Management zásuvných modul·
Zden¥k Hák
Vedoucí práce:
Ing. Ji°í Chludil
Studijní program: Elektrotechnika a informatika, strukturovaný bakalá°ský
Obor: Výpo£etní technika
£ervenec 2009
iv
Pod¥kování Cht¥l bych pod¥kovat panu Ing. Ji°ímu Chludilovi za p°íkladnou spolupráci p°i vedení bakalá°ské práce.
v
vi
Prohlá²ení Prohla²uji, ºe jsem svou bakalá°skou práci vypracoval samostatn¥ a pouºil jsem pouze podklady uvedené v p°iloºeném seznamu. Nemám závaºný d·vod proti uºití tohoto ²kolního díla ve smyslu 60 Zákona £. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zm¥n¥ n¥kterých zákon· (autorský zákon).
V Broumech dne 6.7. 2009
............................................................... vii
viii
Abstract Mantichora is an application that allows a simulation of processes in our planet system. Its modular architecture allows to use dierent graphical, mathematical-physical and network environment. This work deals with the principle of modular architecture. It compares plugin technologies. It chooses a technology that Mantichora will use.
Abstrakt Mantichora je aplikace, která umoºnuje simulaci d¥j· v slune£ní soustav¥. Její modulární architektrura umoºnuje pouºít r·zné gracké, matematicko-fyzikální a sí´ové prost°edí. Práce se zabývá principem modulární architektury. Srovnává pluginové technologie. Vybírá technologii, kterou aplikace Mantichora bude pouºívat.
ix
x
Obsah
Seznam obrázk·
xiii
Seznam tabulek
xv
1 Mantichora
1
1.1
O projektu Mantichora . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Cíle mé práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.3
P°edstavení týmu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2 Zásuvné moduly
3
2.1
Rozhraní a komponenty . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2
Druhy aplikací pouºívajících zásuvné moduly . . . . . . . . . . . . . . . .
3
2.2.1
Gracký software . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2.2
Mediální aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2.3
Vývojová prost°edí . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2.4
Webové prohlíºe£e . . . . . . . . . . . . . . . . . . . . . . . . . .
5
Výhody a nevýhody zásuvných modul· . . . . . . . . . . . . . . . . . . .
5
2.3
3 Technologie 3.1
3.2
3.3
7
Technologie dynamického volání knihoven . . . . . . . . . . . . . . . . . .
7
3.1.1
Architektura aplikace . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.1.2
Druhy knihoven . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.1.3
Typy knihoven . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.1.4
P°íklady . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.1.5
Výhody a nevýhody dynamického volání knihoven . . . . . . . . .
9
Technologie webových sluºeb . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.2.1
XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.2.2
Princip webové sluºby . . . . . . . . . . . . . . . . . . . . . . . .
9
3.2.3
Pouºití webových sluºeb . . . . . . . . . . . . . . . . . . . . . . .
11
3.2.4
Výhody a nevýhody webových sluºeb . . . . . . . . . . . . . . . .
11
OSGi Service Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
3.3.1
Historie a sou£astnost . . . . . . . . . . . . . . . . . . . . . . . .
11
3.3.2
Architektura Aplikace . . . . . . . . . . . . . . . . . . . . . . . .
12
3.3.3
Bundle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.3.4
Implementace OSGi Service Platform . . . . . . . . . . . . . . . .
14
3.3.5
Výhody a nevýhody OSGi Service Platform . . . . . . . . . . . .
14
4 Návrh Mantichory 4.1
15
Jeden samostatný po£íta£ . . . . . . . . . . . . . . . . . . . . . . . . . . xi
15
4.2
Kaºdý modul na samostatném po£íta£i . . . . . . . . . . . . . . . . . . .
5 Podrobn¥j²í popis vybrané technologie 5.1
5.2
Eclipse . . . . . . . . . . . . . . . . . . . 5.1.1 Verze Eclipse . . . . . . . . . . . 5.1.2 Pluginy v Eclipse . . . . . . . . . 5.1.3 Tvorba vlastního pluginu . . . . . 5.1.4 Úprava plug-inu . . . . . . . . . . 5.1.5 Testování plug-inu . . . . . . . . Eclipse RCP . . . . . . . . . . . . . . . . 5.2.1 P°íklady vyvinutých aplikací . . . 5.2.2 Vývoj RCP aplikace . . . . . . . 5.2.3 P°ídání plugin· do RCP aplikace 5.2.4 Extension a Extension Point . . . 5.2.5 Vytvo°ení produktu . . . . . . . .
17 . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
6 Záv¥r 6.1
Dal²í pokra£ování práce
15
17 17 18 19 21 21 24 24 24 26 27 29
31 . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
A Seznam zkratek
35
B Instalace
37
C Ukázky vizualizací
39
D Ukázky kódu
41
E Obsah p°iloºeného CD
43
xii
Seznam obrázk· 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Adobe Reader . . . . . . . . . . . . . . . . . . . . . . . . Winamp . . . . . . . . . . . . . . . . . . . . . . . . . . . Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . Firefox a jeho nainstalované zásuvné moduly . . . . . . . Architektura aplikace sloºená z dynamických knihoven . Princpip webové sluºby. P°evzdato z [WS] . . . . . . . . Vrstvy OSGi kontejneru. P°evzato z[18]. . . . . . . . . . ivotní cyklus bundle. P°evzato z [19]. . . . . . . . . . . Architektura aplikace Mantichora . . . . . . . . . . . . . Tvorba nového plug-inu . . . . . . . . . . . . . . . . . . . Tvorba nového plug-inu. Dal²í nastavení. . . . . . . . . . Tvorba nového plug-inu. Výb¥r ²ablony. . . . . . . . . . . Adresá°ová stuktura . . . . . . . . . . . . . . . . . . . . Úprava plug-inu v záloºce Overview. . . . . . . . . . . . Záloºka Extension. . . . . . . . . . . . . . . . . . . . . . Vytvo°ený plug-in Mantichora do Eclipse . . . . . . . . . Výkonný kód fyzikálního plug-inu. . . . . . . . . . . . . . BrainBox - simulace matematických a fykálních model·. Kalypso - Modelování a simulace hydrologických model·. Vytvo°ený projekt jednoduché RCP aplikace. . . . . . . . Vzhled Mantichory. . . . . . . . . . . . . . . . . . . . . . Run Congurations. . . . . . . . . . . . . . . . . . . . . Záloºka Dependencies. . . . . . . . . . . . . . . . . . . . Mantichora s fyzikálním pluginem . . . . . . . . . . . . . Tvorba produktu z vytvo°ené aplikace . . . . . . . . . . . Adresá° s vytvo°enou RCP aplikací. . . . . . . . . . . . .
xiii
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
4 4 5 6 7 10 13 13 16 20 21 22 22 23 23 24 24 25 25 26 26 27 28 28 29 30
xiv
Seznam tabulek 1
Srovnání statické a dynamické knihovny . . . . . . . . . . . . . . . . . .
xv
8
xvi
1
1
Mantichora
Slovem Mantichora se ozna£uje bájné zví°e, které ve svém díle vymyslel °ecký u£enec Plinius. Toto zví°e má lidskou tvá°, lví t¥lo a ocas ²tíra. Je nesmírn¥ rychlé. Jde tedy o zoologickou koláº, oblíbenou metodu u surrealismu. Spojením více v¥cí dohromady získáme v¥c novou s novými vlastnostmi[galerie]. 1.1
O pro jektu Mantichora
V této kapitole Vás seznámím s projektem Mantichora. Mantichora je moderní aplikace, která slouºí k simulaci d¥j· slune£ní soustavy. Leto²ním akademickým rokem 2008/2009 se za£ala spole£n¥ s vedoucím práce Ing. Ji°ím Chludilem z VUT FEL vyvíjet první verze. Jde o víceletý projekt. Dal²í generace budou na na²e práce navazovat a zdokonalovat je. Cílem prvního roku je podat základní stavební kámen pro budoucí generace. Na první verzi Mantichory se podílí n¥kolik bakalá°ských prací. Aplikace je sloºena z n¥kolika logických £ástí. Kaºdá logická £ást °e²í ur£itou problematiku. Logické £ásti m·ºeme nazvat komponenty. e²ení aplikace jako je Mantichora lze rozloºit na díl£í problémy. Díl£í problémy vy°e²it zvlá²´ a °e²ení spojit dohromady. Komponenty lze vym¥¬ovat a tak simulovat s r·znými nástroji. První verze Mantichory má tyto komponenty: sí´ovou matematicko - fyzikální editor model· grackou 1.2
Cíle mé práce
Já jako £len týmu Mantichora mám úlohu samostatnou. Cílem mé práce bylo pro budoucí generaci podat p°ehled o tom jak lze komponenty spojovat. Podat p°ehled o tom jaké technologie se v dne²ním po£íta£ovém sv¥t¥ pouºívají na spojování komponent. Z po£átku jsem v·bec nev¥d¥l na jakém principu takový software funguje. Za£al jsem postupn¥ nalézat software, který je sloºen z komponent a postupn¥ se propracovávat dál. Mým úkolem je nastudovat princip architektury komponentového softwaru. Podat p°ehled o tom, kde se pouºívá. Nalézt technologie nebo aplikace, které podporují tvorbu komponetového softwaru. Vytvo°it tutorialov¥ orientované p°íklady pro vybranou technologii. Navrhnout vlastní °e²ení pro aplikaci Mantichora. D·vod pro£ mám zpracovat tyto technologie pro budoucí generace je ten, ºe první verze Mantichory bude pouºívat technologii Web Services. Na této technologii pracuje systém Berli£ka. Systém Berli£ka je d°ív¥j²í projekt pana Ing. Ji°ího Chludila. Berli£ka je systém pro hodnocení studenta v p°edm¥tu. O tuto technologii se staral student vy²²ího ro£níku Marek Sacha. Z d·vodu, ºe Marek Sacha je studentem vy²²ího ro£níku a Berli£ka b¥ºí bez problém· bude pro první verzi pouºita technologie WebServices.
2 1.3
1
MANTICHORA
P°edstavení týmu
Jde o týmovou práci, kde kaºdý d¥lá jistou specickou funkci. Probíhaly pravidelné konzulace, které °e²ily problémy p°i vývoji. Hodn¥ d·leºitá je komunikace mezi £leny týmu. Mezi ur£itými £leny týmu je spolupráce velmi úzce svázána. Pro pot°eby celého týmu bylo z°ízeno diskusní forum na http://mantichora.a-fw.net/phpBB3/index.php a pro práci v týmu ú£et na www.assembla.com . Ing. Ji°í Chludil -Vedoucí projektu. ídí pravidelné konzultace. Schvaluje vývoj a navrhuje °e²ení. Václav Podlipný - ízení projektu. Strará se o diskusní fórum a komunika£ní nástroj assembla.com. Zden¥k Hák - Popsáno v kapitole 1.2. Ji°í Kopecký - Má na starost sí´ovou komponentu. M¥°í parametry sít¥ s moderními nástroji. Ji°í Nekola - Vyvíjí matematicko fyzikální komponentu. Implementuje fyzikální zákony. Ond°ej ermák - Navrhuje a implementuje editor model·. Michal Va¬kát - Implementuje grackou komponentu. Vladimír Blaºek - Implementuje grackou komponentu.
3
2
Zásuvné moduly
Tato kapitola dává p°ehled o softwaru, který pouºívá zásuvné moduly. Jsou zde popsány hlavní výhody a nevýhody aplikace sloºené ze zásuvných modul·. V této práci je zásuvný modul totoºný s modulem, komponentou a pluginem. Zásuvné moduly se v dne²ní dob¥ hodn¥ pouºívají. Zásuvný modul se skládá z po£íta£ového programu, který komunikuje s hostitelskou aplikací, aby poskytl jistou specickou funkci. Hostitelskou aplikací rozumíme nap°íklad webový prohlíºe£[2, 3]. 2.1
Rozhraní a komponenty
Tato kapitola stru£n¥ popisuje n¥které hlavní poznatky, které jsou uvedeny ve specikaci UML2. Tyto poznatky souvisí s návrhem softwaru. Metodika UML2 se zabývá i návrhem komponent. Podle ní navrhnout software sloºený z komponent znamená rozbití aplikace na sob¥ nezávislé sou£ásti[uml]. Na komunikaci mezi komponentami slouºí rozhraní. Cílem návrhu Mantichory zaloºené na komponentách je minimalizace vazeb v systému. Rozhraní p°edepisuje pojmenovanou mnoºinu ve°ejných funkcí. Rozhraní odd¥luje specikaci funkce od její implementace. Deklaruje vlastn¥ kontrakt, který m·ºe být realizován více t°ídami nebo jednou. Jestliºe chci vytvo°it exibilní komponentový software, k n¥muº lze p°ipojit jakokoliv novou implementaci pouºiji rozhraní[uml].Rozhraní tedy specikují dohodu. Dohoda m·ºe mít více implementací. 2.2
Druhy aplikací pouºívajících zásuvné moduly
V této kapitole se podíváme na to, jaké druhy aplikací vyuºívají zásuvné moduly.
2.2.1 Gracký software Grackých formát· je mnoho a roz²í°it software o poºadovaný formát pomocí staºení ur£itého zásuvného modulu je velmi dobrá my²lenka. P°íklady : Adobe Photoshop, Adobe InDesign, Adobe Reader na obrázku 1 , Adobe Ilustrator, Flash.
2.2.2 Mediální aplikace Mediální p°ehráva£e podporují zásuvné moduly proto, aby podporovaly r·zné formáty videa a hudby. P°íklad : Winamp na obrázku 2.
2.2.3 Vývojová prost°edí Zásuvné moduly zde slouºí pro podporu programovacích jazyk·. Zde musím uvést prost°edí Eclipse. M·ºete si tam naprogramavovat vlastní plug-in. Prost°edí si tak m·ºete
4
2
Obrázek 1: Adobe Reader
Obrázek 2: Winamp
ZÁSUVNÉ MODULY
2.3
Výhody a nevýhody zásuvných modul·
5
Obrázek 3: Eclipse upravit podle sebe. Eclipse je prost°edí sloºené ze samých plug-in·. V dne²nní dob¥ stále více populárn¥j²í. P°íklad: Eclipse na obrázku 3.
2.2.4 Webové prohlíºe£e Webové prohlíºe£e pouºívají zásuvné moduly k p°ehrávání videa. Podporují formáty Flash, Quick Time, Microsoft Silverlight a mnoho dal²ích. Firefox je multiplaformní webový prohlíºe£. B¥ºí na platformách Windows, Linux a MacOs. První zám¥r tv·rce bylo vytvo°it malý, rychlý a vysoce roz²i°itelný webový prohlíºe£[9]. Pomocí p°íkazu about : p l u g i n s se nám zobrazí p°ehled nainstalovaných zásuvných modul· viz. obrázek 4. Tyto zásuvné moduly lze najít v adresá°i C:\Program Files\Mozilla Firefox\plugins. V p°ípad¥ refoxu jde o souboru typu *.dll. 2.3
Výhody a nevýhody zásuvných modul·
Aplikace podporující zásuvné moduly má následující výhody[3]: Snadno si mohu stáhnou zásuvný modul, který není sou£ástí instalace. Je moºné pozd¥ji aplikaci roº²í°it o nové funkce.
6
2
ZÁSUVNÉ MODULY
Obrázek 4: Firefox a jeho nainstalované zásuvné moduly Vývoj aplikace je moºné rozd¥lit na party vývojá°· a pracovat tak odd¥len¥. Na vývoji je moºné pracovat i odd¥len¥ na r·zných místech sv¥ta. Systém je bez implementa£ních závislostí. Zásuvné moduly mají malou velikost a lze je jednodu²e distribuovat po internetu. Aplikace podporující zásuvné moduly má následující nevýhody: Systém je sloºitý.
7
Obrázek 5: Architektura aplikace sloºená z dynamických knihoven
3
Technologie
V této kapitole si vysv¥tlíme principy nejznám¥j²ích pluginových technologií.
3.1
Technologie dynamického volání knihoven
Knihovna je v programování funk£ní logický celek, který poskytuje sluºby pro programy. Jedná se o sbírku procedur, funkcí a datových typ·. V terminologii objektového programování obsahuje sadu t°íd. Knihovna poskytuje aplika£ní programové rozhraní(zvané API), které umoºnuje programu volat funkce poskytované touto knihovnou[10].
3.1.1 Architektura aplikace Zásuvný modul je p°edstavován t°ídou. Tato t°ída musí implementovat rozhraní jádra. Zásuvný modul umístíme do souboru .dll. Konktretní implementace bude p°edstavovat fukn£nost[11]. Jádro komunikuje s aplikací a moduly. Jádro je takový prost°edník. Musí mít modul zaregistrován, aby s ním mohl komunikovat. Aplikace kdyº n¥co chce tak nejd°íve volá jádro. Jádro se postará o zavolání p°íslu²ného modulu. Aplikace nejprve prohledá svoji sloºku na výskyt dll knihoven. Poté se pokusí ze v²ech nalezených vytvo°it instance a tyto instance otestuje. Architektura je na obrázku 5.
8
3
Kritérium Spojování s programem. P°i spust¥ní n¥kolika program· vyuºívajících stejnou knihovnu. P°enositelnost.
TECHNOLOGIE
Statická knihovna V dob¥ linkování. Je v pam¥ti opakovan¥.
Dynamická knihovna V dob¥ spu²t¥ní programu. Sdílena v pam¥ti.
Sta£í p°enést jeden soubor.
Je nutné zajistit instalaci v²ech knihoven. Moºné vým¥na jen v knihovn¥ kde chyba nastala. Del²í neº u statické. OS musí zajistit na£tení dynamické knihovny do pam¥ti zvlá²´ a provést realokaci.
Chyba v programu.
Je nutné sestavit celý program znovu.
Doba spust¥ní.
Krat²í neº u dynamické.
Tabulka 1: Srovnání statické a dynamické knihovny
3.1.2 Druhy knihoven Druhy knihoven se d¥lí podle pouºití na: sluºby opera£ního systému gracké funkce °ízení periférií v¥deckotechnické výpo£ty
3.1.3 Typy knihoven Typy knihoven se d¥lí podle typu na statické dynamické Statické knihovny jsou spojovány linkerem v dob¥ stav¥ní programu. Výsledek tohoto spojování je jeden spustitelný soubor. Výsledný soubor obsahuje tu £ást statické knihovny, která je nezbytná pro chod programu. P°ípony statické knihovny .lib nebo .a. P°i linkování programu s dynamickou knihovnou se do výsledného spustitelného souboru ukládají pouze tabulky odkaz· na symboly denované v dynamické knihovn¥. Pro chod programu je nutné mít naistalovánu p°íslu²nou dynamickou knihovnu. V¥t²ina opera£ních systém· umoº¬uje program·m na£ítat knihovny za b¥hu programu. P°ípony souboru .dll a .so[10].
3.2
Technologie webových sluºeb
9
3.1.4 P°íklady Platforma NET Framework se hodí k vytvá°ení aplikací modulárn¥. Poskytuje základ pro b¥h aplikací. Více o platform¥ NET framework naleznete zde [12]. Pro vývoj m·ºete pouºít nap°íklad Visual Studio.
3.1.5 Výhody a nevýhody dynamického volání knihoven Technologie dynamického volání knihoven výhody: Jednoduché na pouºívání. Vývojové studio Visual Studio má ²kolní licenci. Technologie dynamického volání knihoven nevýhody: V pr·b¥hu vývoje dochází ke zm¥nám rozhraní a pak se aplikace nedá pouºít. Moji týmový kolegové z Mantichory nemají zku²enosti s Visual Studio. 3.2
Technologie webových sluºeb
Webová sluºba je sluºba dostupná p°es HTTP protokol. Základem je XML. Po£átek sahá do vzniku sít¥ internet. D°íve se data p°ená²ela pomocí technologií RMI, CORBA a DCOM.
3.2.1 XML XML se pouºívá tam, kde chceme n¥co zpracovat. Strukturu dokumentu XML m·ºeme popsat: D°íve se dokument popisoval pomocí DTD. Nevýhoda takového popisu je, ºe nem·ºeme vytvo°it vlastní datové typy. Dnes se pro popis pouºívá XML schéma. Výhoda XML schématu je, ºe si m·ºeme vytvo°it vlastní datové typy. XML není st¥ºejní £ást této práce. Pro více informací se m·ºete podívat na [xml, xml2] kde jsou uvedeny podrobné informace.. Kaºdý tag musí být párový.
3.2.2 Princip webové sluºby Webová sluºba je sluºba dostupná p°es HTTP protokol nebo HTTP + SOAP. Sluºba komunikuje pomocí XML. Klient nep°edpokládá nic o vlastnostech webové sluºby. Klient po²le ºádost v XML webové sluºb¥. Webová sluºba musí um¥t XML zpracovat. Pro zpracování XML dokument· se pouºívají technologie SAX, DOM a JAXB. Pro odeslání výsledku se pouºívá také XML.
10
3
TECHNOLOGIE
Obrázek 6: Princpip webové sluºby. P°evzdato z [WS] Klient se p°ímo spojí s webovou sluºbou a pouºívá jí. Nejd°íve se ale spojí s UDDI registrem. Ten kdo chce komunikovat s webovou sluºbou tak se podívá do UDDI. Najde tam WSDL. To si stáhne. Poté komunikuje s webovou sluºbou. Prinpcip je vysv¥tlen na obrázku 6. SOAP je protokol na posílání zpráv ve formátu XML. WSDL je jazyk zaloºený na XML. Je to model pro popis webových sluºeb. WSDL dokumenty popisují co sluºba nabízí. V tomto dokumentu jsou popsány metody, parametry metod, po£et parametr· metod a návratové hodnoty metod. Je to takový interface. Dále je zde odkaz na uzel, který sluºbu realizuje. Nesmí chyb¥t port, na kterém je sluºba dostupná. Je to vlastn¥ denice protokolu pro uskute£n¥ní operace. UDDI poskytuje mechanismus, p°es který mohou klienti dynamicky hledat poºadované webové sluºby. Je to registr sluºeb. Obsahuje informace o nabízených sluºbách. Obsahuje : co - Jaká webová sluºba je dostupná. kdo - Informace o majiteli sluºby. kde - Na jaké adrese a na jakém portu je moºné sluºbu najít. technické informace - Obecné informace, které se týkají nap°íklad zpoplatn¥ní sluºby. Tento UDDI registr se na internetu moc nevyuºívá. Existují rmy, které ho pouºívají v rámci organizace. Na trhu se ho nepoda°ilo uchytit.
3.3
OSGi Service Platform
11
3.2.3 Pouºití webových sluºeb Na²e gracká komponenta se m·ºe zeptat na sou°adnice planety pomocí XML fyzikální komponenty,aby v¥d¥la kam planetu vykreslit. Dále se m·ºe zeptat na nato£ení motor· rakety, polohu druºice, velikost hv¥zd a celou dal²í °adu informací. To znamená ºe se musí navrhnout XML, ve kterém budou tyto informace obsaºené.
3.2.4 Výhody a nevýhody webových sluºeb Technologie webových sluºeb výhody: Snadno mohu propojit heterogenní systémy (C++, Java). Jazyková nezávislost. Klient nep°edpokládá nic o vlastnostech webové sluºby. Jednoduchost. P°ístupnost. Technologie webových sluºeb nevýhody: Zpracování hodn¥ náro£né na pam¥´ a procesor. P°i propojení systém· dochází k velkým latencím. Je to tedy pomalé. Nechodí se pro streamové pouºítí. Pro sepsání této kapitoly jsem pouºil slajdy [WS] a svoje vlastní zápisky z p°edná²ek [16]. 3.3
OSGi Service Platform
OSGi je specikace dynamického modulárního systému pro programovací jazyk Java[10]. Standart je udrºován mezinárodním konsorciem OSGi aliancí. OSGi umoºnuje instalaci a odebírání modul· za b¥hu, denuje ºivotní cyklus modulu a nabízí infrastrukturu pro spolupráci modul· skrze sluºby. V sou£astnosti je povaºován za nejvysp¥lej²í systém Javy [10]. Vývojové prost°edí je celé postavené na implementaci OSGi.
3.3.1 Historie a sou£astnost OSGi Aliance byla zaloºena v roce 1999. Cíl OSGI bylo vytvo°it n¥jaký zp·sob jak jednodu²e stav¥t JAVA aplikace. OSGI je tedy pouze specikace, kterou je moºno implementovat. Základní my²lenky komponetového softwaru : Z jednodu²ích komponent vznikne celek. Jde o takzvaný LEGO princip. Komponenta m·ºe mít více verzí a zp·sob· implementací. Aplikace bude vym¥nitelná na za b¥hu. Okolí nepozná zm¥nu.
12
3
TECHNOLOGIE
Nebude omezovat platformu pro b¥h aplikace. P·vodní zam¥°ení této ogranizace bylo vivinout základ systém· pro domácí spot°ebi£e. Tento systém se m¥l pouºívat v ledni£kách, mobilních telefonech, mp3 p°ehráva£ích, televizích a mikrovlných troubách. Tyto za°ízení m·ºeme nazvat embedded za°ízení. V sou£asné dob¥ se implementace specikace OSGi pouºívá v embedded za°ízeních, desktopových aplikacích nebo aplika£ních serverech. Mezi významné £leny OSGi aliance pat°í Sun, Nokia, IBM, Motorola, Siemens, SpringSource a Samsung. Jde tedy o £leny z r·zných obchodních oblastí.
3.3.2 Architektura Aplikace Specikace OSGi denuje, jak jádro má s moduly komunikovat. Denuje také komunikaci mezi jednotlivými moduly. Jádrem je OSGi kontejner. OSGi kontejner je platforma vybudovaná nad JVM, která poskytuje prost°edí pro b¥h modulárních aplikací [OSGi]. OSGi kontejner je rozd¥len do n¥kolika vrstev. To m·ºete vid¥t na obrázku 7. Popis jednotlivých vrstev : Execution Environment - Na této vrstv¥ dochází k b¥hu Java aplikací. Security vrstva - Stará se o bezpe£nostní mechanismy. P°ístup k sluºbám je povolen na základ¥ bezpe£nostního mechanismu. Module vrstva - Stará se o viditelnost jednotlivých t°íd a package. Life cycle vrstva - Denuje záleºitost b¥hu bundl·. Mezi n¥ pat°í p°idávání, odebírání, stopování a startování. Service vrstva - Je API pro °ízení sluºeb.
3.3.3 Bundle Celou aplikaci skládáme z bundl·. Bundle je JAR soubor. Denují v podstat¥ základní stavební kameny aplikace. Bundle má vlastnost Meta-info, která obsahuje. Jaká verze bundlu. Co bundle pot°ebuje. Jaké package pot°ebuje a jaké publikuje. Jakou platformu pot°ebuje. Bundle m·ºeme popsat ºivotním cyklem viz obrázek 8Bundle se m·ºe nacházet ve stavu, který je p°edepsán ºivotním cyklem. S bundlem pracuje OSGi kontejner [19]. Stavy bundlu : INSTALED - Kontejner nainstaloval bundle a ov¥°il jeho funk£nost.
3.3
OSGi Service Platform
13
Obrázek 7: Vrstvy OSGi kontejneru. P°evzato z[18]. RESOLVED - V tomto stavu se kontrolují závislosti. STARTING - Bundle se startuje metodou start ze t°ídy Activator. ACTIVE - Bundle provádí chod. STOPPING - Bundle se stopuje zavoláním metody stop ze t°ídy Activator. UNINSTALLED - Bundle je odinstalován. Pokud se chcete dozv¥d¥t podrobn¥ji o ºivotním cyklu nav²tivte stránky [20]. P°i zpracování ºivotního cyklu jsem £erpal také z [19]. obrazek 1.3 ivotní cyklus bundle.
Obrázek 8: ivotní cyklus bundle. P°evzato z [19].
14
3
TECHNOLOGIE
Celá aplikace je tedy sloºená z bundl·. Jeden bundle m·ºe pot°ebovat pro sv·j b¥h jiný bundle. Bundle m·ºe poºadovat n¥jakou specickou knihovnu z n¥jakého souboru. Celou aplikaci m·ºeme vyjád°it pomocí stromu. Druhy bundl· podle závislostí: Export bundle - Dává k dispozici bundly. Import bundle - Vyºaduje pro sv·j b¥h n¥jaké bundly. Class path - Bundle ºádá externí knihovnu. Pot°ebuje jí k b¥hu.
3.3.4 Implementace OSGi Service Platform Specikace OSGi má celou °adu implementací z t¥ch nejzajímav¥j²ích OSGi kontejner· nap°íklad:
OpenSource Eclipse Equinox Apache Felix Knopersh Concierge (pro mobily)
Komer£ní Prostat Knopersh Pro
3.3.5 Výhody a nevýhody OSGi Service Platform OSGi Service Platform výhody: Tato technologie je velmi vysoce podporována OSGi Aliancí. Má velmi ²iroké pole p·sobnosti v r·zných odv¥tvích. e²í problematiku aplikací sloºených s komponent tím, ºe poskytuje platformu pro jejich b¥h. OSGi Service Platform nevýhody: Nehodí se pro za£áte£níky svojí náro£ností a úrovní programování v jazyce Java P°i psaní této kapitoli jsem velkou inspiraci na²el v [21].
15
4
Návrh Mantichory
V této £ásti práce se budeme zabývat návrhem a architekturou aplikace Mantichora. Návrh vychází ze studie technologií, které se pouºívají p°i návrh softwaru sloºeného z plugin·. Celou aplikaci Mantichora bych umístil na jeden po£íta£. Zváºil jsem v²echny výhody a nevýhody a jeví se mi to jako nejlep²í varianta. Jádro je steºejní £ást mé práce a pro to navrhuji pouºít OSGi Service Platform. 4.1
Jeden samostatný po£íta£
Aplikaci Mantichora bych navrhl : Snadno roz²í°itelnou pomocí plugin·. Multiplatformní. Aplikace bude podporována na více OS. Celou aplikaci Mantichora bych implementoval na stran¥ klienta. Nezávislou na p°ipojení k internetu. Snadno p°enositelnou. Obrázek architektury aplikace Mantichora je na obrázku 9. Aplikaci bych navrhloval umístit na jeden po£íta£. Jádro by p°edstavovalo OSGi Service Platform, tedy OSGi framework. Vizualiza£ní modul, matematicko-fyzikální modul a sítový modul bych realizoval pomocí bundl·. Jak uº jsme napsali, aplikace Mantichora tedy bude pot°ebovat pro sv·j b¥h n¥jaké zázemí, n¥jaké prost°edí - platformu, které je zde p°edstaváno jádrem. Platformou zde rozumíme n¥jaké sotfwarové i hardwarové prost°edí, které nám zajistí bezproblémový chod aplikace. Na moduly existující kolem jádra jsou napojeny dal²í vn¥j²í £ásti. Vzniká zde zajímavá architektura, kterou si dovolím ozna£it vlastním jménem plugin na druhou. S t¥mito moduly uº nekomunikuje jádro ale modul sám. Napojení modulu na dal²í £ásti se dá snadno realizovat. Je to podbrobn¥ji popsáno v dal²í kapitole. 4.2
Kaºdý modul na samostatném po£íta£i
První verze Mantichory bude pouºívat pro komunikaci mezi moduly technologii webových sluºeb. Moduly tedy mezi sebou budou komunikovat pomocí XML. Jak uº jsme popsali je to technologie jednoduchá a umoºnuje propojit heterogenní systémy. Má v²ak jeden zásadní nedostatek a to je latence. Latencí rozumíme dobu mezi vysláním poºadavku a p°ijetím odpov¥di. M·ºe se nap°íklad stát, ºe gracký modul spustí simulaci na matematicko-fyzikálním modelu a gracký modul nebude dostátvat výsledky simulace dost rychlo na to, aby vizualizace probíhala plynule. Plynulost simulace je základní kritérium, aby v·bec bylo moºné simulaci shlédnout bez chyb. Dal²í nevýhodou je náro£nost zpracování XML. Distribuované systémy nebyly uvaºovány, nebo´ p°ekra£ují rámec této práce.
16
4
NÁVRH MANTICHORY
Obrázek 9: Architektura aplikace Mantichora
17
5
Podrobn¥j²í popis vybrané technologie
V této kapitole si více popí²eme a na p°íkladech vyzkou²íme vybranou technologii OSGi. Jako vyvojové prost°edí budeme pouºívat Eclipse, které implementuje specikaci OSGi a poskytuje prost°edí pro vývoj plugin· a RCP aplikací. Tento popsaný princip je nezbytný k pochopení a vybudování teoretické a praktické p°ípravy pro stav¥ní modulárních aplikací. 5.1
Eclipse
Eclipse je vývojové prost°edí ur£ené pro programování. Je napsané v jazyce Java. Eclipse 1.0 vzniklo v roce 2001. Firma IBM uvolnila toto vývojové prost°edí jako open source. Hodnota se odhadovala na 40 milión· dolar·. Pro tento projekt vznikl framework pro gracké prost°edí SWT. SWT je napsané v nativním kódu. Výhodou Eclipse je nativní vzhled[eclipse]. V sou£asnosti je dostupná verze 3.4 Ganymede. Eclipse je moºné stáhnout na stránkách www.eclipse.org. Eclipse se stal populární hlavn¥ díky moºnosti, jak lze jednodu²e roz²í°it funk£nost celé aplikace. Chci-li roz²í°it funk£nost nakopíruji p°íslu²ný .jar soubor do adresá°e plugins. Framework se pak postará o v²echno. Samoz°ejm¥, ºe .jar soubor musí spl¬ovat ur£itá pravidla, jinak funk£nost neroz²í°í. Tohle je velmi p¥kná my²lenka a Eclipse se stal díky ní populární.
5.1.1 Verze Eclipse Je moºné stáhnout n¥kolik verzí: Eclipse IDE for Java EE Developers Eclipse IDE for Java Developers Eclipse IDE C/C++ Developers Eclipse for RCP/Plug-in Developers Eclipse IDE for Java and Report Developers Eclipse Classic Verze Eclipse Classis obsahuje [23]: IDE prost°edí Modul JDT (Java Development Tools) pro tvorbu aplikací v jazyce Java modul PDE (Plugin Development Environment) umoºnující vytvá°et pluginy pro Eclipse
18
5
PODROBN
JÍ POPIS VYBRANÉ TECHNOLOGIE
Takto staºená verze lze samoz°ejm¥ dompl¬ovat o nové funkce. Do Eclipsu si ta m·ºeme stáhnout funkci, kterou chci. Tyto funkce jsou p°ímo uplatnitelné a vyuºitelné v aplikaci Mantichora. Následující vý£et davá p°ehled o tom jaké druhy plugin· si mohu stáhnout. Nejedná se o kompletní vý£et. Druhy plugin·: Databázové Editorové Gracké Sí´ové UML Web Services Aplika£ní server Web XML IDE Testovácí
5.1.2 Pluginy v Eclipse Tato kapikotala popisuje popisuje jak je reprezentován plugin v Eclipse. Plugin je reprezentován JAR souborem. JAR soubor je archivní soubor pro programovací jazyk Java zaloºen na ZIP kompresi. JAR soubory jsou nezávislé na platform¥. Typický JAR soubor obsahuje v²echny p°eloºené .class soubory, obrázky, kongura£ní soubory[Java]. Pluginy v Eclipse nazýváme bundle. Výhody JAR soubor·: V²echny t°ídy a ostatní pot°ebné náleºitosti programu v jednom souboru. Velká úspora místa na disku. Zmen²ení £asu p°enosu p°es HTTP protokol. Zjednodu²ení spu²t¥ní. Bezpe£nost, moºnost roz²i°ování. Pro práci se soubory se pouºívá program jar.exe [Java]. Pomocí tohoto programu vytvá°íme JAR soubory. Má n¥kolik p°epína£·. P°epína£e ur£ují p°esný význam provedené operace. N¥komu v²ak vyhovuje psát p°íkazy na vytvo°ení místo klikání ve vývojovém nástroji.
5.1
19
Eclipse
Druhy p°epína£· a jejich význam : c - Vytvo°í nový archiv. t - Vypí²e obsah archivu. v - Vypisuje informace. f - Ozna£uje výstup do souboru. x - Rozbalí v²echny soubory v archivu. Základní operace jsou: Vytvo°ení archivu j a r c f jméno_archivu jmena_soubor· Výpis obsahu archivu jar t f archiv . jar nebo jar vtf archiv . jar Rozbalení archivu jar xf archiv . jar Soubor manifestu je d·leºítý soubor. Obsahuje metainformace o archivu. Umoºní nám spustit aplikaci bez rozbalování archivu. V manifestu je uvedena verze. Tím pádem se dá snadno zajistit, aby aplikace m¥la co nejnov¥j²í verzi. Je moºné si do eclipse stáhnout plug-in, který kontroluje verze plug-inu, a p°i zji²t¥ní dostupnosti nové verze nabídne aktualizaci. Ukázka zdrojového kódu manifestu : M a n i f e s t −V e r s i o n : 1 . 0 Bundle−M a n i f e s t V e r s i o n : 2 Bundle−Name : Fyzika Plug −i n Bundle−SymbolicName : c z . mantichora . f y z i k a ; s i n g l e t o n := t r u e Bundle−V e r s i o n : 1 . 0 . 0 Bundle−A c t i v a t o r : c z . mantichora . f y z i k a . A c t i v a t o r Bundle−Vendor : Mantichora tym Require −Bundle : o r g . e c l i p s e . ui , o r g . e c l i p s e . c o r e . runtime Bundle−RequiredExecutionEnvironment : J2SE − 1.5 Bundle− A c t i v a t i o n P o l i c y : l a z y
5.1.3 Tvorba vlastního pluginu Do Eclipsu je moºné si vytvo°it vlastní plugin. Tvorba prochází t°emi základními vývojovými stádii. Nejd°íve plug-in vytvo°íme, poté upravíme a nakonec otestujeme. Vytvo°ený plugin lze pak díky licenci distribuovat s Eclipse. Nad Eclipse si tak mohu vytvo°it vlastní aplikaci. Jak vytvo°it vlastní plugin do Eclipse to si te¤ ukáºeme. Je
20
5
PODROBN
JÍ POPIS VYBRANÉ TECHNOLOGIE
Obrázek 10: Tvorba nového plug-inu pot°eba si stáhnout verzi Eclipse for RCP/Plug-in Developers, která má 176 MB. Do základní verze Eclipse je také moºné stáhnout plugin, který umoºní tvorbu plugin·. Provádí se to v menu Help -> Software Updates. Po nainstalování m·ºeme za£ít s tvorbou. Klikneme na File->New->Project z hlavního menu. Rozbalíme Plug-in Development a vybereme Plug-in Project. Zobrazí se nám následující okno, které je uvedeno na obrázku 10. Zadáme název projektu a ostatní nem¥níme. Klíkneme na tla£ítko dal²í. Zobrazí se nám okno na obrázku 11. Toto okno(na obrázku 11) nám umoºnuje nastavit d·leºíté parametry plug-inu. Plug-in ID - Jedine£ný identikátor plug-inu. Plug-in Version - Verze plug-inu. Plug-in name - Jméno plug-inu. Plug-in provider - Poskytovatel plug-inu. Vyplnil jsem svoje jméno. Activator - Generuje t°ídu cz.Mantichora.fyzika.Activator, která ovládá b¥h pluginu. This plug-in will make contributions to the UI - Za²krneme jestli chceme roz²í°it stávající gracké prost°edí. Rich Client Application - íkáme zda chceme vytvo°ít plug-in nebo RCP aplikaci.
5.1
21
Eclipse
Obrázek 11: Tvorba nového plug-inu. Dal²í nastavení. Klikneme na tla£ítko dal²í. Zobrazí se nám to co na obrázku 12. Vybereme ²ablonu plug-inu Hello, World. Máme k dispozici i dal²í ²ablony. V dal²ím okn¥ vepí²eme název package, jméno t°ídy a zprávu. Klepneme na tla£ítko Finish. Vytvo°í se nám jednoduchý plug-in, který roz²i°uje fukn£nost Eclipse. Vybereme ²ablonu plug-inu Hello, World. Máme k dispozici i dal²í ²ablony. V dal²ím okn¥ vyplníme název package, jméno t°ídy a zprávu. Klepneme na tla£ítko Finish. Vytvo°í se nám jednoduchý plug-in, který roz²i°uje fukn£nost Eclipse. Vytvo°enou adresá°ovou strukturu plug-inu je moºné vid¥t na obrázku .
5.1.4 Úprava plug-inu Vytvo°ený plug-in podle ²ablony m·ºeme modikovat. V záloºce Overview dostáváme základní informace o plug-inu a pomocí této záloºky je moºné plug-in m¥nit. Vidíme na obrázku 14. Klikneme na záloºku Extensions, která je na obrázku 15, a m·ºeme vytvo°it v²e podle na²ich p°estav. Provedené zm¥ny musíme uloºit kliknutím na File -> Save z hlavního menu.
5.1.5 Testování plug-inu Vytvo°ený plug-in otestujeme. Klikneme na záloºku Overview. Klikneme na odkaz Launch an Eclipse application, který je pod poloºkou Testing. Spustí se nám tedy aplikace Eclipse roz²í°ená o ná² fyzikální plug-in. V hlavním menu na obrázku 16 je vid¥t
22
5
PODROBN
JÍ POPIS VYBRANÉ TECHNOLOGIE
Obrázek 12: Tvorba nového plug-inu. Výb¥r ²ablony.
Obrázek 13: Adresá°ová stuktura
5.1
23
Eclipse
Obrázek 14: Úprava plug-inu v záloºce Overview.
Obrázek 15: Záloºka Extension.
24
5
PODROBN
JÍ POPIS VYBRANÉ TECHNOLOGIE
Obrázek 16: Vytvo°ený plug-in Mantichora do Eclipse
Obrázek 17: Výkonný kód fyzikálního plug-inu. vytvo°ená poloºka . Po kliknutí na poloºku Raketa se spustí metoda run ze t°ídy FyzikálniStroj.java, která denuje chování (obrázek 17 )námi vytvo°eného plug-inu. Test ukon£íme kliknutím na File->Exit z hlavního menu. 5.2
Eclipse RCP
Eclipse RCP Eclipse je open-source platforma pro vývoj vizuáln¥ bohatých aplikací. Tato platforma je zaloºená na OSGI standartu. Základní kongurace je postavena z n¥kolika plug-in·. Pomocí t¥chto plug-in· m·ºeme vyvíjet RCP aplikace. Výhodou vytvo°ených aplikací je nativních vzhled na platformách Windows, Linux a MacOs [6].
5.2.1 P°íklady vyvinutých aplikací Doporu£uji Eclipse RCP pro tvorbu Mantichory. V této kapitole uvádím p°íklady Open Source aplikací, které byly vytvo°ené pomocí platformy RCP. Nesmírná výhoda je propracovanost a podpora ze strany vývojá°· Eclipse RCP. Toto °e²ení a vyvíjení pomocí této platformy se mi jeví jako nejlep²í. Neza£ínám na zelené louce, ale vyuºívám práci jiných programátor·. Bez této podpory bych projekt mohl jen t¥ºko realizovat. Azareus - BitTorrent klient (nástroj pro distribuci soubor·). BrainBox - Simulace matematických a fyzikálních model·. Obrázek 18. Bioclipse - Simulace, analýza a vizualizace modelul a bílkovin. 2D a 3D vizualizace malých molekul. jCommander - Manaºer soubor·. Kalypso - Modelování a simulace hydrologických model·. Obrázek 19. My Tourbook - Analýza dat z GPS p°ístroje. Zobrazení statictických údaj· ze zájezd·.
5.2.2 Vývoj RCP aplikace Zde bude popsán návod jak vytvo°it jednoduchou RCP aplikaci. V Eclipse klikneme na FILE -> New -> Project. Vybereme Plug-in Project. Zobrazí se nám okno jako na obrázku 10. Zadáme název projektu nap°íklad cz.mantichora.jadro.rcp a klikneme na Next. V dal²ím okn¥ obrázek 11 je velmi d·leºíté aby jsme vybrali, ºe
5.2
Eclipse RCP
Obrázek 18: BrainBox - simulace matematických a fykálních model·.
Obrázek 19: Kalypso - Modelování a simulace hydrologických model·.
25
26
5
PODROBN
JÍ POPIS VYBRANÉ TECHNOLOGIE
Obrázek 20: Vytvo°ený projekt jednoduché RCP aplikace.
Obrázek 21: Vzhled Mantichory. chceme vytvo°it rich client application. Vybereme Yes. Klikneme na Next. V ²ablon¥ vybereme Hello RCP a klikneme na Finish. Vytvo°í se nám projekt pomocí jednoduché ²ablony jako je na obrázku 20. Vyzkou²íme, jak vypadá vytvo°ená aplikace. V záloºce MANIFEST.MF klikneme Launch an Eclipse Application. Vzhled Mantichory na obrázku 21.
5.2.3 P°ídání plugin· do RCP aplikace Vytvo°enou RCP aplikaci Mantichora m·ºeme doplnit o libovolný po£et plug-in·. Jak se tvo°í plug-in bylo popsáno v kapitole 5.1.3. Klikneme na Run -> Run Congurations a p°epneme do záloºky Plug-ins. Kongura£ní okno je na obrázku 22. Vybereme na²í aplikaci cz.mantichora.jadro.fyzika a ná² plugin cz.mantichora.fyzika. Potvrdíme kliknutím na Aply a zav°eme. Dal²ím krokem je nastavení závislostí tzv. Dependencies. V projektu na²í RCP ap-
5.2
27
Eclipse RCP
Obrázek 22: Run Congurations. likace dvakrát klikneme na pluxin.xml a potom klikneme na záloºku Dependencies. Je zde vid¥t, ºe na²e aplikace uº závisí na pluginech org.eclipse.ui a org.eclipse.runtime . Tyto pluginy jsou základní a poskytují základní prost°edky pro b¥h celé aplikace. Mezi základní prost°edky pat°í nap°íklad t°ídy realizující vzhled aplikace. Bez nich by to nefungovalo. Mantichoru m·ºeme doplnit o fyzikální modul a °íci, ºe na n¥m závisí. V p°ípad¥ nedostupnosti modulu nám program ohlasí chybu, ºe nenalezl fyzikální modul. Záloºka Dependencies je na obrázku 23. Nejd°íve klikneme na Add a vybereme plugin, který chceme p°idat. Te¤ m·zeme aplikaci ostestovat. Klikneme pravým tla£ítkem na projekt. Vybereme Run As -> Eclipse Application. Výsledek si m·ºete prohlédnout na obrázku 24. Mantichora je spu²t¥ná jako RCP aplikace a obsahuje jeden fyzikální plugin.
5.2.4 Extension a Extension Point Extension a Extension Point jsou mechanismy pomocí nichº m·ºe plugin p°ijmout nabídku na roz²í°ení a n¥jaký plugin m·ºe roz²í°ení registrovat. Kdyº n¥jaký plugin nabízí bod roz²í°ení mluvíme o Extension Pointu. Takový plugin nabízí sluºby a jiný plugin si je m·ºe registrovat. P°íklad takového pluginu je nap°íklad plugin org.eclipse.ui. V na²í RCP aplikaci Mantichora jsme pouºili plugin org.eclipse.ui. To znamená, ºe jsme p°ipravili Extension pro Extension Point pluginu org.eclipse.ui. Plugin m·ºe vytvo°it sv·j Extension Point. Ke kaºdému Extension Point je p°edepsané XML schema. Dá se pohodln¥ vytvo°it jak ru£n¥ dopsaním kódu v plugin.xml tak i v grackém editoru. Ukázka deklarace fyzikálního pluginu, který denuje Extension Point : <e x t e n s i o n −p o i n t
28
5
PODROBN
JÍ POPIS VYBRANÉ TECHNOLOGIE
Obrázek 23: Záloºka Dependencies.
Obrázek 24: Mantichora s fyzikálním pluginem
5.2
29
Eclipse RCP
Obrázek 25: Tvorba produktu z vytvo°ené aplikace i d=" f y z i k a e x t e n s i o n p o i n t " name=" f y z i k a l n i r o z s i r e n i " schema="schema / m y e x t e n s i o n p o i n t . exsd "/> Na tento Extension Point se dá registrovat : <e x t e n s i o n p o i n t="c z . mantichora . f y z i k a . f y z i k a e x t e n s i o n p o i n t "> e x t e n s i o n >
5.2.5 Vytvo°ení produktu Jde nám o vytvo°ení produktu. Abychom nemuseli spou²t¥t tuto jednoduchou aplikaci p°es Eclipse vytvo°íme produkt. Klikneme pravým tla£ítkem na project a vybereme New> Product Conguration. Vybereme sv·j projekt a zadáme jméno produktu. Vybereme moºnost Use launch conguration obrázek jako na obrázku 25. Klikneme na Finish. Otev°e se nám product editor. V n¥m nadenujeme produkt kliknutím na tla£ítko New. Zkotrolujeme údaje. Dáme Finish. Uloºíme File->Save z hlavního menu. Produkt není synchronizovaný. Pro synchronizaci klikneme v ºáloºce Overview v hlavi£ce Testing na Synchronnize. Nyní m·ºeme produkt spustit kliknutím na Launch an Eclipse application. Cílem vytvo°ení produktu je, aby beºný uºivatel mohl spustit aplikaci bez p°echozích znalostí Javy nebo Eclipse. Pro vytvo°ení aplikace spustitelné mimo Eclipse klikneme na soubor .product v projektu. Jméno je podle toho jaké jsme si vytvo°ili. V hlavi£ce
30
5
PODROBN
JÍ POPIS VYBRANÉ TECHNOLOGIE
Obrázek 26: Adresá° s vytvo°enou RCP aplikací. Exporting klikneme na odkaz Eclipse Product export wizard. Zadáme adresá° kam se má na²e aplikace vytvo°it. Dáme Finish. V adresá°i, který jsme zadali se nahraje celý ná² vytvo°ený projekt. Defaultní hodnota spustitelného souboru je eclipse.exe. Takto vytvo°enou aplikaci lze distribuvat.
31
6
Záv¥r
Cíl této práce bylo prozkoumat architekturu zásuvných modul·. Dále nalézt vhodné technologie pro jejich tvorbu a ty porovnat formou re²erºe. Z re²erºe jsem si pro velké výhody vybral technologii Eclipse RCP, která slouºí pro vývoj modulárních aplikací. Doporu£uji pro budoucí generace Mantchory tento framework pouºít. Celý postup vývoje plugin· a RCP aplikací jsem dokumentoval na p°íkladech. Tyto p°íklady by m¥li vézt k snadn¥j²ímu pochopení celé problematiky a rychlému zapo£etí vývoje. I kdyº se aplikace Mantichora svým po£tem plugin· jeví jako malá aplikace, po£ítá se v budoucích letech s jejím roz²í°ením. Celou podporu pro psaní plugin· je nemoºné napsat celou. P°ikláním se k vyuºití frameworku Eclipse RCP. Nesmírná výhoda je systém propracovaných nápov¥d a kontextových menu. Dále nap°íklad i vyuºití grackého frameworku SWT. Bez této podpory by se projekt Mantichora nedal realizovat. 6.1
Dal²í pokra£ování práce
Dal²í £lenové týmu by nap°íklad mohli prozkoumat vývojové prost°edí Netbeans IDE, jestli by se nedalo pouºít pro vývoj modulárních aplikací. P°ímá podpora stav¥ní modulárních aplikací by prý m¥la být v Jave 7. Aplikace Mantichora by tak nemusela pouºívat podporu, kterou jsem doporu£il. Pro komunikaci mezi jednotlivými moduly je pot°eba navrhnout komunika£ní schema, které by bylo zaloºeno na Extension Pointech. S tím bezprost°edn¥ souvisí návrh nebo vyuºití XML parseru. Je také moºné napsat vlastní framework, který by p°ímo slouºil pro Mantichoru, ale to nedoporu£uji.
32
6
ZÁV
R
REFERENCE
33
Reference [Java] Pavel Herout - JAVA gracké uºivatelské prost°edí a £e²tina [2]
http://cs.wikipedia.org/wiki/Plugin
[3]
http://en.wikipedia.org/wiki/Plugin
[4]
http://www.eclipse.org/
[5]
http://programujte.com/index.php
[6]
http://nb.vse.cz/~zelenyj/it380/eseje/xmalj35/EclipseRCP.htm
[galerie] http://www.rabasgallery.cz/ [uml] UML2 a unikovaný proces vývoje aplikací. Pr·vodce analýzou a návrhem objektov¥ orientovaného softwaru. Auto°i Jim Arlow a Ila Neustadt. [9]
http://cs.wikipedia.org/wiki/Firefox
[10] http://cs.wikipedia.org/wiki/Knihovna [11] http://www.vbnet.cz/clanek81-jak_rozsirit_aplikaci_o_zasuvne_moduly_plug_in_.aspx [12] http://cs.wikipedia.org/wiki/.NET [xml] http://cs.wikipedia.org/wiki/XML [xml2] http://www.w3schools.com/xml/default.asp [WS] Slajdy z p°edm¥tu technologie XML.Katedra softwarového inºenýrství, MFF UK, Praha [16] Technologie programování v jazyku Java. P°edná²ející Ing. Zden¥k Troní£ek, Ph.D. [OSGi] http://cs.wikipedia.org/wiki/OSGi [18] http://aneeshkumarkb.blogspot.com/ [19] http://www.ralfebert.de/ [20] http://www.osgi.org/Specications/HomePage [21] http://www.avc-cvut.cz/ P°edná²ka o OSGi Michal Malohlava [eclipse] www.eclipse.org [23] http://www.root.cz/ [24] http://www.eclipse.org/community/rcpos.php
34
REFERENCE
35
A
Seznam zkratek
API
Application Programming Interface
IDE
Integrated Developement Environment
DTD
Document Type Denition, (£esky Denice typu dokumentu) je jazyk pro popis struktury XML
SAX
Simple API for XML
DOM
Document Object Model
JAXB
Java Architecture for XML Binding
RMI
Remote Method Invocation
CORBA
Common Object Request Broker Architecture
DCOM
Distributed Component Object Model
SOAP
Simple Object Access Protokol
WSDL
Web Services Description Language
UDDI
Universal Description Discovery and Integration
OSGi
Open Service Gateway initiave
JVM
Java Virtual Machine
RCP
Rich Client Platform
36
A
SEZNAM ZKRATEK
37
B
Instalace
38
B
INSTALACE
39
C
Ukázky vizualizací
40
C
UKÁZKY VIZUALIZACÍ
41
D
Ukázky kódu
42
D
UKÁZKY KÓDU
43
E
Obsah p°iloºeného CD