Interaktívny simulátor DynaSim: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
d
 
(6 medziľahlých úprav od 2 ďalších používateľov nie je zobrazených)
Riadok 5: Riadok 5:
 
Ing. Juraj Ďuďák|
 
Ing. Juraj Ďuďák|
 
2009/2010
 
2009/2010
|Diplomový projekt
+
|Diplomová práca
 
|Mechatronika
 
|Mechatronika
 
}}
 
}}
 +
{{Praca_uvod|1|Interaktívny simulátor DynaSim|Platforma NetBeans|Vizuálna časť programu DynaSim|Dátová časť simulačných komponentov|Okná a toolbary programu DynaSim|Funkčná časť programu DynaSim}}
 +
__TOC__
 +
 +
{{Abstrakt
 +
|Práca sa zaoberá budovaním frameworku interaktívneho simulačného programu na platforme NetBeans. V práci je rozobratý spôsob tvorby vizuálneho rozhrania za použitia Visual Library API, ďalej spôsob tvorby jednotlivých simulačných komponentov a ich dátovej štruktúry za pomoci Nodes API, tvorba užívateľského rozhrania a nakoniec implementácia simulačného algoritmu. Jednotlivé simulačné komponenty sa môžu do programu pridávať dodatočne a sú založené na popise XML a SVG súborov.
 +
|This graduation thesis deals with building of framework for interactive simulation program based on NetBeans platform. This thesis deals with approach to making visual interface using Visual Library API, approach to making individual simulation components and their data structure using Nodes API, making of user interface and finally implementation of simulation algorithm. Individual simulation components can be added to the program additionally and are based on XML and SVG definition.
 +
}}
 +
 +
'''Úvod'''
 +
 +
V súčasnej dobe existuje množstvo komerčne dostupných produktov zameraných na simulácie a riadenie technologických procesov, ako sú napr. LabView, Simulink ako súčasť Matlab-u a pod. Mnohé z týchto produktov majú za sebou dlhú dobu vývoja a sú úspešne nasadzované v systémoch riadenia technologických procesov. Pre bežných užívateľov, alebo z hľadiska procesu výučby, majú tieto komerčné produkty určité nedostatky vyplývajúce z ich podstaty. Sú to uzatvorené systémy, do ktorých užívateľ nemá prístup, môže sa pohybovať iba v rozmedzí určitých „mantinelov“, ktoré mu vymedzili vývojári produktu. Užívateľ nemá možnosť verifikovať, či upravovať implementovaný simulačný algoritmus v simulačných komponentoch, takisto ako nemá možnosť tvorby vlastných komponentov. Neumožňujú prácu na viacerých platformách, ak existuje distribúcia pre inú platformu, treba si na ňu zvlášť zakúpiť licenciu. V neposlednej rade je nepriaznivým faktorom takýchto komerčných produktov aj prehnane vysoká cena.
 +
 +
Pre to sa zrodila myšlienka vytvoriť simulátor, ktorý by tieto nevýhody odstránil. DynaSim je interaktívny simulátor postavený na platforme NetBeans, vytvorený v programovacom jazyku Java. Tým spája výhody objektového programovania, multiplatformovosti s možnosťou využitia prepracovaných knižníc prakticky zo všetkých oblastí informačných technológií. DynaSim dáva možnosť užívateľovi interaktívne zasahovať do simulačného procesu vďaka integrácii interaktívnych simulačných komponentov. Vďaka využitiu rôznych NetBeans modulov má užívateľ možnosť nastaviť si vlastné užívateľské rozhranie podľa potreby. Veľkou výhodou je aj možnosť pridávania vlastných simulačných komponentov, ktoré sa skladajú z grafickej časti popísanej SVG súborom, dátovej časti popísanej jednoduchým XML súborom a Java .class súborom, ktorý opisuje simulačný algoritmus komponentu. Oproti komerčným produktom má samozrejme najväčšiu výhodu v tom, že je zadarmo a je open-source. Užívateľ môže kedykoľvek nahliadnuť do zdrojového kódu, robiť v programe úpravy podľa vlastnej potreby. Tak isto jednoduché je nahliadnuť do zdrojového kódu jednotlivých simulačných komponentov.
 +
V práci je rozobratý postup tvorby rich-client aplikácie postavenej na platforme Netbeans, využitie rôznych štandardných knižníc tejto platformy na vybudovanie základného frameworku pre simulátor, ako aj implementácia základných simulačných komponentov.
 +
 +
 +
=Platforma NetBeans=
 +
