Svěží vzduch pro vývoj: Adobe AIR

Setká-li se uživatel počítače prvně s programováním, patrně to bude mít co do činění s webovými stránkami či jednoduchým serverovým skriptováním. Není se čemu divit, desktop je zkrátka složitější. Firma Adobe se svým frameworkem AIR přemosťuje tyto dva světy tak, jak to ještě nikdo předtím nezkusil.

Vývoj softwaru je zvláštní směsicí exaktních a kreativních postupů. Logické a matematické postupy v jednotlivých detailech na straně jedné a intuice, kreativita či úsudek na straně druhé. Jednou z klíčových vlastností oboru tak je fakt, že nikdo nemá konečný recept na to, jaká technologie či platforma je nejvhodnější. Rozhodneme-li se něco vytvořit, existuje vždy hned několik možností, které se neliší jen v detailu – jsou často od základu naprosto odlišné. 

Vyberme si platformu 

Ve světě přenositelných (tj. multiplatformních) aplikací kdysi byla hlavním hráčem Java, v současnosti se o totéž snaží Microsoft .NET. Doslova džungle pak panuje ve světě aplikací webových, kde je všemožných jazyků, frameworků a platforem mnoho. Adobe Integrated Runtime (AIR) je technologie pro vytváření přenositelných desktopových aplikací, která vedle Javy a .NETu působí doslova revolučně. Dá se říci, že takřka vše, co tyto dva robustní světy symbolizují, AIR popírá a otáčí. Výsledkem je platforma, nad kterou se mohou ostřílení „korporátní“ vývojáři usmívat, ale která současně nabízí víceméně první z principu vždy funkční přenositelnost a extrémně rychlou implementaci takřka čehokoliv. 

Počítač s AIR se chová ke stažené aplikaci stejně jako k nativnímu programu.

Princip AIRu je psaní desktopových aplikací pomocí webových technologií a jejich interpretace pomocí v AIRu obsaženého prohlížeče s cílem doslova jít na ruku webovým vývojářům. Tedy, vytvářejme desktopové aplikace pomocí něčeho, co již známe. Ruku na srdce, jaký programátor kdy nevytvořil alespoň jednu webovou stránku? Obohatíme-li ji o funkčnost pomocí JavaScriptu, který se v dnešní době těší enormní popularitě a ve kterém najdeme celé frameworky na tvorbu skvěle vypadajících uživatelských rozhraní, máme AIR aplikaci de facto hotovou. Stačí ji pomocí jednoduché utility zabalit a můžeme začít s distribucí pro Windows, MAC OS i Linux. S nainstalovaným AIRem se pak počítač chová ke stažené aplikaci stejně, jako by šlo o nativní program. V Program Files máme danou složku, v ní .exe soubor. Ten sice jen pouští AIR runtime, ale zacházení s aplikací je standardní. 

Vyhrál ten nejlepší

Základem je jádro prohlížeče. V Adobe šlo dlouho o velké téma, volba padla na WebKit (jádro Safari či Google Chrome). Jedná se o patrně nejrychlejší renderovací jádro. Jedná-li se o desktopovou aplikaci, je rychlost extrémně důležitá, neboť uživatelé jsou zvyklí na okamžité reakce.

Webový prohlížeč Apple Safari pracuje s jádrem WebKit.

S tím souvisí otázka paměťové náročnosti. Aby aplikace nezabíraly stovky MB z RAM. Prázdný WebKit v systému ukáže asi 20 MB obsazené paměti. Druhým důvodem je výhledově cílení na mobilní telefony. A Safari v iPhonu je důkazem, že tento prohlížeč lze „naportovat“ na rozličné procesory mobilních zařízení, což zavdává mobilnímu AIRu dobré vyhlídky. Z toho plyne dosažená přenositelnost. Rozdíl v interpretaci HTML na Windows či MAC OS je ve WebKitu naprosto minimální. AIR se nemusí starat o složité virtuální stroje ani o různé knihovny pro renderování uživatelského rozhraní.

Přidejme funkcionality

