Vysoká škola ekonomická v Praze Fakulta informatiky a statistiky Vyšší odborná škola informačních služeb v Praze
Vypracoval: Martin Musil Vedoucí práce: Ing. Ondřej Raška Rich Internet Application Bakalářská práce
2009
Prohlášení
Prohlašuji, že jsem bakalářskou práci na téma Rich Internet Application zpracoval samostatně a použil pouze zdrojů, které cituji a uvádím v seznamu použité literatury.
V Praze dne 15. 5. 2009
Podpis
Stránka | 3
Poděkování
Na tomto místě bych rád poděkoval vedoucímu své bakalářské práce: Ing. Ondřeji Raškovi za cenné připomínky, rady a odborné vedení své práce. Všechny chyby a omyly jsou pak jen mé vlastní.
Stránka | 4
Abstrakt Rich Internet Application se těší v současnosti velké popularitě a vše nasvědčuje faktu, že tomu tak bude i nadále. Cílem této práce je představit tuto nově vznikající softwarovou architekturu, popsat na jakých principech je založena a její výhody oproti běžným webovým aplikacím. Druhá část práce bude věnována nejvýznamnějším technologickým řešením. Ty zde budou stručně popsány a budou uvedeny jejich hlavní přednosti a nedostatky. Klíčová slova: rich internet application, RIA, cloud computing, AJAX
Abstract Rich Internet Applications are nowadays very popular and everything testifies to the fact that it is going to be the same in the future. The goal of the thesis is to present this emerging software architecture, to describe the principles it is based on and its benefits against common web applications. Second part of the thesis will be dedicated to the most significant technological solutions. These solutions are going to be briefly described and mentioned its strengths and weaknesses. Keywords: rich internet application, RIA, cloud computing, AJAX
Stránka | 5
Obsah 1.
ÚVOD ......................................................................................................................................... 7
2.
CÍL PRÁCE A METODIKA ............................................................................................................ 10
3.
DŮLEŽITÉ POJMY ...................................................................................................................... 11 3.1 RICH INTERNET APPLICATION ........................................................................................................... 11 3.1.1 Dělení RIA ............................................................................................................................. 14 3.1.2 Pojem RIA podle odborníků .................................................................................................. 18 3.2 BĚHOVÉ PROSTŘEDÍ (RUNTIME ENVIRONMENT).................................................................................... 24 3.3 CLOUD COMPUTING ....................................................................................................................... 25 3.4 SMART CLIENT ............................................................................................................................... 25 3.5 SITE-SPECIFIC BROWSER .................................................................................................................. 29
4.
TECHNOLOGICKÁ ŘEŠENÍ .......................................................................................................... 31 4.1 AJAX .......................................................................................................................................... 31 4.2 CURL A CURL NITRO ....................................................................................................................... 33 4.2.1 Platforma Curl ...................................................................................................................... 33 4.2.2 Curl content language .......................................................................................................... 34 4.2.3 Curl runtime engine .............................................................................................................. 34 4.2.4 Curl integrated development environment .......................................................................... 36 4.2.5 Curl Nitro .............................................................................................................................. 37 4.3 MOZILLA XULRUNNER A PRISM ....................................................................................................... 39 4.3.1 Mozilla XULRunner ............................................................................................................... 39 4.3.2 Mozilla Prism ........................................................................................................................ 40 4.4 GOOGLE GEARS ............................................................................................................................. 43 4.5 YAHOO! BROWSERPLUS .................................................................................................................. 45 4.6 SUN JAVAFX ................................................................................................................................. 47 4.6.1 Netbeans IDE 6.1 .................................................................................................................. 48 4.6.2 Project Nile ........................................................................................................................... 48 4.6.3 JavaFX 1.0 ............................................................................................................................. 49 4.7 ADOBE FLASH PLAYER A ADOBE AIR ................................................................................................. 49 4.7.1 Adobe Flash Player ............................................................................................................... 49 4.7.2 Adobe AIR ............................................................................................................................. 51 4.8 MICROSOFT SILVERLIGHT ................................................................................................................ 53 4.9 OPEN SCREEN PROJECT ................................................................................................................... 54
5.
ZÁVĚR ...................................................................................................................................... 56
Stránka | 6
1. Úvod Pro volbu tohoto tématu jsem se rozhodl na základě několika faktů. Prvním z nich byla skutečnost, že Rich Internet Applications zažívají v současné době obrovský rozmach. Tomu nasvědčuje i fakt, že většina velkých softwarových společností nabízí své řešení. Svoji technologii tak má např. společnost Adobe, Microsoft, Sun Microsystems, Google, Yahoo! nebo Mozilla Foundation. Ve prospěch tohoto tématu mluví i skutečnost, že offline webové aplikace se umístily mezi „Top 10 emerging technologies 2008“, tedy nejlepšími deseti technologiemi roku 2008. Tento žebříček každoročně vyhlašuje Massachusetts Institute of Technology (MIT) ve spolupráci s magazínem Technology review 1, který také vydává. Vybrané technologie budou hrát podle MIT v následujících několika letech velmi významnou roli ve svých oborech. Na poli počítačového softwaru by tímto milníkem měli být právě offline webové aplikace. Ty stojí vedle tak zajímavých objevů, jako je např. bezdrátový přenos elektrické energie mezi jejím zdrojem a spotřebičem pomocí magnetického pole. Oproti očekávání se nejedná o úplně nový vynález, ale autor Marin Soljacic navazuje v tomto případě na myšlenku geniálního fyzika devatenáctého a dvacátého století Nikoly Tesly. Dalšími technologiemi, které se umístily v této desítce, jsou např. PCMOS čipy, které mohou výrazně zvýšit životnost baterií v mobilních zařízeních nebo objev enzymů v celulóze. Ty by mohly výrazně snížit náklady na tvorbu paliv z biomasy, díky nimž by mohla poklesnout tvorba skleníkových plynů a zároveň i závislost na fosilních palivech. MIT není jediným, kdo si myslí, že zpřístupnění webových aplikací offline je významným krokem vpřed ve vývoji softwaru. Podle serveru BBC News, který publikoval v lednu 2008 svůj žebříček pěti „Technologies on the rise in 2008“, „Technology review byl založen v roce 1899 a je tak nejstarší technologický časopis na světě. Jeho účelem je šířit povědomí o současných významných technologiích a analyzovat jejich hospodářský, sociální a politický dopad.“ [1]
1
Stránka | 7
neboli technologií na vzestupu v roce 2008, je jedna z nich i „web to go“. Jako největší nevýhoda webových aplikací je zde zmiňována nutnost dostupnosti připojení k internetu, pokud je chceme použít. Právě za odstranění této stinné stránky jinak úspěšných aplikací zde BBC oceňuje průkopníky této technologie Adobe s produktem AIR, Google s Gears a Silverlight společnosti Microsoft. Offline webové aplikace, které se umístili v žebříčku na prvním místě, za sebou nechaly takové konkurenty jako ultrapřenosné počítače, IPTV neboli šíření digitálního televizního signálu prostřednictvím internetového protokolu, Wimax, technologii představující vysokorychlostní bezdrátové připojení nebo mobilní telefonování přes internet, neboli mobilní VOIP. Nevím, jestli je to dané tím, že se offline webové aplikace umístily mezi nejlepšími technologiemi roku 2008 nebo tím, že v tomto roce došlo k obrovskému rozmachu těchto technologií a právě v tomto roce přišlo mnoho společností se svým řešením, ale rok 2008 bývá označován některými odborníky jako „rok Rich Internet Application“ (year of ria). 2 Tomu nasvědčuje i graf vytvořený službou Google Trends.
Obr. 1. Vyhledávání řetězce „rich internet applications“ Google Trends [online]. 2008 [cit. 2008-11-26]. Dostupný z WWW:
.
FRANCO, Anthony. Anthony’s Blog : 2008, the Year of the Rich Internet Application (RIA): [online]. 2008 [cit. 2008-11-26]. Dostupný z WWW: . [5] 2
Stránka | 8
Ačkoliv pojem Rich Internet Application existoval již od roku 2002, kdy byl použit společností Macromedia v souvislosti s produktem Shockwave (současný Adobe Flash Player), k jeho masivnímu rozšíření došlo až v polovině roku 2007, kdy byl představen projekt Apollo společnosti Adobe a oznámena spolupráce s Salesforce.com, poskytovatelem CRM 3 systémů. Do té doby byl pojem Rich Internet Application prakticky neznámý. Dalším důvodem, proč jsem se rozhodl pro toto téma je nízké povědomí veřejnosti o tom, co to Rich Internet Applications jsou nebo k čemu jsou dobré. Často se stává, že lidé tento pojem už někdy slyšeli, ale neví, co si pod ním představit. V jiných případech ho slyší poprvé. Na tyto otázky se budu snažit v práci odpovědět. Podle mého názoru je tato neznalost do jisté míry dána i skutečností, že o této problematice toho bylo zatím napsáno velice málo. Při vypracovávání rešerše a získávání zdrojů jsem prakticky nenarazil na jedinou práci, která by poskytovala ucelený pohled na tuto tématiku. V neposlední řadě jsem si toto téma vybral, jelikož mě zajímá. Je pozoruhodné sledovat, jak se webové aplikace vyvíjí a dochází k prolínání pracovní plochy počítače s webem.
„Customer relationship management (též CRM nebo řízení vztahů se zákazníky) je databázovou technologií podporovaný proces shromažďování, zpracování a využití informací o zákaznících firmy. Umožňuje tak poznat, pochopit a předvídat potřeby, přání a nákupní zvyklosti zákazníků a podporuje oboustrannou komunikaci mezi firmou a jejími zákazníky. Jako CRM v přeneseném smyslu se též označuje softwarové, hardwarové a personální vybavení firmy, které je výkonem těchto funkcí pověřeno.“ [6]
3
Stránka | 9
2. Cíl práce a metodika Cílem této práce je vysvětlit fenomén Rich Internet Application a objasnit důvody, které vedly k jeho vzniku. Dále bych chtěl vysvětlit, na jakém principu funguje a uvést jeho hlavní výhody oproti klasickým webovým aplikacím. V další fázi se pokusím představit nejčastěji používaná technologická řešení a uvést jejich silné stránky a slabiny. Podklady pro vypracování práce budu získávat převážně z elektronických zdrojů a to jak z webových stránek, tak z databází odborných článků a částečně i z tištěné literatury. Zdrojem informací o jednotlivých technologických řešeních bude převážně jejich dokumentace nebo informace založené na zkušenostech, při jejich instalaci a používání. Uvedené údaje budu průběžně komentovat a interpretovat svými slovy, popř. citacemi z odborné literatury.
Stránka | 10
3. Důležité pojmy V této kapitole bych rád vysvětlil několik základních pojmů, které úzce souvisí se zkoumanou problematikou. To je důležité pro správné porozumění termínu Rich Internet Application, důvodu jeho vzniku a principů, na kterých je postavený.
3.1 Rich Internet Application Pojem RIA vznikl v roce 2002, kdy ho představila společnost Macromedia v souvislosti s platformou Shockwave. K jeho rozšíření však došlo až o několik let později, s představením platformy Apollo, společnosti Adobe a skutečný rozmach zažívá až v tomto roce (2008). Rich Internet Applications jako takové ale v podstatě vznikly mnohem dříve. Bylo to v roce 1995, kdy byl vytvořen jazyk Java. Ten se stal slavný díky jednoduchým malým programům, které v něm bylo možné vytvořit, nazývaným applety 4. Ty běžely v prohlížeči za pomoci pluginu 5 Java Virtual Machine. Časem však tato technologie na straně klienta, díky které se Java proslavila, ustoupila do pozadí. Java se přesunula na stranu serveru, kde hraje významnou roli podobně, jako na poli technologií pro mobilní zařízení. V současnosti s narůstající popularitou RIA se společnost Sun Microsystems vrací na stranu klienta s novou platformou JavaFX. RIA bývají často definovány jako aplikace, ve kterých se pojí to nejlepší z webových a desktopových aplikací. Z desktopových se jedná především o uživatelský komfort jako podpora drag and drop neboli „táhni a pusť“ funkce, přehledné grafické rozhraní a ovládání, a samozřejmě možnost pracovat s aplikací i pokud nejsme připojení k internetu. Zároveň uživatel od takových aplikací očekává rychlou odezvu, jak je tomu u běžných desktopových aplikací, či možnost použití klávesových zkratek. Z těch webových by to pak byla dostupnost aplikace a dat „Applet je softwarová komponenta, která běží v kontextu jiného programu (webového prohlížeče nebo v panelu pro přepínání oken v grafickém uživatelském prostředí).“ [21]
4
„Zásuvný modul neboli plugin, také plug-in (neologismus vytvořený z anglického slovesa to plug in – zasunout) je software, který nepracuje samostatně, ale jako doplňkový modul jiné aplikace a rozšiřuje tak její funkčnost.“ [22] 5
Stránka | 11
z jakéhokoliv počítače připojeného do internetu a bez ohledu na to, jaký operační systém nebo prohlížeč používá. Další běžnou vlastností klasických webových aplikací je velice snadné používání. Instalace není buď vůbec vyžadována, nebo je velmi jednoduchá a stažení z webu a instalaci lze zvládnout jedním kliknutím. Odpadá zde zároveň nutnost starat se o aktualizace, pokud chceme mít program bezpečný či s novými funkcemi. Ty totiž probíhají automaticky a často bez uživatelova vědomí.
Obr. 3.1.a To nejlepší z obou světů Total Training. Total training for Adobe Flex 3 [CD-ROM]. c2008.
Za jednu z důležitých charakteristik RIA by se dala považovat jejich schopnost běžet na více platformách a zařízeních. Zde je omezením pouze podpora jednotlivých prohlížečů konkrétními RIA technologiemi v případě aplikací běžících v nich. V případě RIA s běhovým prostředím mimo webový prohlížeč by pak záleželo na podpoře operačních systémů konkrétní technologií. Obecně však platí, že RIA bývají alespoň částečně multiplatformní (cross-platform). Co se týče zařízení, pro které jsou Rich Internet Application určeny, nezůstane jen u osobních počítačů. Ačkoliv jejich podpora je prioritou asi pro každou společnost operující na trhu se svým řešením, mnoho jich plánuje rozšíření na obrazovky mobilních telefonů a PDA nebo televizních přístrojů. Stránka | 12
Obr. 3.1.b Dosah RIA BOREK, Bernard. Rich Internet Applications v roce 2008. Interval.cz [online]. 2008 [cit. 200810-27]. Dostupný z WWW: .
Další silnou stránkou RIA je jejich schopnost využít lokální zdroje k operacím, u kterých je to možné a má to smysl. Nedochází tím k takovému zatěžování serveru, jako u běžných webových aplikací. Při jejich práci totiž nejsou využity zdroje počítače a ten slouží pouze jako jakýsi terminál. Současně dochází ke snížení objemu přenášených dat, jelikož již není třeba při každé akci provádět obnovení celé stránky, ale přenáší se jen ta data, která se skutečně změnila.
Obr. 3.1.c Starý způsob přenosů Total Training. Total training for Adobe Flex 3 [CD-ROM]. c2008.
Stránka | 13
Obr. 3.1.d Nový způsob Total Training. Total training for Adobe Flex 3 [CD-ROM]. c2008.
Podle některých studií stránek elektronických obchodů, vytvořených jako RIA, došlo až k padesáti procentnímu poklesu přenášených dat. [10] 3.1.1 Dělení RIA
Z hlediska potřeby podpůrného softwaru Rich Internet Applications by se daly dělit na ty, které vyžadují přítomnost nainstalovaného určitého podpůrného programu nebo prohlížečového pluginu a na ty, které ho nepotřebují.
Obr. 3.1.1. Dělení z hlediska potřeby podpůrného softwaru BOREK, Bernard. Rich Internet Applications v roce 2008. Interval.cz [online]. 2008 [cit. 200810-27]. Dostupný z WWW: .
Skupina RIA technologií nevyžadujících žádný podpůrný software má ve skutečnosti jen jednoho člena. Tím je AJAX. Ten podporují snad všechny moderní Stránka | 14
webové prohlížeče, což je zároveň jeho nejsilnější stránkou. Tím pádem je vhodný v případech, kdy je absolutní prioritou dostupnost co nejvíce uživatelům, kterou pluginové technologie mohou jen stěží poskytnout. Takovými případy mohou být například formuláře či jednoduché aplikace používané ve státní správě. AJAX je zároveň vhodnější použít na prezentačních stránkách s jednoduchou aplikační logikou. Z pohledu uživatele jsou AJAX aplikace jednodušší, jelikož nevyžadují žádnou instalaci nebo údržbu a fungují na jakémkoliv počítači s moderním webovým prohlížečem. Do první zmíněné skupiny, která se neobejde bez podpůrného programu či pluginu by pak patřily prakticky všechny ostatní technologie jako Mozilla Prism, Adobe AIR, JavaFX a další. Jejich velkou výhodou je, že se jedná o řešení jednoho výrobce, odpadá tím nutnost přizpůsobování různým prohlížečům. Další výhodou těchto řešení oproti samotnému AJAXu je jejich podstatně vyšší výkon než v případě JavaScript interpretu v prohlížečích. Lepší jsou zde i nástroje pro vývoj aplikací, použité technologie byly totiž vytvořeny přímo k tomuto účelu. Zároveň tato vývojářská prostředí obsahují nástroje, na které jsou programátoři zvyklí z prostředí pro vývoj klasických desktopových aplikací, jako jsou debugging, kontrola syntaxe a často nechybí ani WYSIWYG editory. Aplikace vyžadující podpůrný software nebo plugin mají také určité nedostatky, které nejsou zanedbatelné. Bez pochyb tím největším je nutnost mít nainstalovaný onen podpůrný software. Bez něho aplikace fungovat nebude. To je možné však docela elegantně vyřešit tím, že se software nainstaluje automaticky s instalací první aplikace. Uživatel tak stahuje pouze o několik megabytů více, než první program ve skutečnosti má. Zároveň asi žádná RIA technologie není tak rozšířená, jako jsou webové prohlížeče. Dalším nedostatkem je rozdíl v chování RIA aplikací oproti očekávání uživatelů. Ten se však týká pouze prohlížečových platforem a bude řešen v následujícím odstavci.
Stránka | 15
Díky svým vlastnostem se hodí tyto technologie v případech, kdy preferujeme více technických možností před co nejširší dostupností aplikace. Zároveň existují věci, které by jednoduše v AJAXu buď udělat nešly, nebo by byly příliš náročné na vývoj a tím pádem i nákladné. Z toho plyne, že pro složitější aplikace či objemné formuláře s mnoha daty, kde je navíc např. potřeba validace, je toto lepší řešení. Takovým příkladem mohou být například stránky finančních ústavů. Dalším případem jsou např. aplikace používané uvnitř jedné společnosti. Zde odpadá starost o maximální rozšíření. Každý, kdo aplikaci potřebuje ke každodenní práci, pravděpodobně nebude váhat stáhnout několik megabytů navíc. V případě, kdy potřebujeme výkon pro provádění náročných operací, jakou je např. editace fotek, jsou tyto technologie také jasnou volbou, jelikož umožňují využít lokálních zdrojů a často podporují hardwarovou akceleraci. Z hlediska místa, kde jsou spouštěny Dalším možným dělením by mohlo být to, jestli běží v prohlížeči nebo mimo něj. Prohlížečové RIA mají několik negativních vlastností. Např. pokud je dat ke zpracování či přenosu více, mohou mít tyto aplikace problémy. Uživatelé jsou zároveň zvyklí na určité chování prohlížeče a to může způsobit komplikace při práci s RIA. Tak často využívané ovládací prvky jako tlačítko zpět nebo historie procházení zde totiž nemusí fungovat. Problémem může být i fakt, že textová pole si oproti očekávání nepamatují již zadávané vstupy nebo správce hesel zadávaná hesla. Aby došlo k rozšíření aplikace a mohlo ji využívat co nejvíce uživatelů, je nezbytné brát ohledy na omezení starších prohlížečů, tím pádem není možné plně využít nové funkce těch moderních. Další nevýhodou prohlížečových RIA je nemožnost využití lokálních zdrojů počítače, jako jeho procesoru a grafické jednotky. Je to dáno bezpečnostními omezeními, která umísťují prohlížeč do omezujícího sandboxu 6. Zároveň většina prohlížečů dočasně „opravuje“ „Sandbox je bezpečnostní mechanismus pro bezpečný běh programů. Je často používán pro spouštění nedůvěryhodného kódu nebo aplikací od neověřených třetích stran, dodavatelů nebo nedůvěryhodných uživatelů. Sandbox je většinou tvořen pevně kontrolovanou množinou zdrojů přidělenou spouštěnému programu jako místo na disku či v paměti. Přístup do sítě, možnost zkoumat hostitelský systém nebo číst ze
6
Stránka | 16
bezpečnostní chyby tím, že zakáže podporu skriptování, čímž bezpečně znemožní fungování RIA založených na AJAXu. Dalším problémem je, že podpora různých funkcí se mezi jednotlivými prohlížeči liší, tím pádem je třeba se omezovat pouze na funkce, které mají prohlížeče společné. Dobrým příkladem omezení RIA běžících uvnitř prohlížeče je klasická AJAX aplikace Google Maps. Ta je schopná dělat mnoho užitečných věcí ale podpora 3D grafiky v ní, oproti velmi podobné desktopové RIA Earth od stejné společnosti chybí. Na můj vkus vtipně a trochu s nadsázkou vysvětluje výhody desktopových RIA Tim Negris na příkladu technického pracovníka záchranné služby, který se na svém zařízení Blackberry snaží rychle najít důležitou lékařskou informaci. “Stay with us, sir. Hang on!” (Zůstaňte s námi pane. Vydržte!) “Lessee, Applications… Browser… Bookmarks…” (Tak kde to máme, Aplikace… Prohlížeč… Záložky…) “He’s flatlining! Get the paddles!” (Ztratil puls! Přineste defibrilátor!) “Ah! Wrong Bookmark! Bookmarks… Got it… Page loading… Scroll down…Scroll down… There, Enter Patient Data…” (Ne! Špatná záložka! Záložky… Mám to… Stránka se načítá… Sjet dolu… Sjet dolu… Zde zadejte data pacienta…) “Sir? Can you hear me? Sir?” (Pane? Slyšíte mě pane? Pane?) “Damn, damn, damn!” (Sakra, sakra, sakra!) [16]
vstupních zařízení jsou většinou zakázány nebo přísně omezeny. V tomto smyslu je sandbox zvláštním zdrojem virtualizace.“ [23]
Stránka | 17
3.1.2 Pojem RIA podle odborníků
Na internetu je možné najít mnoho definic pojmu RIA. Já bych zde chtěl uvést dvě, které podle mého názoru tento pojem výborně vystihují. Ria z pohledu Andrewa Tricea Takto popisuje Rich Internet Application Andrew Trice, hlavní vývojář pro Flex a AIR ve společnosti Cynergy Systems. „V nejzákladnějším smyslu je RIA zkratka pro Rich Internet Application, ale to moc nevysvětluje, co ve skutečnosti RIA je. Myslím, že charakteristika, která nejvíce definuje RIA je uživatelský komfort (rich user experience). To neznamená nezbytně např. uhlazené grafické rozhraní, asynchronní přenos dat, stavové klientské rozhraní nebo jakoukoliv specifickou technologii. Zatímco toto mohou být běžné charakteristiky RIA, nedefinují je. Důležité je, jak je aplikace využívána a pro co je využívána. Rich Internet Application poskytuje značný komfort svým uživatelům. Měla by být jednoduše použitelná, poutavá a zacílená na bezchybné provádění svého úkolu. Pro mnoho lidí to znamená pocit jako při práci s desktopovou aplikací, poskytovanou přes web. To může zahrnovat takové vlastnosti jako drag and drop manipulaci s daty, schopnost vytvářet grafy a diagramy, ale tyto vlastnosti opět nejsou podmínkou. Uživatelského komfortu může být dosaženo mnoha různými způsoby. Jedním z nich může být např. použití stavového klienta a asynchronního přenosu dat. Přestože to není podmínkou, RIA je velmi často využívají ke splnění svých úkolů. Stavový klient je přesně to, co napovídá jeho název, tedy, že stavy aplikace jsou kompletně uchovávány na straně klienta. Nespoléhá se na server ohledně informací o uživatelově aktuální činnosti. To umožňuje zjednodušit logiku služeb na pozadí, která se tak stane více orientovaná na služby a asynchronní. Služby na pozadí mohou provádět specifické úkony založené na poskytnutých parametrech, bez ohledu na to, kdo je vyvolal. Zároveň uživatelské rozhraní není odkázáno čekat na provedení logiky na pozadí. Asynchronní datové přenosy jsou prováděny diskrétně, grafické rozhraní je však stále funkční a dostupné uživateli. Uživatel nemusí ani vědět, že byla volána nějaká vzdálená služba. To umožňuje hladké používání aplikace, které napomáhá získání pocitu jako při práci s desktopovou aplikací. Stránka | 18
Asynchronní datové služby obsahují typicky jen data a žádné deklarace uživatelského rozhraní. Je jen na stavovém klientu určit, jak mají být data zobrazena. Tím dochází ke snižování množství požadavků v obou směrech, a díky tomu ke snížení zatížení serveru a rychlejší odezvě rozhraní. Klientská aplikace nezůstává nevyužita, pokud dochází k volání vzdálené služby. Uživatel s ní stále může pracovat a aplikace je schopna poskytovat zpětnou vazbu, např. zobrazit animaci zatímco služba je prováděna. Další běžnou vlastností, která není podmínkou, je drag and drop funkcionalita. Pokud se zeptáte kohokoliv, především netechnicky zaměřených lidí, jestli je jednodušší vložit informace zapisováním do formulářů nebo přetažením ikonky na jiné místo a mít tak informace automaticky vložené, asi všichni zvolí druhou možnost. Tato technika se liší na základě použitých technologií, ale její přínosy jsou zřejmé. Přetahování věcí na online mapách, přesouvání zboží do nákupního košíku, posunovatelné objekty v online grafických editorech, to vše je možné, díky drag and drop funkcionalitě. Tato schopnost neexistovala v hlavní vlně online aplikací až do příchodu RIA revoluce. Teď je možné ji vidět všude. Dalšími vlastnostmi jsou grafická reprezentace dat a analytické nástroje. Ty také nemusí mít každá aplikace, pokud jsou však vhodně použity, představují významnou přidanou hodnotu. Mnoho RIA technologií umožňuje manipulovat s grafikou na obrazovce v běhovém prostředí. To umožňuje tvorbu diagramů, kompletní vizualizaci dat a v některých případech i 3D modelování. Obraz je někdy víc než tisíc slov a tyto funkce velmi zvýší vypovídací schopnosti aplikace. Uživatel se může jednoduše podívat a zjistit trend, bez toho, aby musel analyzovat tabulky plné dat. K tvorbě RIA se používá mnoho technologií, poskytujících různé možnosti. Neexistuje žádná, o které by se dalo říci, že je nejlepší pro tento účel. Její výběr by měl být určen jak našimi požadavky, tak požadavky uživatelů. Často volím Adobe Flex jelikož usnadňuje a urychluje vývoj ale možností je mnoho, např. AJAX, Microsoft Silverlight, JavaFX, atd. Neexistuje správný výběr pro všechny případy. Požadované vlastnosti a možnosti aplikace spolu s dostupnými zdroji na vývoj, technickými požadavky a současnou infrastrukturou by měly nejpřesněji určit technologii, která vyhovuje našim potřebám. U služeb na pozadí neexistuje žádný speciální požadavek. Nejsme omezeni na žádný konkrétní aplikační server nebo jazyk. Osobně jsem pracoval na RIA využívajících ColdFusion, Java/J2EE, .NET a PHP, ale existuje mnoho dalších možností. Stránka | 19
Stejně tak, jako v případě výběru technologie na straně klienta, by technologie na pozadí měla být vybírána na základě potřeb aplikace, dostupných zdrojů a infrastruktury. Poskytujeme dynamická data? Streamujeme media? Využíváme real-time messaging? Upgradujeme existující systém nebo vytváříme nový? Podporuje naše organizace open-source iniciativy? Preferuje naše společnost komerční produkty, které zahrnují technickou podporu? Jaký je rozpočet na technologie? Existuje zde mnoho proměnných a mnoho způsobů, jak tento problém vyřešit. RIA není záležitost jedné technologie a ani neočekávám, že někdy bude.“ Na dotaz jestli je web 2.0 RIA odpovídá Andrew Trice negativně. „Web 2.0 je marketingový buzzword. 7 Opravdu věřím, že pojem web 2.0 původně znamenal to samé jako RIA, ale byl příliš používán a zneužit. Web 2.0 byl degradován na cokoliv, co má takové grafické prvky jako zakulacené rohy, barevné přechody, průhlednost a odlesky. Nepochybuji, že pojem RIA bude také používán příliš často a zneužíván, ale myšlenky stojící za ním ne. Všechno záleží jen na konkrétní aplikaci, uživatelském komfortu a schopnosti aplikace provádět to, k čemu je určená dobře. Jestli je RIA v konkrétním případě správným, řešením záleží vždy na kontextu. V mnoha případech správným řešením je a v mnoha není. RIA se nejlépe hodí pro aplikace, ne pro webové stránky. To je důležité rozlišit. Myslím, že omezené množství RIA prvků, jako asynchronní vyhledávací funkce pro textová pole, může být užitečné i na webové stránce. Příliš mnoho by ale mohlo stránky zničit a učinit je náročné na používání. RIA je výborná volba pro kancelářské aplikace, obchodní analytické aplikace, multimediální aplikace, grafické aplikace a online mapy ale nedá se použít v každém případě. Mnoho RIA technologií způsobuje stránkám problémy s indexováním vyhledávači. RIA technologie musí být navrženy včetně optimalizace pro vyhledávače, aby nedocházelo k problémům. Pokud jsou použity správně, aplikace mohou mnoho získat použitím RIA zásad a technologií. Tak, jako je to s každou technologií, RIA mohou být používány příliš mnoho a zneužívány a záleží pouze na úsudku vývojářů a provozovatelů, aby je využili v rozumné míře. Vývojář nebo poskytovatel aplikace by měl znát svoje zákazníky nejlépe.“ [11] 7
Buzzword je výraz pro moderní, často používané slovo, které nemá žádný velký význam.
Stránka | 20
RIA z pohledu Tonyho MacDonnela Tony MacDonnel je zakladatel společnosti Teknision, založené v roce 2001, která se specializuje na vývoj RIA. „Aplikace nás informují, baví nás a posilují naše schopnosti, jsou základem veškeré práce s počítačem. Většina problémů, kterým musí běžný uživatel čelit při práci s nimi, pramení ze způsobu, jakým byly aplikace po léta vyvíjeny. Tradiční aplikace jsou svázány s naším počítačem. Často jsou svázány také s operačním systémem a souborovým systémem, který operační systém používá. Vyžadují instalace, které trvají dlouho, jsou nudné a většina obsahu, který vytváří a používají, je uchováván lokálně, čímž je obtížné ho sdílet s ostatními. Problém toho všeho je, že jsme nuceni porozumět celé vrstvě, nad kterou aplikace běží. V případě, že chceme udělat nějakou práci nebo si užít zábavu, musíme se napřed vyznat v typech souborů, kodecích, ovladačích a ostatních věcech, které ve skutečnosti nemají nic společného s úkolem, který se snažíme splnit. Všichni se tak musíme vyznat v počítačích, stejně tak jako v oboru, kterým se zabýváme. Oproti tomu World Wide Web přinesl obrovské množství změn v používání počítače pro běžné uživatele. Můžeme si užít digitální zábavu, kterou je jednoduché najít a používat. S nástupem standardů, proti kterým byly webové prohlížeče vyvíjeny, lidé si mohou užívat obsah na webu stejně kdekoliv a kdykoliv. Zpočátku jsme web využívali pouze k získávání informací, dnes je však velmi hojně a efektivně využíván k zábavě nebo k posílení našich schopností. Rich Internet Applications jsou novým druhem aplikací, který v sobě snoubí to nejlepší z webu a to nejlepší z tradičních desktopových aplikací. Hlavním úkolem RIA je umožnit vykonávat práci na webu. Způsob, jakým jsem zvyklý něco dělat, by mi měl být dostupný všude bez ohledu na to, jaký operační systém používám. Moje data nebo obsah, který vytvořím, by mi měly být dostupné vždy přesunutím veškeré rozpracované práce
Stránka | 21
z počítače do „oblaků“ 8. Tím dochází k naplnění významu internetu v případě Rich Internet Application. Když aplikace a k nim patřící data opravdu sídlí v oblacích, objevují se nové radikální možnosti. Schopnost sdílet data nebo spolupracovat s ostatními se stává mnohem snazší. Lidé mohou spolupracovat na úkolech v reálném čase nebo asynchronně, stejně tak, jako používat streamovaná 9 média a text ke komunikaci mezi sebou tak, jak spolupracují na nějakém projektu. Zdařené RIA zároveň umožňují uživateli vypustit starost o různé typy souborů. Data jsou uložena podle kontextu a podle něho je zároveň možné v nich vyhledávat. Ve skutečnosti se nikdy nesetkáte s klasickými soubory, při práci s RIA pracujete místo toho spíše se svými myšlenkami. Tento způsob práce může být mnohem produktivnější. Lidé se soustředí jen na dokončení svého úkolu a v případě koncového uživatele nepotřebují žádné znalosti o platformě, nad kterou aplikace běží. Pojem Rich (bohatý) odkazuje na uživatelský komfort. RIA neztrácí funkcionalitu nebo použitelnost tím, že se nachází v oblacích. Moderní webové technologie jako Adobe Flash Player, Microsoft Silverlight a Java jsou jen několika populárními technologiemi, které mohou být použity k vytvoření rozhraní aplikace pro web, které je tak efektivní ve vykonání své práce jako jeho desktopové protějšky. Tradiční web se spoléhá na několik základních prvků v rozhraní, které už všichni známe. Věci jako odkazy, combo boxy a formuláře jsou výborné při práci s interaktivními stránkami, ale nejsou už tak užitečné při editování obrázků, streamování videa, zakreslování GPS dat nebo uskutečňování telefonních hovorů. Požadavky na nové uživatelské rozhraní u zmíněných
„Cloud computing je přístup, kdy informace jsou permanentně skladovány na serverech umístěných v internetu a využívány klienty na stolních počítačích, multimediálních centrech, noteboocích, mobilních zařízeních, atd.“ [13]
8
„ Streaming je technologie kontinuálního přenosu audiovizuálního materiálu mezi zdrojem a koncovým uživatelem. V současné době se streamingu využívá především pro přenášení audiovizuálního materiálu po internetu (webcasting). Webcasting může probíhat v reálném čase (internetová televize nebo rádio), nebo systémem Video on demand.“ [24]
9
Stránka | 22
technologií umožnily designérům a vývojářům využít zcela nových způsobů, jak pracovat s těmito typy dat a pracovními postupy. Všechno tohle jsou výborné věci, ale jsou zde i okamžiky, kdy má smysl mít aplikaci na pracovní ploše. Mohu např. požadovat, aby aplikace měla přístup k datům uloženým v počítači, nebo být tak silný uživatel určité aplikace, že ji budu chtít mít spuštěnou na svém počítači stále. Mohu totiž požadovat být upozorněn na nějakou událost současně s tím, jak pracuji na jiném úkolu a webové aplikace jsou standardně špatné v této činnosti. Mnoho RIA technologií poskytuje schopnost spouštět aplikace na ploše. Např. společnost Adobe nabízí Adobe AIR, technologii, která rozšiřuje Adobe Flash Player a zahrnuje podporu AJAXu a PDF. Umožňuje vytvářet aplikace, které běží na ploše jako nativní aplikace na jakémkoliv operačním systému. Microsoft nabízí Windows Presentation Foundation (WPF), JavaFX umožňuje spouštět aplikace lokálně, Mozilla nabízí Prism a Google nabízí Google Gears. Tohle všechno jsou technologie, které vyplňují mezeru mezi RIA a tradiční plochou. Přenosné a stolní počítače nejsou zdaleka jediným místem, kde bychom čekali uživatelský komfort a chtěli přistupovat k našim datům. Kvalitní technologie musí rozšířit svou přítomnost na další zařízení, včetně mobilních telefonů nebo televizních přístrojů. Většina zmíněných technologií nabízí možnost vyvíjet pro různé druhy zařízení. Tato oblast je na vzestupu, ale může se stát tou nejkritičtější. Je zde požadavek na přítomnost těchto technologií na mnoha různých zařízeních, ještě však zdaleka nebylo rozhodnuto o tom, která to bude. Rich Internet Applications začínají silně ovlivňovat celý svět softwarového průmyslu. Tento článek jsem napsal s použitím RIA nazývané Buzzword. Jedná se o úžasný příklad, jak Rich Internet Applications začínají pronikat do tak požadovaných a pro desktopové aplikace běžných oblastí, jakou jsou v tomto případě textové editory. Je úžasné být součástí revoluce v počítačovém světě, která opravdu činí práci jednodušší, lépe dostupnou a zábavnější pro každého.“ [11]
Stránka | 23
3.2 Běhové prostředí (runtime environment) Podle různých definic 10 je běhové prostředí (runtime environment) „prostředím poskytujícím provozní služby, které mohou být využity komponentami (typicky aplikacemi či applety) při běhu, poskytuje propojení se systémem a definuje jejich omezení“. Podle jiné je to softwarová komponenta určená a licencovaná k umístění aplikace. Wikipedia jej definuje jako „určitý typ virtuálního stroje, který poskytuje softwarové služby pro procesy nebo programy za běhu počítače. To může provádět buď přímo operační systém, nebo software, který pod ním běží. Primárním účelem je přitom dosáhnout nezávislosti na platformě“ (myšleno operačním systému). [7] V jistém smyslu jsou tedy běhová prostředí druhem virtuálního stroje. Ty klasické, někdy nazývané hardwarové, standardně emulují 11 počítačový hardware a jsou určené k instalaci celého operačního systému. Běhová prostředí, nazývaná také aplikační virtuální stroje běží jako standardní aplikace uvnitř operačního systému. Jejich primárním účelem je odstranit závislost na určitém operačním systému. Tím pádem je možné používat tentýž program na různých platformách a beze změny v jeho funkcionalitě. Toho je dosaženo překládáním kódu. Často se využívá tzv. metoda Just-in-time 12 kompilace, která se nazývá také dynamický překlad.
Carnegie Mellon University : PACC Glossary [online]. c2008 [cit. 2008-12-04]. Dostupný z WWW: . [25]
10
„Emulátor je druh software umožňující běh počítačových programů na jiné platformě (architektuře, operačním systému), než pro kterou byly původně vytvořeny a kterou samy od sebe podporují. Typickým příkladem emulátoru je program umožňující běh videoher známých z herních konzolí na běžném PC pod Microsoft Windows či Linuxem. Emulace je speciálním případem virtualizace (někdy se však chápe jako silnější pojem).“ [26] 11
„JIT je anglický akronym Just In Time a jedná se o speciální metodu překladu aplikací urychlující běh interpretovaných programů. Používá se např. v jazyku Java. Program, který je spuštěn a prováděn, může být interpretem v době provádění přeložen přímo do nativního kódu stroje, na kterém běží. Tím pádem dochází k urychlení provádění programu. Je to ale vykoupeno dobou, kterou interpret jazyka stráví překladem do nativního kódů, proto se do nativního kódu často překládají jenom mnohokrát (řádově 10 000x) volané úseky programu.“ [27]
12
Stránka | 24
3.3 Cloud computing Cloud computing je dalším termínem, který je vhodné uvést při objasňování pojmu Rich Internet Application. Jedná se o velmi široký pojem, který bývá také často označován za buzzword stejně tak, jako web 2.0, Software as a Service nebo Application Service Provider, technologické trendy, které by se svým konceptem daly zařadit pod cloud computing také, jelikož se stejně tak spoléhají v poskytování služeb a aplikací uživateli na připojení k internetu. U nich je také obtížné najít obecně přijímanou definici, jelikož často ani neexistuje. Jak sám název napovídá, je možné si pod pojmem cloud computing představit prakticky vše, co sídlí v „oblacích“. Tím mohou být třeba pouze jednoduché webové stránky, online datová úložiště nebo webové e-maily. Zároveň by sem ale patřily i gridy a distribuované systémy umístěné na různých místech v internetu, sloužící k získání velkého výpočetního výkonu. Dalším případem mohou být virtualizované desktopové aplikace nebo celé operační systémy běžící uvnitř prohlížeče. Podle definice je cloud computing „přístup, kdy informace jsou permanentně skladovány na serverech umístěných v internetu a využívány klienty na stolních počítačích, multimediálních centrech, noteboocích, mobilních zařízeních, atd.“ [13] Těmito charakteristikami cloud computing nápadně připomíná Rich Internet Applications. V jejich případě se uživatel spoléhá na dostupnost aplikací a dat z libovolného počítače, kterému stačí připojení k internetu, jelikož aplikační logika a uživatelská data bývají uloženy také v oblacích. K datům pak uživatel přistupuje pomocí webového prohlížeče nebo jiného klienta.
3.4 Smart client V sedmdesátých letech byl počítačový svět centralizován. Řídícím prvkem byly počítače nazývané mainframy 13 a jako klienti se používaly jednoduché terminály. Ty „Mainframe je počítač používaný převážně velkými firmami pro kritické aplikace, často zahrnující zpracovávání velkých objemů dat. Mezi typické úlohy zpracovávané mainframy patří sčítání lidu, rozsáhlé statistické úlohy, ERP nebo finanční transakce. Většinou se jedná o sálové počítače, které byly konstruovány 13
Stránka | 25
fungovaly jako tzv. tenký klient. Jednalo se o velmi jednoduché počítače, sloužící k připojení k mainframu, na kterém probíhala celá vlastní práce. Terminál sloužil pouze pro výměnu vstupů a výstupů mezi uživatelem a mainframem.
Obr. 3.4.a Mainframe Total Training. Total training for Adobe Flex 3 [CD-ROM]. c2008.
Později došlo k přesunu výpočetní síly na samotné stolní počítače. Ukázalo se, že to také není ideální řešení a že by bylo lepší rozdělit výpočetní výkon rovnoměrně. Tím řešením byla architektura klient-server.
do enormních rozměrů v řádu místností. Později byl výraz Mainframe používán pro komerční koncové počítače s méně výkonnými jednotkami, které se často skládaly z menších částí.“ [28]
Stránka | 26
Obr. 3.4.b Architektura klient-server Total Training. Total training for Adobe Flex 3 [CD-ROM]. c2008.
V polovině devadesátých let s příchodem HTTP a prohlížečových aplikací se stal tenký klient znovu populární. Začala být důležitá mobilita a možnost práce odkudkoliv. K rozšíření tenkého klienta napomohlo mnoho nových mobilních zařízení, na kterých bylo možné také pracovat s oblíbenými aplikacemi. Současně s přesunem od „tlustého klienta“, kdy většina aplikační logiky byla vykonávána na straně uživatele, ke klientu tenkému, došlo s používáním HTTP ke zhoršení odezvy a možností uživatelského rozhraní. Zároveň došlo k velkému nárůstu množství přenášených dat mezi serverem a klientem a ten se stal závislý na serveru. To se časem také ukázalo jako nedokonalé řešení. Objevila se myšlenka spojit dobré vlastnosti z „tlustého klienta“, jako byl výpočetní výkon na klientské straně a nízká závislost na serveru s těmi dobrými z tenkého klienta. Ty reprezentuje především dostupnost aplikace a dat odkudkoliv, jelikož jsou trvale uloženy na serveru. Tak vznikl koncept zvaný Smart klient.
Stránka | 27
Obr. 3.4.c „Chytrý klient“ PHILIPPE, Truche. Beyond the web browser : Smart Clients as Client-based Rich Internet Applications [online]. 2008. [cit. 2008-12-12]. Dostupný z WWW: .
Smart klient je schopen využívat jak data uložená lokálně na počítači, tak ta na serveru. V okamžiku, kdy není připojení k internetu dostupné, pracuje uživatel s daty uloženými v počítači a při připojení dojde k jejich synchronizaci. Jedná se tedy o logický krok, kdy poté, co byl výkon umístěn buď výhradně na straně serveru, nebo na straně klienta, se umístil někde uprostřed. Podle časopisu MicroScope tady takový koncept existuje ale již delší dobu a takovým ukázkovým příkladem je e-mail. „Emailové aplikace na straně klienta by byly k ničemu bez serverů, ke kterým se připojují. Tím, že zároveň umí uchovávat e-maily lokálně, představují perfektní definici smart klientů. Skladují data lokálně a umožňují k nim přístup, ale zároveň mají velmi úzký vztah se zdroji umístěnými v internetu i nejrůznějšími emailovými klienty (počínaje Outlookem až po aplikace pro mobilní telefony), které mohou být použity k přístupu a práci s těmi samými daty.“[17]
Stránka | 28
3.5 Site-specific browser Myšlenka, na které je site specific browser založen je ta, že se jedná o aplikaci se zabudovaným prohlížečem, sloužícím k běhu pouze té konkrétní aplikace. Někdy se koncept SSB také nazývá „distraction free browser“ [29], tedy něco ve smyslu prohlížeče, který nerozptyluje. To je dané faktem, že tyto „jednoúčelové prohlížeče“ neobsahují žádné nástrojové lišty, záložky, menu nebo navigační tlačítka, které nejsou při používání aplikací potřeba. Současně SSB poskytuje lepší provázání s pracovní plochou než klasický webový prohlížeč. Toho je dosaženo např. pomocí zástupců jednotlivých aplikací na ploše, možnosti zobrazení ikon aplikací ve správci úloh nebo panelu nástrojů. Díky tomu je přepínání mezi úlohami mnohem snadnější, jelikož vidíme přímo ikonu dané aplikace a ne samotného prohlížeče. To vše přispívá k lepšímu uživatelskému komfortu. Další výhodou tohoto konceptu je fakt, že aplikace spuštěná v SSB běží jako samostatný proces. To se hodí například při spouštění náročnějších aplikací, u kterých je vyšší riziko jejich pádu. Když se to stane, neriskujeme ztrátu neuložených dat i z ostatních otevřených listů v okně prohlížeče. Při delší práci v rámci mnoha hodin nebo dní, kdy máme otevřených více listů, dochází navíc k citelnému zpomalení. Díky skutečnosti, že běží aplikace v samostatném okně, je zároveň snížena pravděpodobnost, že omylem zavřeme list, u kterého jsme to neměli v úmyslu a přijdeme tak o již vykonanou práci. Je zde ale ještě jedna obrovská výhoda SSB v podobě bezpečnosti, která ho odlišuje od obyčejných oken prohlížeče bez ovládacích prvků. Právě bezpečnost činí klasickým prohlížečům problémy. Při návštěvách webových stránek prohlížeč ukládá cookies na disk. Ty jsou pak dostupné jakékoliv stránce, kterou navštívíme. Podle nich je možné zjistit mnoho citlivých údajů o uživateli. Často dochází k odcizení dat, jelikož lidé surfují na webu, zatímco mají v jednom z listů prohlížeče otevřený webový e-mail nebo elektronické bankovnictví. Pokud totiž může přistupovat k citlivým údajům stránka, na které jsme přihlášeni, může tak činit jakákoliv jiná Stránka | 29
stránka, kterou máme otevřenou v jiném listu. Je pravda, že takové chování se neslučuje s bezpečným používáním internetu, ale mnoho lidí o tom nemá tušení. Proto je také doporučeno používat jiný prohlížeč při přístupu k aplikacím pracujícím s citlivými údaji nebo prohlížeč zavřít a spustit znovu pouze pro tuto kritickou aplikaci, aby tak ostatní stránky neměli přístup k uloženým cookies. Pokud však máme kritickou aplikaci spuštěnu v SSB, její cookies jsou dostupné pouze jí nehledě na to, co děláme v ostatních oknech prohlížeče a na jakých stránkách se nacházíme. To je obrovskou výhodou u často používaných aplikací, které pracují s citlivými údaji, o které bychom neradi přišli. Na tomto principu pracují některé RIA technologie. Například nadace Mozilla se hlásí k tomuto konceptu se svým Prism, který představuje SSB založený na Mozilla XULRunner. Za zmínku stojí také site specific browser Fluid, založený na opensource renderovacím jádru WebKit, určený pro Mac OS X. Pro Windows je pak k dispozici např. BubblesHQ nebo nedávno uvolněný webový prohlížeč Google Chrome, který nabízí možnost vytvoření zástupce pro jakoukoliv stránku a její běh v samostatném okně, ačkoliv se jedná o plnohodnotný prohlížeč.
Stránka | 30
4. Technologická řešení V této kapitole bych rád představil několik nejpoužívanějších platforem pro tvorbu a běh Rich Internet Application.
4.1 AJAX Pojem AJAX (Asynchronous JavaScript And XML) byl poprvé představen prezidentem společnosti Adaptive Path Jesse Jamesem Garrettem v roce 2005, ačkoliv do něho patřící technologie existovaly již dříve a společnosti je již několik let používaly. Podle Garretta je velkou slabinou internetových aplikací jejich pomalá odezva a uživatelský komfort, které také vývojáři webových aplikací vývojářům těch desktopových závidí. „Ta samá jednoduchost, která umožnila rychlé rozšíření webu, zároveň tvoří mezeru mezi uživatelským komfortem (user experience), který můžeme poskytnout a tím, který uživatelé znají z desktopových aplikací.“ [30] Podle něho však dochází k uzavírání pomyslné mezery, jež ukazuje na inovativních aplikacích Google Suggest a Google Maps. Ty mají výhodu, že reagují téměř okamžitě, aniž by bylo potřeba obnovení stránky. Podle Garretta představují ukázku nového přístupu k webovým aplikacím, který v Adaptive Path nazývají AJAX. AJAX není samostatnou technologií nýbrž jejich skupinou, do které patří XHTML a CSS založené na standardech pro prezentaci dat, DOM (Document Object Model) pro dynamické zobrazení a interakci. Další složky tvoří XML a XSLT 14 k výměně a nakládání s daty, asynchronní výměna dat XMLHttpRequest a jazyk JavaScript. U klasických webových aplikací většina úkonů uživatele vyústí v http požadavek směrovaný na webový server. Server provede nějaké výpočty a pošle zpět HTML stránku uživateli. Základním nedostatkem tohoto systému je jeho časová náročnost. Co bylo u klasických webových stránek běžné a nebránilo v jejich používání, může u „Transformace XSLT (eXtensible Stylesheet Language Transformations) slouží k převodům zdrojových dat ve formátu XML do libovolného jiného požadovaného formátu, nejčastěji HTML, jiného XML nebo libovolných jiných datových struktur.“ [58]
14
Stránka | 31
webových aplikací znepříjemňovat práci a snižovat tak uživatelský komfort. Po každé akci totiž musí uživatel čekat po dobu, než server zpracuje jeho požadavek a než dojde k překreslení celé stránky.
Obr. 4.1 Srovnání synchronní a asynchronní komunikace GARRETT, James. Adaptive Path : Ajax: A New Approach to Web Applications [online]. 2005 [cit. 2008-12-15]. Dostupný z WWW: .
V případě AJAXu je tomu jinak. Ten představuje jakousi vrstvu mezi aplikací a serverem, díky které je komunikace mnohem rychlejší. Celé to funguje tak, že při vstupu na stránku s aplikací dojde ke spuštění tzv. AJAX enginu, namísto běžného načtení dané stránky. Ten běží na straně klienta a stará se o renderování grafického rozhraní a komunikaci se serverem. Komunikace mezi aplikací a uživatelem probíhá nezávisle na komunikaci mezi aplikací a serverem, odsud slovo asynchronní. Zároveň každý uživatelův dotaz není rovnou směrován na server v podobě http Stránka | 32
requestu, nýbrž je nejdříve vyhodnocen AJAX enginem, který odešle rovnou odpověď v případech, kdy není potřeba kontaktovat server. V případech, kdy to potřeba je, kontaktuje server. Aplikace tak kontaktuje server pouze v případech, kdy je to opravdu nutné, čímž se množství dotazů na server při vhodné implementaci výrazně sníží. Současně díky faktu, že se nepřenáší celá stránka, ale pouze data, která se změnila, by mělo dojít k snížení jejich objemu. Pro vývoj aplikací pomocí AJAXu existuje celá řada vývojových prostředí, které tento proces zjednodušují. K dispozici je například populární prostředí Eclipse, které spolu s konkrétním pluginem umožňuje tvorbu RIA založených na této technologii. Existují i další open-source vývojová prostředí, mezi která patří např. Dojo toolkit, OpenLaszlo nebo Nexaweb. Google jako velký příznivec AJAXu také poskytuje open-source vývojové prostředí GWT (Google Web Toolkit), jehož výhodou je možnost tvorby AJAX aplikací pomocí jazyka Java a rozsáhlé množství nástrojů.
4.2 Curl a Curl Nitro 4.2.1 Platforma Curl
Prvním technologií vyžadující podpůrný software je Curl. Ta se orientuje především na podnikový sektor a v současnosti je nejrozšířenější mezi firmami v Japonsku, pravděpodobně díky tomu, že je vyvíjena japonskou společností. Tato platforma byla navržena za účelem poskytování co nejširších možností vývoje především podnikových aplikací. Tato technologie je cross-platformní, to znamená, že nevyžaduje pro svůj běh žádný konkrétní systém tak, jak je tomu například u webových aplikací postavených na Microsoft .Net nebo J2EE. Platforma Curl se skládá ze tří základních komponent: Curl content language Curl runtime engine (Curl RTE) Curl integrated development environment (Curl IDE) Stránka | 33
Obr. 4.2.1 Platforma Curl Curl: Produkt data sheet [online]. 2007 [cit. 2008-11-18]. Dostupný z WWW: .
4.2.2 Curl content language
Curl content language se zakládá na technologiích HTML a JavaScript, pomocí kterých probíhá vývoj aplikací. Samotná platforma Curl je navržena na základě vlastního jazyka Curl content language, který umožňuje jednotný zápis informací, stylů a chování a umožňuje zahrnout popisné a aktivní prvky počínaje HTML textovými formáty až po 3D grafiku. Výhodou tohoto jazyka je, že všechny popsané možnosti můžeme využít najednou uvnitř jednoho vývojového prostředí a není třeba tedy práci přerušovat a přecházet do jiné aplikace, jelikož veškerý obsah a chování můžeme vytvořit zde. Další výhodou tohoto jazyka je, že umožňuje tvorbu přehledných uživatelských rozhraní vyjádřených v relativně jednoduchém kódu a bez velkých časových nároků. Naopak jeho nevýhodou je jeho „originalita“ a odlišnost od běžně používaných jazyků, která může některé vývojáře od jeho používání odradit. 4.2.3 Curl runtime engine
Curl RTE se stará o spouštění aplikací vytvořených pro tuto platformu a zobrazování výsledného obsahu na straně klienta. Je tedy potřeba ho mít Stránka | 34
nainstalovaný před používáním aplikací. Je dostupný zdarma na stránkách společnosti ve formě souboru s instalátorem a jeho velikost se pohybuje mezi sedmi až šestnácti MB v závislosti na operačním systému, pro který je určen. Dostupný je pro tři hlavní platformy tedy Windows, Macintosh a GNU/Linux. Curl RTE obsahuje kompiler, který překládá aplikace napsané v Curl content language na kód, který je posléze vykonáván pomocí zdrojů klientského stroje. Jednou ze součástí tohoto běhového prostředí je tzv. garbage collector, který dohlíží na bezpečné a efektivní využití paměti. Společně s objektově orientovanou architekturou to jsou jedny z důležitých vlastností této platformy. Další vlastností, kterou je třeba zmínit, je podpora 2D a 3D grafiky, která umožňuje tvorbu atraktivních GUI 15. Knihovna 2D grafiky umožňuje přístup k zobrazovacím schopnostem s podporou hardwarové akcelerace, průhlednosti a anti-aliasingu 16 pro lepší grafické výstupy. Zároveň je zde knihovna pro zobrazování obrázků a používání různých filtrů. Knihovna pro 3D grafiku podporuje dva módy, první okamžitý pro méně náročné operace a druhý pro náročnější vykreslování grafiky s využitím hardwarové akcelerace. Za zmínku také stojí vestavěné časovače vhodné při použití dynamických grafických rozhraní a možnost přehrávání zvukových souborů. V grafickém rozhraní je možno použít téměř jakýkoliv jazyk včetně jeho národních znaků. Běhové prostředí si poradí s čínštinou, japonštinou nebo korejštinou a to jak ve výstupu aplikace, tak v jejím vstupu. Dalším důležitým faktorem, hrajícím roli při posuzování určité technologie je její bezpečnost. Ta je řešena u Curl pomocí tzv. sandboxu. Nemělo by tím pádem dojít ke ztrátě, poškození či odcizení informací z klientského počítače. Tím je zaručena relativní bezpečnost i u aplikací vydaných třetími stranami a bez patřičného podpisu. „Grafické uživatelské rozhraní (anglicky Graphical User Interface, známe pod zkratkou GUI) je uživatelské rozhraní, které umožňuje ovládat počítač pomocí interaktivních grafických ovládacích prvků. Na monitoru počítače jsou zobrazena okna, ve kterých programy zobrazují svůj výstup. Uživatel používá klávesnici, myš a grafické vstupní prvky jako jsou menu, ikony, tlačítka, posuvníky, formuláře a podobně.“ [59] 15
„Ve zpracování digitálního signálu, anti-aliasing představuje techniku minimalizace pokřivení objektů, které se objevuje při zobrazování signálu s vysokým rozlišením pomocí nízkého rozlišení.“ [60] 16
Stránka | 35
Ve výchozím nastavení jsou totiž aplikace stažené z webu pokládány za nedůvěryhodné. K nastavení aplikace nebo webové stránky, jako místa s aplikacemi jako důvěryhodné, slouží Curl control panel, který ovládá chování Curl RTE. Důvěryhodné aplikace pak mohou být spouštěny se všemi právy, která má jakákoliv jiná aplikace nainstalovaná na počítači. Ve společnostech, kde aplikaci používá více uživatelů na více stanicích má administrátor možnost přiřadit práva aplikacím na všech stanicích centrálně. Není tak třeba je nastavovat na každé stanici zvlášť a zároveň se zabrání zásahu uživatelů do bezpečnostních nastavení definovaných správcem. Co se týče konektivity, Curl podporuje několik protokolů a služeb jako HTTP, HTTPS, TCP/IP, SOAP, a cookies. XML data mohou být zpracována pomocí integrovaného XML parseru. Curl RTE je zároveň schopné pracovat s daty z databází nebo webových služeb. 4.2.4 Curl integrated development environment
Curl IDE 17, tedy vývojové prostředí pro Curl je dostupné ve dvou verzích. První z nich je Personal IDE, které je zdarma pro nekomerční použití. Druhou variantou je Pro IDE, které je třeba zakoupit a může být využito ke komerčním účelům. Obě verze obsahují nástroje jako editor zdrojového kódu, debugger, tedy nástroj sloužící k odlaďování chyb, grafický editor s podporou funkce drag and drop, která umožňuje přetažení objektů myší mezi okny. Dále jsou zde nástroje na řízení projektu, na rozmísťování a také dokumentace. Mezi funkce, které obsahuje jen komerční verze vývojového prostředí, patří např. monitor HTTP přenosů, prohlížeč tříd, možnost vytvářet komprimované instalační soubory a několik dalších funkcí, které usnadňují a urychlují vývoj aplikací.
„Integrated development environment, známé též jako integrated design environment nebo integrated debugging environment je softwarová aplikace, která poskytuje komplexní prostředky pro vývoj aplikací. Běžně se skládá z editoru zdrojového kódu, kompileru nebo interpretu, automatických nástrojů na usnadnění práce a debuggeru.“ [61] 17
Stránka | 36
4.2.5 Curl Nitro
Jelikož samotná platforma Curl umožňovala běh aplikací pouze uvnitř prohlížeče, začala společnost Nitro pracovat na jakési nadstavbě. Tou je právě Curl Nitro, která se v současnosti nachází ve stavu druhé beta verze. Jeho hlavním úkolem je umožnit běh aplikací mimo prohlížeč a jejich spouštění přímo z plochy. Před používáním Curl Nitro aplikace je opět třeba nejprve nainstalovat samotné prostředí, které je opět k dispozici v jednom instalačním souboru ve verzích pro Windows, Macintosh a GNU/Linux a jeho velikost se pohybuje od šesti do sedmnácti MB. K dispozici je také vývojové prostředí Nitro IDE. Při instalaci Nitro aplikací máme možnost vytvořit zástupce na ploše a v nabídce start. Další možností nabízející Nitro RTE pro jeho desktop applety oproti samotnému Curl RTE, je možnost využít populární databázi SQL při návrhu aplikací. Současně mají desktopové applety, tedy vlastně aplikace pro Nitro více přiděleného místa na disku. Applety jsou spouštěny v sandboxu s přístupem k lokálním datům ale s omezenými právy, aby byla zaručena větší bezpečnost. Dále Curl nabízí konfigurační soubory, které mohou administrátoři použít ke změně bezpečnostních pravidel a omezit tak dostupné domény Curl aplikacím. Pro přístup aplikací k jiným doménám než k původní doméně aplikace slouží tzv. permission file, do kterého je možné zapsat další povolené adresy. Aplikace podepsané certifikační autoritou mohou přistupovat k jakékoliv doméně a ke zdrojům počítače.
Stránka | 37
Obr. 4.2.5 Zabezpečení Curl: Curl Nitro Beta [online]. 2006 [cit. 2008-11-18]. Dostupný z WWW: .
Stránka | 38
4.3 Mozilla XULRunner a Prism 4.3.1 Mozilla XULRunner
Další technologii představuje Mozilla XULRunner. „XUL je zkratka slov XML User Interface Language. Jedná se o formát pro tvorbu multiplatformního grafického rozhraní, který je používán v produktech Mozilla jako například Firefox či Thunderbird. Jeho jedinou kompletní implementací je renderovací jádro Gecko. XUL staví na existujících webových standardech a technologiích jako CSS, JavaScript a DOM, což činí naučení XULu relativně snadné pro lidi znající tyto technologie.“ [37]
Obr. 4.3.1 Vztahy mezi jazyky v XULRunner STEARN, Brent. XULRunner: A New Approach for Developing Rich Internet Applications. IEEE Internet Computing [online]. 2007, vol. 11, no. 3 [cit. 2008-11-18]. Dostupný z WWW: .
XULRunner je vyvíjen nadací Mozilla a její vývojářskou komunitou. Jeho první stabilní verze se objevila v roce 2006 pod označením 1.8 a nahradila původní projekt pod označením Gecko Runtime Environment. „GRE byla část balíku Mozilla Suite (nyní SeaMonkey) instalovaná do sdíleného umístění s cílem, aby tento runtime mohly využívat i další aplikace. Bohužel s tím byla spojena řada problémů, takže se tento koncept neukázal jako perspektivní. V březnu 2005 publikoval Benjamin Smedberg vizi, jak tyto problémy řešit a dal tak k dispozici základ, ze kterého vzešel XULRunner.“ [38] V současnosti je k dispozici verze 1.9, která vyšla v polovině tohoto roku. Ta sdílí velkou část kódu s nejnovější verzí populárního webového prohlížeče Mozilla Firefox 3. To umožňuje spouštět aplikace určené pro XULRunner v prostředí prohlížeče Firefox 3. Samotné běhové Stránka | 39
prostředí je k dispozici pro všechny tři hlavní platformy ve formě archivu bez instalátoru, což může být komplikací pro méně zdatné uživatele. V současnosti neexistuje žádné vývojové prostředí pro tvorbu aplikací určených pro XULRunner tak, jak je tomu např. v případě platformy Curl, což může být velkou nevýhodou a bránit tak v jeho rozšíření. Reakcí na to může být XUL development kit, který je zatím ve fázi vývoje. Ten má obsahovat nástroje pro tvorbu XUL aplikací a doplňků k nim. Jeho hlavním úkolem bude poskytnout možnost vytvářet aplikace pouze za pomoci XUL a JavaScriptu. Výsledkem by měly být soubory XPI 18. [40] 4.3.2 Mozilla Prism
Tak jako má Curl technologii Nitro, která mu umožňuje přesunout webové aplikace na pracovní plochu, má Mozilla svou technologii Prism. Projekt vznikl v roce 2007 a jeho dřívější název je Webrunner. Jádrem Prism, stejně jako webového prohlížeče Firefox 3, je platforma XULRunner, což sebou nese výhody např. v podobě možnosti instalace doplňků pro Firefox. Prism se zakládá na myšlence SSB (site specific browser). Můžeme si ho představit jako velmi jednoduchý prohlížeč bez různých nástrojových lišt a menu, které ve skutečnosti nejsou pro běh jednotlivých aplikací vůbec potřeba. V něm pak běží aplikace místo toho, aby byly spouštěny v běžném prohlížeči. Zároveň tento koncept nabízí užší propojení s počítačem a jeho operačním systémem než běžné webové aplikace. Tak jako ostatní podobná řešení, umožňuje i Prism vytvářet zástupce aplikací na ploše nebo v nabídce start. Programy jsou spouštěny ve vlastním oknu a je možné mezi nimi přepínat pomocí klávesových zkratek, tak jak je tomu v případě desktopových aplikací. Zároveň pokud se uživatel nachází na jiném než na svém počítači a není na něm nainstalováno Prism, může stále přistupovat ke svým oblíbeným internetovým aplikacím pomocí jakéhokoliv webového prohlížeče. „ Cross-Platform Installer Module (XPI) (vyslovováno "zippy") je ZIP soubor používaný jako instalační balíček technologií XPInstall. XPI moduly (též nazývané "Bundles") jsou používané k instalaci širokého spektra softwarového vybavení jako zásuvné moduly, rozšíření, motivy vzhledu, slovníky apod.“ [62] 18
Stránka | 40
Obr. 4.3.2.a Schéma Mozilla labs : Prism [online]. 2007 [cit. 2008-11-18]. Dostupný z WWW: .
Obr. 4.3.2.b Srovnání Mozilla labs : Prism [online]. 2007 [cit. 2008-11-18]. Dostupný z WWW: .
Stránka | 41
Společnost Mozilla o Prism doslova říká: „Prism není nová platforma, je to jednoduše webové prostředí přesunuté na pracovní plochu počítače.“ [41] Díky faktu, že se jedná o „webové prostředí“, do něho mohou vývojáři vytvářet aplikace za pomocí běžně používaných technologií jako je HTML, JavaScript, CSS nebo