Platforma NetBeans je framework pre Swing aplikácie. NetBeans bol pôvodne vyvíjaný ako študentský projekt na Karlovej Univerzite v Prahe. Projekt kúpila v roku 1999 spoločnosť Sun a v roku 2000 z neho spravila open-source projekt.  Platforma poskytuje pre aplikácie na nej vyvíjané ukladanie stavu, prepájanie akcií s menu položkami, toolbary, klávesové skratky, či správu okien a mnohé ďalšie veci, ktoré predtým musel každý vývojár písať samostatne.
 +
NetBeans platforma poskytuje spoľahlivú a flexibilnú aplikačnú architektúru. Aplikácie postavené na tejto platforme nemusia nutne vypadať ako NetBeans IDE, ktoré je tiež postavené na nej. Využitím NetBeans platformy je možné ušetriť mnohé mesiace vývoja.
 +
Za posledných niekoľko rokov sa zvýšila popularita ''rich-client'' desktopových platforiem. Tento trend viedli práve NetBeans platforma a Eclipse RCP. Kým Eclipse RCP je založená na  SWT a JFace, čo sú nové neštandardné štýly a koncepty, platformna NetBeans je kompletne závislá od štandardných Java API s použitím AWT a Swing, čím plne integruje pôvodný koncept Java SE.
 +
 +
==Charakteristiky Rich Client Platformy==
 +
Rich-client platforma je aplikačné prostredie – základ desktopových aplikácií. Väčšina desktopových aplikácií má podobné vlastnosti ako sú rôzne menu, toolbary, status bary, zobrazovanie dát, ukladanie a nahrávanie užívateľsky špecifických dát a pod. Na tieto a ďalšie typické vlastnosti klientských aplikácií rich-client platforma poskytuje framework, s ktorým sa tieto vlastnosti dajú jednoducho spojiť dokopy. Framework takéhoto druhu sa zameriava na konfigurovateľnosť a rozšíriteľnosť aplikácie.
 +
Najdôležitejším aspektom rich-client platformy je jej architektúra. Aplikácie založené na rich-client platforme sú písané vo forme modulov, v ktorých sú logicky koherentné časti aplikácie izolované.
 +
Okrem Modularity ponúkanej rich-client architektúrou, ktorá poskytuje vysokú mieru robustnosti a hodnoty pre koncového užívateľa, poskytuje aj ďalšie výhody a to:
 +
*Zníženie vývojového času
 +
*Konzistentnosť užívateľského rozhrania
 +
*Možnosť updatovania
 +
*Platformovú nezávislosť
 +
*Znovupoužiteľnosť a spoľahlivosť
 +
 +
'''Zníženie vývojového času''' – Rich-client platforma poskytuje viacero API pre vývoj desktopových aplikácií. Vďaka znovupoužiteľnosti mnohých preddefinovaných komponentov sú vývojári schopní koncentrovať sa na funkčnú logiku aplikácie.
 +
 +
'''Konzistentnosť užívateľského rozhrania''' – Rich-client platforma poskytuje framework pre zobrazenie užívateľského rozhrania a obzvlášť sa stará o konzistentnosť, prístupnosť a použiteľnosť.
 +
 +
'''Možnosť updatovania''' – Za použitia rich-client platformy je možné rýchlo a efektívne distribuovať nové alebo updatované moduly koncovým užívateľom. Updaty môžu byť distribuované a inštalované formou modulov, to znamená, že nové nekonfliktné prvky aplikácie môžu byť vyvíjané nezávisle druhým vývojárskym týmom.
 +
 +
'''Platformová nezávislosť''' - Rich-client platformy sú založené na medzinárodných štandardoch a znovupoužiteľných komponentoch. To znamená, že Java aplikácie na nich postavené sú automaticky spustiteľné na rôznych operačných systémoch ako sú Windows, či Linux, ak majú k dispozícii Java Runtime Environment.
 +
 +
'''Znovupoužiteľnosť a spoľahlivosť''' – Rich-client platformy poskytujú širokú škálu modulov a funkcií, ktoré môžu byť využité vo vytváranej aplikácii. Ak modul úplne nezodpovedá požiadavkám aplikácie, je možné ho použiť ako počiatočný bod a následne ho rozšíriť alebo zmeniť podľa potreby. Keďže väčšina platforiem dáva k dispozícii aj svoje zdrojové kódy, niekedy môže byť výhodnejšie zmeniť alebo rozšíriť platformu samotnú. Tieto faktory implikujú veľkú mieru spoľahlivosti a voľnosti.
 +
 +
==Charakteristiky Platformy NetBeans==
 +
Platforma NetBeans ponúka okrem bežných výhod rich-client platformy viacero frameworkov a niekoľko ďalších špecifík, ktoré môžu byť užitočné pre niektoré aplikácie. Za zmienku stojí napríklad:
 +
*Framework pre užívateľské rozhranie
 +
*Data editor
 +
*Customization display
 +