Druhým pilířem je komplexní JavaScriptové API. Obrazovka programu je napsaná jako běžná webová stránka, do JavaScriptu je ovšem přidán jmenný prostor (objekt) air, který obsahuje funkce potřebné mimo webový svět. Jsou zde například knihovny pro práci se soubory, knihovny pro práci s okny atd. Klíčovou komponentou je integrovaná databáze SQLite, která umožňuje programům uchovávat data v relační podobě. SQLite se samozřejmě nemůže měřit se skutečnými serverovými databázemi, nicméně je až s podivem, jak se tento jednoduchý nástroj zabydlel v různém softwaru (například v Thunderbirdu se vše uchovává v SQLite databázi). Je ale třeba zdůraznit, že API nedisponuje zdaleka vším, co je možné například v nativních Windows aplikacích. 

Musíme mít na paměti, že uvnitř AIR balíku se vždy nachází zdrojové kódy de facto v otevřené podobě. Aplikace vlastně není nic jiného, než zabalená sada HTML stránek spolu s přidruženými skripty a CSS styly. Jednou z možných obran je na webu často používaná minifikace skriptů. V rámci ní se skript smrskne a přejmenují se lokální proměnné. Nejedná se v žádném případě o bezpečné řešení, nicméně výsledkem je natolik zkomprimovaný kód, že mnohé zvědavce odradí. 

Otázkou je, jaké jsou možnosti platformy, co se týče uživatelského rozhraní a obecně grafiky. HTML a JavaScript dokáže dnes vytvořit výborné UI, ale jen pokud se držíme víceméně zažitých „hranatých“ prvků. Co když ale chceme komplexnější grafiku? Řešení existují dvě. Můžeme využít faktu, že aplikace poběží ve WebKitu, který obsahuje mnohé pokročilé technologie, jež se na webu opomíjí díky absenci v Internet Exploreru. Máme pochopitelně na mysli prvek Canvas, pomocí kterého zobrazíme vektorovou grafiku.

Flash i na desktopu 

Adobe taktéž stojí za technologií Flash a byla by velká škoda ji do AIRu nezahrnout. Ba co více, tyto dvě technologie jsou v AIRu úzce spjaty, pokud ne přímo sjednoceny. Flashové a JavaScriptové/HTML objekty jsou navzájem přístupné. Dále, systém událostí objektů je také propojen, takže různý kód se dá navěsit na různé prvky prostředí. 

Ještě je třeba se zmínit o JavaScriptových frameworcích. Každá takováto technologie musí mít bezpečnostní model, aby její aplikace nezasahovaly do systému více, než je záhodno. Z tohoto důvodu je třeba většinu frameworků lehce přizpůsobit, aby AIR podporovaly. Naštěstí jejich tvůrci jsou tradičně v adoptování všeho nového dosti flexibilní a tak takřka každý JS framework je s AIRem kompatibilní. Ukázkou může být jednoduchý správce úkolů naprogramovaný v JS frameworku Ext, běžící nad AIR. 

A otázka instalace jednotlivých AIR (.air) aplikací? Jak již bylo řečeno, poklepáním na soubor se pustí AIR instalátor, který program nainstaluje do systému, jak je standardně (na dané platformě) běžné. Vedle toho ovšem v praxi většina instalací probíhá čistě přes web. Výsledný proces je kupodivu pro uživatele jednodušší než u běžných programů. Instalace se spustí kliknutím na Flashové tlačítko ve webové stránce. Ta pozná, že jde o AIR aplikaci, a pustí instalátor. Pokud AIR runtime není v počítači nainstalován, upozorní na nutnost stažení i jeho. Odpadají tím kofigurace, restarty či ukládání do stažených souborů. 

Vhodné nasazení, záruka úspěchu 

AIR byl společnostmi velmi vřele přijat. Mezi nejznámější aplikace patří eBay Desktop nebo obdobný desktopový klient pro známou službu Google Analytics.  

Jednou z oblíbených aplikací vytvořených v AIR je desktopová verze Google Analytics.

Mají se tedy robustní desktopové aplikace vyvíjet pomocí uvedených technologií? Patrně nikoliv, avšak o tento druh programů v našem případě nejde. Platformu AIR je třeba hodnotit právě z pohledu webových aplikací a webových programátorů. Nejdůležitějším přínosem je, že firma může ke své webové aplikaci v krátkém čase doprogramovat desktopovou verzi, aniž by bylo třeba se jakkoliv zabývat jinými programovacími jazyky, než které umí její programátoři.

Na webu jsou zdarma k dispozici dvě knihy o AIRu a poznamenejme, že jejich stručnost vypovídá o nenáročnosti celé věci.

 


Autor: Michal Till je stálým spolupracovníkem redakce. O internetu, marketingu a podnikání píše magazín DotProfit.cz.


Článek a mnoho dalšího na toto téma vyšlo v časopise Connect! 04/2009.

q

Ano, s tym bojom je to pravda. Bez konkurencie by tu nebol ani jeden.

Co vsak prajem obidvom zlepsit je:

Flex/AIR: Doladenie IDE. Bez dobreho IDE nebudu dobri (avsak aj rychlo kvaseni v pozitivnom zmysle) programatori, ktori budu technologiu viac presadzovat. Nech je to bez nejakych third party pluginov, vyvojar chce mat na stole stabilne IDE od vyrobcu, jednoducho - sadnem a nech to funguje. Skusal som plug-in do VS. Na vyvoj AIR aplikacii nevyuzitelne a nedotiahnute. Otazka vsak prichadza taka, co s ActionScriptom 3.0 ? Vsak ten nepodporuje zakladne elementarne veci ako napr. enumy. Je to stale na urovni skriptovacieho jazyku, pokial to ma byt robustny ramec, nech je zalozeny na kvalitnom OOP jazyku. Takto to stale vyzera, ze je to vyhradne pre designerov a lahky naznak pre programatorov.

Silverlight: Vzhladom na to, ako dlho je na trhu, tak zlepsuje co sa da celkom uspesne. Co ma trochu hneva je to, ze 3.0 uz sa hra napr. s 3D podporou, pri tom niektore zakladne veci, co uz ma Flex/Flash nezvlada, bude to asi marketingom.

Ad p2p: Silv2 podporuje sockety, web sluzby, wcf, atd.
Ad webcam/mic: Na tom sa urcite tvrdo pracuje v Microsofte, ale je to velmi problematicka vec kvoli kompatibilite. Ocakavam vo verzii 4.

další reakce :)

ad Flash Builder IDE: Existuje asi 3 roky. Takže "vzhledem k tomu, jak dlouho je na trhu ve srovnání s VisualStudiem..." (neboli oblíbená argumentace Silverlightu :)). Zkrátka Flash a Silverlight se teď potkali v jednom bodě, ale oba k němu přišli odjinud. Flash přišel od animací... Před třemi roky neexistoval Flex Builder a programovat se muselo v programu Flash Professional, což bylo opravdové utrpení. Počkejme si na Flash Builder 4.

ad ActionScript 3: Ten jazyk vychází z ECMA-262, což měl být revoluční skok pro JavaScript. Adobe se chtělo chytit nějakého standardu. Vypadalo to, že ECMA-262 bude nová generace JavaScriptu, ale nakonec to výrobci browserů zavrhli, protože by to bylo příliš revoluční. Očekává se tedy, že Adobe teď půjde vlastní cestou, když nebude muset být vázán na mrtvý standard. Nicméně dost mu křivdíš, v tom, že "není pro programátory". AS3 je kvalitní OOP jazyk - od C# se odlišuje jen v detailech. Veškeré moderní design patterny v něm lze realizovat (enum snad není "základní elementární věc" :)).

konkurence

Ještě bych to uzavřel tím, že ať jsme příznivci Flashe nebo Silverlightu, tak bychom si měli přát, aby žádný z nich nepřeválcoval ten druhý, protože to, co se tu momentálně odehrává, je učebnicová ukázka pozitivního dopadu konkurenčního boje. Flash/AIR se díky strachu ze Silverlightu v posledních letech zdokonalil tak jako nikdy předtím... a Silverlight by pochopitlně bez Flashe nikdy nevzniknul. Takže jen tak dál.

dodatek

Spletl jsem si článek - v tomto se o redakčním back-endu nemluvilo... ;-) Ale snad je jasné, co jsem měl na mysli.

Jinak ještě dodám, že k Flex Builderu existuje i konkurence nebo pluginy, např. FDT, který má intellisense na úrovni toho Visual Studia.