*Wizard framework
 +
*Data systémy
 +
*Medzinárodnosť
 +
*Help system
 +
 +
'''Framework pre užívateľské rozhranie''' – Okná, menu, toolbary a daľšie komponenty sú poskytované platformou. To znamená, že sa vývojár môže sústrediť na špecifické úlohy, čo zmenší dĺžku kódu a zníži náchylnosť na chybu. Celý užívateľský interface v platforme NetBeans je založený na AWT/Swing.
 +
 +
'''Data Editor''' – je editor z NetBeans IDE a môžu ho používať aj iné aplikácie. Nástroje a funkčnosť editora môžu byť rýchlo a ľahko rozšírená a adaptovaná na požiadavky aplikácie.
 +
 +
'''Customization display''' – Displej s užívateľsky a aplikačne špecifickými nastaveniami je potrebný v každej aplikácii.
 +
 +
'''Wizard Framework''' – Platforma NetBeans ponúka jednoduché nástroje na tvorbu rozšíriteľých a user-friendly asistentov, ktorí budú užívateľa sprevádzať cez komplexné kroky v aplikácii.
 +
 +
'''Data Systémy''' – U platformy NetBeans, dáta môžu byť lokálne alebo prístupné cez FTP, CVS, databázu, alebo XML súbor. Dátový prístup z jedného modulu je transparentný pre všetky ostatné moduly vďaka použitiu abstrakcie. Samotný dátový prístup je riešený pomocou NetBeans API.
 +
 +
'''Medzinárodnosť''' – Platforma NetBeans poskytuje triedy a metódy na preklad JavaHelp a ďalších zdrojov do cudzích jazykov.
 +
 +
'''Help System''' – Pomocou štandardného JavaHelp systému, NetBeans platforma ponúka centrálny systém pre integráciu a zobrazovanie nápovedy pre koncového užívateľa. Samostatné moduly môžu pridať ich vlastné nápovedy do help systému aplikácie.
 +
 +
==Architektúra Platformy NetBeans==
 +
Základným stavebným blokom platformy NetBeans je modul. Modul je kolekcia funkčne súvisiacich tried, spoločne s popisom rozhraní ktoré modul poskytuje a popisom ďalších modulov, ktoré potrebuje na to aby fungoval. Celá platforma NetBeans, rovnako ako aj aplikácie na nej postavené sú rozdelené do modulov. Tie sú nahraté jadrom Platformy NetBeans, ktoré sa nazýva NetBeans runtime container. NetBeans runtime container loaduje aplikačné moduly dynamicky a automaticky a následne je aj zodpovedný za beh aplikácie. V tomto prípade je NetBeans IDE dobrým príkladom modulárnej rich-client aplikácie. Funkčnosť a charakteristiky IDE ako napríklad podpora jazyku Java alebo editor zdrojového kódu , sú tvorené formou modulov postavených na Platforme Netbeans. To so sebou prináša možnosť rozšíriť aplikáciu o ďalšie moduly a možnosť adaptácie na špecifické požiadavky užívateľa tým, že sa nepoužívané moduly deaktivujú alebo odinštalujú.
 +
 +
[[Súbor:Dynasim01.jpg|center|framed|Obr.1 Konceptuálna štruktúra NetBeans IDE]]
 +
 +
Aby aplikácia dosiahla takýto stupeň modularity, Platforma Netbeans na jednej strane dovoľuje modulom dedičnosť inými modulmi a na strane druhej im dovoľuje komunikovať medzi sebou bez vzájomnej závislosti na sebe. Inými slovami Platforma NetBeans podporuje loose coupling (voľné prepojenie) modulov v rámci aplikácie.
 +
Na optimalizáciu zapúzdrenia kódu do modulov. Čo je v modulárnom systéme nevyhnutné, Platforma NetBeans poskytuje svoj vlastný classloader systém. Každý modul je nahratý jeho classloaderom a tým sa sprístupní separátna nezávislá časť kódu. Na využitie funkčnosti ostatných modulov, modul môže deklarovať závislosti (dependency) na iných moduloch.
 +
Samotná platforma NetBeans je sformovaná zo skupiny jadrových modulov (Obr.2), ktoré sú potrebné na spustenie aplikácie a na definovanie jej užívateľského rozhrania. Platforma NetBeans ponúka veľké množstvo API, čím značne zjednodušuje vývojový proces. Do tejto skupiny patria napríklad Actions API, Nodes API, Options SPI a ďalšie.
 +
 +
[[Súbor:ArchitekturaNetBeans.jpg|center|framed|Obr.2 Architektúra Platformy NetBeans]]
 +
 +
==Tvorba aplikácie na Platforme NetBeans==
 +
Ako už bolo spomenuté, základom platformy NetBeans a aplikácií na nej postavených sú moduly. Najskôr je potrebné vytvoriť aplikáciu samotnú. NetBeans IDE obsahuje wizarda na tvorbu takéhoto projektu. Cez ''File → New Project'' sa dostaneme do dialógového okna, kde vyberieme príslušnú kategóriu a projekt podľa  obr.3.
 +
Na ďalšej strane sa vyplní názov projektu a zadá sa cesta, kde sa má projekt uložiť. Týmto sa vytvorilo niekoľko konfiguračných súborov aplikácie. Aby sme však aplikácii mohli dať funkcionalitu, musíme do nej pridať minimálne jeden modul.
 +
Tvorba modulu je obdobná ako v prípade aplikácie samotnej s tým rozdielom, že podľa obr.3 v položke ''Projects'' vyberieme ''Module'' a vyplníme všetky náležitosti v dialógovom okne. V takom prípade sa vytvorí prázdny modul, obsahujúci len základné knižnice a niekoľko konfiguračných súborov.
 +
 +
[[Súbor:Dynasim03.jpg|center|framed|Obr.3 Tvorba novej aplikácie na platforme NetBeans]]
 +
 +
==Používanie knižníc a pridávanie závislostí na moduloch==
 +
Keďže aplikácia bude pracovať s SVG a XML súbormi je nutné pridať do projektu knižnicu JDOM. JDOM je knižnica, ktorá rieši prístup k údajom XML súboru a ich manipuláciu.  JDOM sa nenachádza v štandardnom balíčku knižníc Javy, preto ju treba stiahnuť napríklad z adresy http://www.jdom.org/ .
 +
Vzhľadom na to, že celá aplikácia je založená na moduloch, je vhodné integrovať externý JAR súbor knižnice vo forme modulu. Tým pádom je možné pridať túto knižnicu ako závislosť pre iné moduly, čím sa zvýši konzistencia aplikácie ako celku.
 +
Opäť podobne ako v predchádzajúcom prípade podľa obr.3 v položke ''Projects'' vyberieme ''Library Wrapper Module''. V novom okne pridáme jdom.jar a jeho licenčný súbor. Ďalej sa postupuje ako v prípade vytvárania nového modulu.
 +
Takto vytvorený modul je teraz nutné pridať modulu, ktorý potrebuje danú knižnicu využívať. Najskôr je potrebné sa uistiť, že sú všetky triedy knižnice sprístupnené cez ''Public Packages''. V pravej časti programu NetBeans IDE v okne ''Projects'' treba kliknúť pravým tlačítkom na modul knižnice a vyberať položku ''Properties''. V ''Properties'' okne potom vyberieme položku ''API Versioning''. Všetky balíčky v ''Public Packages'' musia byť zaškrtnuté  (viz. obr.4). To nám zaručí, že je modul verejný a budú ho môcť využívať iné moduly. Takýto modul sa objaví v ponuke závislostí medzi modulmi platformy NetBeans.
 +
 +
[[Súbor:Dynasim04.jpg|center|framed|Obr.4 Tvorba verejného modulu]]
 +
 +
Keď už má modul alebo knižnica všetky jeho balíčky verejné, môžeme ho pridať ako závislosť druhému modulu. V pravej časti programu NetBeans IDE v okne ''Projects'' treba kliknúť pravým tlačítkom na modul, ktorému chceme pridať závislosť a vyberieme položku ''Properties''. V ''Properties'' okne potom vyberieme položku ''Libraries''. Tu sa po kliknutí na ''Add Dependency'' objaví nové okno, ktoré obsahuje všetky dostupné moduly patriace platforme Netbeans, ale aj moduly, ktoré vytvoril užívateľ a sprístupnil ich cez Public Packages v API versioning. Tu nájdeme modul od ktorého má byť náš modul závislý. Môže to byť modul NetBeansu, vlastný modul, či knižničný modul. Jednému modulu môžeme pridať neobmedzené množstvo závislostí.
 +
 +
==Visual Library API==
 +
NetBeans platforma obsahuje veľké množstvo modulov, avšak pre účely simulačného programu DynaSim je obzvlášť významná Visual Library API.
 +
Je to je knižnica, ktorá slúži na zobrazovanie rôznych štruktúr. Knižnica sa obzvlášť hodí na tvorbu grafovo orientovaných reprezentácií. Táto knižnica sa používa v NetBeans mobility pack, v návrhári JSF navigácie a ďalších nástrojoch. Knižnicu ale možno použiť aj mimo NetBeans platformu v akejkoľvek aplikácii založenej na Swingu. Na použitie Visual Library API stačí modulu ktorý ju má používať pridať na ňu závislosť podľa predošlej kapitoly.
 +