A co se týče komponent vytvářených open source komunitou, já znám skvělé i hrozné...

reakce

Jistě, o vývojářích jsem vůbec nemluvil, upozornil jsem jen na ten jeden aspekt, který způsobí, že "převálcování" se nebude konat, tak jako se koná v oblastech browserů nebo obecně čehokoliv, kde si uživatel vybírá JEDNU z alternativ.

A teď k těm vývojářům: Samozřejmě souhlasím, že se musí vzít komplexně celé prostředí, se kterým vývojář pracuje. Flex Builder (resp. od příští verze pod názvem Flash Builder) vs. Visual Studio je jen jedna část mozaiky. Dále jsou tu grafické a animační nástroje a v nich má Adobe zatím jednoznačně navrch. Nemluvě o komunitě grafiků, animátorů a kreativně zaměřených vývojářů, tam by trvalo ještě desetiletí, než by Adobe opustili z důvodu, že MS má něco lepšího. Ovšem to si samozřejmě musíme ujasnit, o jakých RIA se bavíme. Zda o formulářových aplikacích (jako je zde zmíněný redakční back-end) nebo o aplikacích, které hodně pracují s animacemi a vizuálními efekty. Úplně klidně se může stát, že Flash i Silverlight si najdou svá místa na slunci vedle sebe, každý se bude používat pro jiný typ projektů. Určitě existuje typ aplikací, pro které jsou nějaké nedostatky (dnešního!) Flash Builderu oproti Visual Studiu zanedbatelným kritériem.

A pak tu máme tu platformu samotnou. Nejsou shodné, Flash Player podporuje práci s kamerou a mikrofonem, peer-to-peer komunikaci a další věci, které Silverlight zatím nemá (ale jistě jednou dožene), takže i to ovlivňuje rozhodování.

Argumenty

@Simek: beries to z pohladu pouzivatela. Ale tu nejde iba o neho. Vysvetlim.

Programatorsky pohlad: Neni pochyb ze Visual Studio je najlepsie IDE na trhu. Eclipse, na ktorom je postaveny Flex Builder 3 mu nesiaha ani po kolena - praca s workspaces a odstrasujuco vyriesena podpora CVS/SVN, ubohy "Intellisense", to je len par veci co mi v tejto sekunde napadlo, ked si spomeniem na to IDE. Rovnako refactoring, FB3 sa vie zmoct leda tak na Rename class. Skuste niekto porovnat tento "refactoring" s Visual Studiom a nainstallovanym Resharperom ...

Flex ma strasne zlu learning curve pre programatora, dokumentacia sice nejaka je, ale podstatne tazsie sa ta technologia uci ako Silverlight, kde je vsetko intuitivne a fungujuce vo skvelom IDE. AIR je len runtime, to mi je jasne, ale velka cast AIR aplikacii je robena prave vo Flexe, preto hovorim o nom. Hnacim motorom ma byt vlastne opensource komunita, ktora vsak produkuje tak hnusne ovladacie prvky, ze to si mohli aj odpustit. Silverlight je pod strechou Microsoftu, ktory tomu vie dodat ten spravny manazment...

Vedel by som povedat x inych argumentov o Flexe, ale ten az tak priamo nesuvisi s AIRom, tak aby som nebol offtopic, tento komentar uzavriem, ale ak ma niekto zaujem ... :)

silverlight?

Máte pro to nějaké argumenty?
Je třeba si uvědomit, že toto je úplně jiná situace než konkurence browserů, operačních systémů, textových editorů... V tomto případě si uživatel nevolí jednu z možných alternativ, ale bude mít nainstalované obojí - Flash i Silverlight. Dokonce většinou ani nebude vnímat, že má obojí a už vůbec nebude vnímat, v které technologii je která aplikace vytvořena. O "rozprášení" určitě nebude řeč.

jj

Tiez mam ten dojem. Nepomoze im ani opensource komunita, Silverlight to tu onedlho rozprasi :)

Silverlight

Stejne to silverlight posle (posila) na hrbitov....

Volby prohlížení komentářů

Vyberte si, jak chcete zobrazovat komentáře a klikněte na "Uložit změny".