Komponenty vo Visual Library API majú podobne ako pri Swingu stromovú štruktúru. Superclass všetkých grafických komponentov je trieda Widget. Tým pádom v grafovo orientovanom modeli kde sú ulzy vzájomne prepojené hranami, sa za widgety považujú všetky uzly aj hrany.  Widget môže zároveň slúžiť aj ako kontajner pre ďalšie widgety. Každý widget má pozíciu relatívnu k rodičovskému widgetu. Superclass Widget je zodpovedná za prezentáciu okraja a pozadia widgetu, ale aj jeho vlastností ako je farba, či priehľadnosť. Podobne ako Swing kontajner aj widget má layout, ktorý rieši poziciovanie jeho detských widgetov. Widget je možné zviazať s viacerými akciami, ktoré sa vykonajú za splnenia špecifických podmienok.

Aktuálna revízia z 22:26, 19. júl 2010

Tnu wiki.png
Trenčianska Univerzita Alexandra Dubčeka v Trenčíne
Fakulta Mechatroniky
Fm wiki.png
Interaktívny simulátor DynaSim

zadanie práce
Diplomová práca


Autor:
Pedagogický vedúci:

Ing. Juraj Ďuďák

Študijný odbor: Mechatronika

Akademický rok

2009/2010

Abstrakt

Práca sa zaoberá budovaním frameworku interaktívneho simulačného programu na platforme NetBeans. V práci je rozobratý spôsob tvorby vizuálneho rozhrania za použitia Visual Library API, ďalej spôsob tvorby jednotlivých simulačných komponentov a ich dátovej štruktúry za pomoci Nodes API, tvorba užívateľského rozhrania a nakoniec implementácia simulačného algoritmu. Jednotlivé simulačné komponenty sa môžu do programu pridávať dodatočne a sú založené na popise XML a SVG súborov.

Abstract

This graduation thesis deals with building of framework for interactive simulation program based on NetBeans platform. This thesis deals with approach to making visual interface using Visual Library API, approach to making individual simulation components and their data structure using Nodes API, making of user interface and finally implementation of simulation algorithm. Individual simulation components can be added to the program additionally and are based on XML and SVG definition.

Úvod

V súčasnej dobe existuje množstvo komerčne dostupných produktov zameraných na simulácie a riadenie technologických procesov, ako sú napr. LabView, Simulink ako súčasť Matlab-u a pod. Mnohé z týchto produktov majú za sebou dlhú dobu vývoja a sú úspešne nasadzované v systémoch riadenia technologických procesov. Pre bežných užívateľov, alebo z hľadiska procesu výučby, majú tieto komerčné produkty určité nedostatky vyplývajúce z ich podstaty. Sú to uzatvorené systémy, do ktorých užívateľ nemá prístup, môže sa pohybovať iba v rozmedzí určitých „mantinelov“, ktoré mu vymedzili vývojári produktu. Užívateľ nemá možnosť verifikovať, či upravovať implementovaný simulačný algoritmus v simulačných komponentoch, takisto ako nemá možnosť tvorby vlastných komponentov. Neumožňujú prácu na viacerých platformách, ak existuje distribúcia pre inú platformu, treba si na ňu zvlášť zakúpiť licenciu. V neposlednej rade je nepriaznivým faktorom takýchto komerčných produktov aj prehnane vysoká cena.

Pre to sa zrodila myšlienka vytvoriť simulátor, ktorý by tieto nevýhody odstránil. DynaSim je interaktívny simulátor postavený na platforme NetBeans, vytvorený v programovacom jazyku Java. Tým spája výhody objektového programovania, multiplatformovosti s možnosťou využitia prepracovaných knižníc prakticky zo všetkých oblastí informačných technológií. DynaSim dáva možnosť užívateľovi interaktívne zasahovať do simulačného procesu vďaka integrácii interaktívnych simulačných komponentov. Vďaka využitiu rôznych NetBeans modulov má užívateľ možnosť nastaviť si vlastné užívateľské rozhranie podľa potreby. Veľkou výhodou je aj možnosť pridávania vlastných simulačných komponentov, ktoré sa skladajú z grafickej časti popísanej SVG súborom, dátovej časti popísanej jednoduchým XML súborom a Java .class súborom, ktorý opisuje simulačný algoritmus komponentu. Oproti komerčným produktom má samozrejme najväčšiu výhodu v tom, že je zadarmo a je open-source. Užívateľ môže kedykoľvek nahliadnuť do zdrojového kódu, robiť v programe úpravy podľa vlastnej potreby. Tak isto jednoduché je nahliadnuť do zdrojového kódu jednotlivých simulačných komponentov. V práci je rozobratý postup tvorby rich-client aplikácie postavenej na platforme Netbeans, využitie rôznych štandardných knižníc tejto platformy na vybudovanie základného frameworku pre simulátor, ako aj implementácia základných simulačných komponentov.


Platforma NetBeans

Platforma NetBeans je framework pre Swing aplikácie. NetBeans bol pôvodne vyvíjaný ako študentský projekt na Karlovej Univerzite v Prahe. Projekt kúpila v roku 1999 spoločnosť Sun a v roku 2000 z neho spravila open-source projekt. Platforma poskytuje pre aplikácie na nej vyvíjané ukladanie stavu, prepájanie akcií s menu položkami, toolbary, klávesové skratky, či správu okien a mnohé ďalšie veci, ktoré predtým musel každý vývojár písať samostatne. NetBeans platforma poskytuje spoľahlivú a flexibilnú aplikačnú architektúru. Aplikácie postavené na tejto platforme nemusia nutne vypadať ako NetBeans IDE, ktoré je tiež postavené na nej. Využitím NetBeans platformy je možné ušetriť mnohé mesiace vývoja. Za posledných niekoľko rokov sa zvýšila popularita rich-client desktopových platforiem. Tento trend viedli práve NetBeans platforma a Eclipse RCP. Kým Eclipse RCP je založená na SWT a JFace, čo sú nové neštandardné štýly a koncepty, platformna NetBeans je kompletne závislá od štandardných Java API s použitím AWT a Swing, čím plne integruje pôvodný koncept Java SE.

Charakteristiky Rich Client Platformy

Rich-client platforma je aplikačné prostredie – základ desktopových aplikácií. Väčšina desktopových aplikácií má podobné vlastnosti ako sú rôzne menu, toolbary, status bary, zobrazovanie dát, ukladanie a nahrávanie užívateľsky špecifických dát a pod. Na tieto a ďalšie typické vlastnosti klientských aplikácií rich-client platforma poskytuje framework, s ktorým sa tieto vlastnosti dajú jednoducho spojiť dokopy. Framework takéhoto druhu sa zameriava na konfigurovateľnosť a rozšíriteľnosť aplikácie. Najdôležitejším aspektom rich-client platformy je jej architektúra. Aplikácie založené na rich-client platforme sú písané vo forme modulov, v ktorých sú logicky koherentné časti aplikácie izolované. Okrem Modularity ponúkanej rich-client architektúrou, ktorá poskytuje vysokú mieru robustnosti a hodnoty pre koncového užívateľa, poskytuje aj ďalšie výhody a to:

  • Zníženie vývojového času
  • Konzistentnosť užívateľského rozhrania
  • Možnosť updatovania
  • Platformovú nezávislosť
  • Znovupoužiteľnosť a spoľahlivosť

Zníženie vývojového času – Rich-client platforma poskytuje viacero API pre vývoj desktopových aplikácií. Vďaka znovupoužiteľnosti mnohých preddefinovaných komponentov sú vývojári schopní koncentrovať sa na funkčnú logiku aplikácie.

Konzistentnosť užívateľského rozhrania – Rich-client platforma poskytuje framework pre zobrazenie užívateľského rozhrania a obzvlášť sa stará o konzistentnosť, prístupnosť a použiteľnosť.

Možnosť updatovania – Za použitia rich-client platformy je možné rýchlo a efektívne distribuovať nové alebo updatované moduly koncovým užívateľom. Updaty môžu byť distribuované a inštalované formou modulov, to znamená, že nové nekonfliktné prvky aplikácie môžu byť vyvíjané nezávisle druhým vývojárskym týmom.

Platformová nezávislosť - Rich-client platformy sú založené na medzinárodných štandardoch a znovupoužiteľných komponentoch. To znamená, že Java aplikácie na nich postavené sú automaticky spustiteľné na rôznych operačných systémoch ako sú Windows, či Linux, ak majú k dispozícii Java Runtime Environment.

Znovupoužiteľnosť a spoľahlivosť – Rich-client platformy poskytujú širokú škálu modulov a funkcií, ktoré môžu byť využité vo vytváranej aplikácii. Ak modul úplne nezodpovedá požiadavkám aplikácie, je možné ho použiť ako počiatočný bod a následne ho rozšíriť alebo zmeniť podľa potreby. Keďže väčšina platforiem dáva k dispozícii aj svoje zdrojové kódy, niekedy môže byť výhodnejšie zmeniť alebo rozšíriť platformu samotnú. Tieto faktory implikujú veľkú mieru spoľahlivosti a voľnosti.

Charakteristiky Platformy NetBeans

Platforma NetBeans ponúka okrem bežných výhod rich-client platformy viacero frameworkov a niekoľko ďalších špecifík, ktoré môžu byť užitočné pre niektoré aplikácie. Za zmienku stojí napríklad:

  • Framework pre užívateľské rozhranie
  • Data editor
  • Customization display
  • Wizard framework
  • Data systémy
  • Medzinárodnosť
  • Help system

Framework pre užívateľské rozhranie – Okná, menu, toolbary a daľšie komponenty sú poskytované platformou. To znamená, že sa vývojár môže sústrediť na špecifické úlohy, čo zmenší dĺžku kódu a zníži náchylnosť na chybu. Celý užívateľský interface v platforme NetBeans je založený na AWT/Swing.

Data Editor – je editor z NetBeans IDE a môžu ho používať aj iné aplikácie. Nástroje a funkčnosť editora môžu byť rýchlo a ľahko rozšírená a adaptovaná na požiadavky aplikácie.

Customization display – Displej s užívateľsky a aplikačne špecifickými nastaveniami je potrebný v každej aplikácii.

Wizard Framework – Platforma NetBeans ponúka jednoduché nástroje na tvorbu rozšíriteľých a user-friendly asistentov, ktorí budú užívateľa sprevádzať cez komplexné kroky v aplikácii.

Data Systémy – U platformy NetBeans, dáta môžu byť lokálne alebo prístupné cez FTP, CVS, databázu, alebo XML súbor. Dátový prístup z jedného modulu je transparentný pre všetky ostatné moduly vďaka použitiu abstrakcie. Samotný dátový prístup je riešený pomocou NetBeans API.

Medzinárodnosť – Platforma NetBeans poskytuje triedy a metódy na preklad JavaHelp a ďalších zdrojov do cudzích jazykov.

Help System – Pomocou štandardného JavaHelp systému, NetBeans platforma ponúka centrálny systém pre integráciu a zobrazovanie nápovedy pre koncového užívateľa. Samostatné moduly môžu pridať ich vlastné nápovedy do help systému aplikácie.

Architektúra Platformy NetBeans

Základným stavebným blokom platformy NetBeans je modul. Modul je kolekcia funkčne súvisiacich tried, spoločne s popisom rozhraní ktoré modul poskytuje a popisom ďalších modulov, ktoré potrebuje na to aby fungoval. Celá platforma NetBeans, rovnako ako aj aplikácie na nej postavené sú rozdelené do modulov. Tie sú nahraté jadrom Platformy NetBeans, ktoré sa nazýva NetBeans runtime container. NetBeans runtime container loaduje aplikačné moduly dynamicky a automaticky a následne je aj zodpovedný za beh aplikácie. V tomto prípade je NetBeans IDE dobrým príkladom modulárnej rich-client aplikácie. Funkčnosť a charakteristiky IDE ako napríklad podpora jazyku Java alebo editor zdrojového kódu , sú tvorené formou modulov postavených na Platforme Netbeans. To so sebou prináša možnosť rozšíriť aplikáciu o ďalšie moduly a možnosť adaptácie na špecifické požiadavky užívateľa tým, že sa nepoužívané moduly deaktivujú alebo odinštalujú.

Obr.1 Konceptuálna štruktúra NetBeans IDE

Aby aplikácia dosiahla takýto stupeň modularity, Platforma Netbeans na jednej strane dovoľuje modulom dedičnosť inými modulmi a na strane druhej im dovoľuje komunikovať medzi sebou bez vzájomnej závislosti na sebe. Inými slovami Platforma NetBeans podporuje loose coupling (voľné prepojenie) modulov v rámci aplikácie. Na optimalizáciu zapúzdrenia kódu do modulov. Čo je v modulárnom systéme nevyhnutné, Platforma NetBeans poskytuje svoj vlastný classloader systém. Každý modul je nahratý jeho classloaderom a tým sa sprístupní separátna nezávislá časť kódu. Na využitie funkčnosti ostatných modulov, modul môže deklarovať závislosti (dependency) na iných moduloch. Samotná platforma NetBeans je sformovaná zo skupiny jadrových modulov (Obr.2), ktoré sú potrebné na spustenie aplikácie a na definovanie jej užívateľského rozhrania. Platforma NetBeans ponúka veľké množstvo API, čím značne zjednodušuje vývojový proces. Do tejto skupiny patria napríklad Actions API, Nodes API, Options SPI a ďalšie.

Obr.2 Architektúra Platformy NetBeans

Tvorba aplikácie na Platforme NetBeans

Ako už bolo spomenuté, základom platformy NetBeans a aplikácií na nej postavených sú moduly. Najskôr je potrebné vytvoriť aplikáciu samotnú. NetBeans IDE obsahuje wizarda na tvorbu takéhoto projektu. Cez File → New Project sa dostaneme do dialógového okna, kde vyberieme príslušnú kategóriu a projekt podľa obr.3. Na ďalšej strane sa vyplní názov projektu a zadá sa cesta, kde sa má projekt uložiť. Týmto sa vytvorilo niekoľko konfiguračných súborov aplikácie. Aby sme však aplikácii mohli dať funkcionalitu, musíme do nej pridať minimálne jeden modul. Tvorba modulu je obdobná ako v prípade aplikácie samotnej s tým rozdielom, že podľa obr.3 v položke Projects vyberieme Module a vyplníme všetky náležitosti v dialógovom okne. V takom prípade sa vytvorí prázdny modul, obsahujúci len základné knižnice a niekoľko konfiguračných súborov.

Obr.3 Tvorba novej aplikácie na platforme NetBeans

Používanie knižníc a pridávanie závislostí na moduloch

Keďže aplikácia bude pracovať s SVG a XML súbormi je nutné pridať do projektu knižnicu JDOM. JDOM je knižnica, ktorá rieši prístup k údajom XML súboru a ich manipuláciu. JDOM sa nenachádza v štandardnom balíčku knižníc Javy, preto ju treba stiahnuť napríklad z adresy http://www.jdom.org/ . Vzhľadom na to, že celá aplikácia je založená na moduloch, je vhodné integrovať externý JAR súbor knižnice vo forme modulu. Tým pádom je možné pridať túto knižnicu ako závislosť pre iné moduly, čím sa zvýši konzistencia aplikácie ako celku. Opäť podobne ako v predchádzajúcom prípade podľa obr.3 v položke Projects vyberieme Library Wrapper Module. V novom okne pridáme jdom.jar a jeho licenčný súbor. Ďalej sa postupuje ako v prípade vytvárania nového modulu. Takto vytvorený modul je teraz nutné pridať modulu, ktorý potrebuje danú knižnicu využívať. Najskôr je potrebné sa uistiť, že sú všetky triedy knižnice sprístupnené cez Public Packages. V pravej časti programu NetBeans IDE v okne Projects treba kliknúť pravým tlačítkom na modul knižnice a vyberať položku Properties. V Properties okne potom vyberieme položku API Versioning. Všetky balíčky v Public Packages musia byť zaškrtnuté (viz. obr.4). To nám zaručí, že je modul verejný a budú ho môcť využívať iné moduly. Takýto modul sa objaví v ponuke závislostí medzi modulmi platformy NetBeans.

Obr.4 Tvorba verejného modulu

Keď už má modul alebo knižnica všetky jeho balíčky verejné, môžeme ho pridať ako závislosť druhému modulu. V pravej časti programu NetBeans IDE v okne Projects treba kliknúť pravým tlačítkom na modul, ktorému chceme pridať závislosť a vyberieme položku Properties. V Properties okne potom vyberieme položku Libraries. Tu sa po kliknutí na Add Dependency objaví nové okno, ktoré obsahuje všetky dostupné moduly patriace platforme Netbeans, ale aj moduly, ktoré vytvoril užívateľ a sprístupnil ich cez Public Packages v API versioning. Tu nájdeme modul od ktorého má byť náš modul závislý. Môže to byť modul NetBeansu, vlastný modul, či knižničný modul. Jednému modulu môžeme pridať neobmedzené množstvo závislostí.

Visual Library API

NetBeans platforma obsahuje veľké množstvo modulov, avšak pre účely simulačného programu DynaSim je obzvlášť významná Visual Library API. Je to je knižnica, ktorá slúži na zobrazovanie rôznych štruktúr. Knižnica sa obzvlášť hodí na tvorbu grafovo orientovaných reprezentácií. Táto knižnica sa používa v NetBeans mobility pack, v návrhári JSF navigácie a ďalších nástrojoch. Knižnicu ale možno použiť aj mimo NetBeans platformu v akejkoľvek aplikácii založenej na Swingu. Na použitie Visual Library API stačí modulu ktorý ju má používať pridať na ňu závislosť podľa predošlej kapitoly. Komponenty vo Visual Library API majú podobne ako pri Swingu stromovú štruktúru. Superclass všetkých grafických komponentov je trieda Widget. Tým pádom v grafovo orientovanom modeli kde sú ulzy vzájomne prepojené hranami, sa za widgety považujú všetky uzly aj hrany. Widget môže zároveň slúžiť aj ako kontajner pre ďalšie widgety. Každý widget má pozíciu relatívnu k rodičovskému widgetu. Superclass Widget je zodpovedná za prezentáciu okraja a pozadia widgetu, ale aj jeho vlastností ako je farba, či priehľadnosť. Podobne ako Swing kontajner aj widget má layout, ktorý rieši poziciovanie jeho detských widgetov. Widget je možné zviazať s viacerými akciami, ktoré sa vykonajú za splnenia špecifických podmienok.