Je Silverlight 3 konkurencí pro Adobe AIR?

Nedávno byl vydán Silverlight 3, který vedle dlouhé řady významných vylepšení přidal i podporu pro běh aplikací mimo prohlížeč (out of browser, OOB), díky čemuž je občas přirovnáván k běhovému prostředí Adobe AIR. Ačkoliv podobnosti existují, v současnosti stále převažují především rozdíly, na které bychom chtěli v tomto článku poukázat.

Podobnosti

Jak Adobe AIR, tak Silverlight 3 umožňují vývojářům tvořit aplikace, které se nainstalují na uživatelův počítač a lze je pak spustit nezávisle na prohlížeči (a nedejbože i při nedostupnosti internetu). Obě technologie umožňují aplikaci vytvořit v relativně komfortním vývojovém prostředí – v případě AIRu je to technologie Adobe Flex (případně DHTML, ačkoliv to je méně časté), nebo v .NETu, pokud mluvíme o Silverlightu. Zhruba tady ale podobnosti končí, pojďme se nyní podívat na ty hlavní rozdíly.

Bezpečnostní sandbox

Zcela zásadní rozdíl je v tom, co si aplikace může na uživatelově počítači „dovolit“.

Aplikace napsaná v Adobe AIR má plný přístup k lokálním zdrojům, což v principu znamená, že na disk může ukládat nebo z něj mazat cokoliv, k čemu má uživatelský účet práva (pokud na Windows uživatel pracuje pod administrátorským účtem, AIR aplikace má přístup prakticky ke všemu). Principiálně se tedy AIR aplikace chovají jako běžné desktopové aplikace a AIR bychom tak nejlépe mohli přirovnat k běhovým prostředím typu Java, .NET a podobně.

Silverlight OOB naproti tomu běží ve stejném bezpečnostním sandboxu jako běžná Silverlight aplikace. To v praxi znamená, že „instalací“ Silverlight OOB aplikace uživatel neriskuje vůbec nic – taková aplikace nemá přístup k jeho dokumentům ani k žádným jiným lokálním souborům. Offline aplikace samozřejmě potřebuje nějaká data ukládat a načítat, ale Silverlight OOB aplikace tak může činit pouze skrze Isolated Storage, což je bezpečné úložiště izolované od zbytku filesystému. Velikost tohoto úložiště je ve výchozím stavu 25 MB (pro aplikace běžící v prohlížeči 1 MB) a uživatel ho navíc může v extrémním případě zakázat. S lokálním úložištěm to tedy není v SL OOB nijak slavné a zhruba bychom ho mohli přirovnat k trochu vylepšenému ukládání dat v cookies prohlížečů.

Adobe AIR je tedy v tomto ohledu daleko mocnější technologií, což ovšem neznamená, že by přístup Silverlightu neměl své výhody. Tou největší je, že bezpečnost je pro uživatele zajištěna přímo systémem, a uživatel se tedy nemusí „bát“ Silverlight aplikace instalovat – neriskuje prakticky nic. Obě technologie tedy mají své výhody i nevýhody a nelze jednoznačně říci, která je „lepší“, rozdíl mezi nimi je ale na bezpečnostním poli zřejmý.

Instalace, aktualizace

S rozdílným přístupem k lokálním zdrojům jde ruku v ruce jiný způsob instalace a aktualizace. Takto vypadá instalace SL OOB aplikace:

Instalace SL
Instalace Silverlight OOB aplikace

Vše je velmi jednoduché a nic moc se nastavit nedá. V případě Adobe AIR většinou kliknete na tzv. install badge na nějaké webové stránce, čímž se spustí download a následná instalace podobně, jako např. u technologie ClickOnce. Během instalace si na Vistách zobrazí UAC dialog (záleží na konfiguraci), takže instalace vypadá skutečně jako u každé jiné desktopové aplikace.

Instalace AIR
Instalace AIR aplikace

Rozdíl je podobně vidět i u aktualizace – zatímco v případě SL OOB stačí novou verzi nahrát na server a Silverlight se pak už o vše postará sám, v případě AIR aplikace je za aktualizaci zodpovědný programátor, i když v nejnovější verzi AIR 1.5 s touto úlohou výrazně pomáhá AIR Update Framework.

Pohled vývojáře

Pokud se v Microsoftu zeptáte, jakou technologií chtějí Adobe AIR konkurovat, dostane se vám odpovědi, že oni mají WPF a plný .NET, který nejen že možnosti AIRu vyrovnává, ale mnohanásobně je předbíhá. To je pravda – v .NETu můžete dělat prakticky cokoliv a dostupná API jsou daleko za hranicemi relativně omezených možností Adobe AIR. Na druhou stranu AIR přišlo s něčím úžasným – můžete vzít webovou aplikaci a prakticky bez úprav z ní udělat aplikaci desktopovou. A to „prakticky bez úprav“ myslím doslova – ve Flexovém kódu stačí změnit root tag vašeho MXML souboru z <Application> na <WindowedAppli­cation>. Ba co víc – váš kód můžete vyextrahovat do Flexových knihoven, které pak můžete bez rekompilace používat jak ve webových, tak v AIR aplikacích. Funguje zde tedy nejen dokonalá kompatibilita na úrovni zdrojového kódu, ale i kompatibilita binární, což je z vývojářského hlediska skvělá věc.

Ve světě Silverlightu/WPF je situace trochu jiná. Silverlight obsahuje pouze podmnožinu knihoven z plného .NETu (pochopitelně) a i technologie pro definici uživatelského rozhraní není s WPF zcela kompatibilní. Dokonce se ani nejedná o čistou podmnožinu, některé věci se prostě ve WPF a v Silverlightu řeší trochu jinak (viz Microsoft WPF-Silverlight Comparison Whitepaper). Ve výsledku jsou tak WPF a Silverlight podobné, ale ne vzájemně zcela kompatibilní technologie.

Pokud tedy vývojářský pohled shrnu, ve světě Flexu / Flash Playeru / Adobe AIR neřešíte, pro které běhové prostředí vyvíjíte. AIR přirozeně přidává například API pro práci s filesystémem a podobně, ale pokud zůstáváte u základních věcí, jako je zobrazování uživatelského rozhraní, tahání dat ze serveru, zpracovávání uživatelských událostí a podobně, je ve světě Flexu vývoj pro web a pro desktop naprosto totožný. Konvertovat aplikaci z webové na desktopovou je triviální a totéž platí i v obráceném směru, pokud nebylo použito API specifických pro AIR.

Ve světě Silverlightu a WPF zatím tato triviální konverze z webu na desktop neexistuje. Samozřejmě v obou světech používáte .NET, takže řada věcí je podobných nebo i stejných, ale na rozdíly pořád musíte myslet. Při konverzi ze Silverlightu do WPF by měla být cesta poměrně přímočará (i když stále klikatější než v případě Flexu), ovšem opačně můžete na problémy narazit daleko snáz, protože při programování proti plnému .NET Frameworku patrně budete chtít používat celou jeho sílu, která logicky v Silverlightu není k dispozici. Zde bude záležet aplikace od aplikaci, jak moc práce zde bude, nicméně zde už můžeme směle hovořit o „portování“ aplikace namísto její „konverze“.

Technické rozdíly mezi SL OOB a Adobe AIR

I přes popis rozdílů výše mohou a budou existovat aplikace, kde volba mezi SL OOB a Adobe AIR bude validní a zcela smysluplná, například když chci nabídnout uživateli určitou možnost instalace aplikace lokálně, ale přitom prakticky nepotřebuji žádné persistentní úložiště (Twitter čtečka je dobrým příkladem). V takovém případě je dobré upozornit ještě na některé další, spíše technické rozdíly mezi oběma běhovými prostředími:

  • SL OOB nepodporuje notifikaci v systémové oblasti u hodin, AIR ano.
  • SL OOB nepodporuje více oken běžící aplikace, AIR ano.
  • AIR aplikace mohou být „chrome-less“, tedy bez standardního rámečku s tlačítky zavřít, minimalizovat a podobně. SL OOB toto nepodporuje a rámeček operačního systému bude vidět vždy.
  • AIR aplikace mohou data ukládat do vestavěné SQL databáze (SQLite), SL OOB aplikace k dispozici žádnou lokální databázi nemají.
  • Mikrofon a webová kamera nejsou v současné verzi Silverlightu podporovány (jejich podpora se však očekává brzy).

Čemu se tedy Silverlight OOB nejvíc podobá?

Ačkoliv se srovnání s Adobe AIR nabízí nejvíc, podle popisu výše patrně není tím nejlepším. A přitom už na světě existují technologie, které se SL OOB podobají víc než dost: jsou jimi Mozilla Prism, Google Gears a možná některé další.

Vezměte si, co třeba taková Mozilla Prism umí: v menu kliknete na „Convert website to application“, zvolíte, kam se mají umístit zástupci a je to. Při spuštění aplikace se pak nastartuje vykreslovací jádro prohlížeče, jen chybí adresní řádek, menu a toolbar.

To je přesně, co se děje při spuštění Silverlight OOB aplikace – jakoby se nastartoval Silverlight v rámci prohlížeče, jen nevidíte ten prohlížeč. Jinak se ale aplikace chová identicky – jak po funkční, tak po bezpečnostní stránce.

Pokud tedy SL OOB má k něčemu velmi blízko, jsou to nástroje, které na dvě tři kliknutí dělají z webových „stránek“ lokální „aplikace“. Adobe AIR, jak jsem psal výše, je naopak analogií běžných desktopových systémů typu .NET nebo Java.

Výhled pro Silverlight do budoucna

Pro nás jako pro vývojáře je velmi zajímavé, kam se bude SL OOB ubírat do budoucna. Osobně bych byl velmi rád, kdyby ve světě Microsoftích technologií vznikla běhová platforma podobná Adobe AIR se všemi charakteristikami tak, jak jsou uvedeny výše, ale to je asi vzhledem k existenci plného .NETu nereálné. Podle neoficiálních zmínek vysoko postavených lidí okolo Silverlightu ale do budoucna můžeme v oblasti OOB očekávat vylepšení. Má sice i do budoucna zůstat sandboxovanou technologií, ale přístup k lokálním zdrojům se má „bezpečným“ způsobem zvětšovat. Zatím lze jen hádat, co si pod tím představit, ale například nějaké zaručené lokální úložiště s garantovanou velikostí nebo třeba embedded SQL databáze pro potřeby aplikace by mohly podstatně rozšířit možnosti aplikací, aniž by byla ohrožena bezpečnost uživatelových dat. Nyní ale opravdu nezbývá, než si počkat, s čím Microsoft v příštích verzích Silverlightu přijde.

Shrnutí

Na závěr tabulka hlavních rozdílů mezi SL OOB a Adobe AIR:

Rozdíly mezi SL OOB a Adobe AIR
Silverlight OOB Adobe AIR
Bezpečnost Aplikace nemá přístup k datům uživatele, běží v sandboxu Aplikace má plný přístup k lokálním datům
Vývojový model Identický pro web a OOB, ale ne zcela kompatibilní pro web a desktop Identický pro web a desktop
Instalace Snadná Komplexnější, podobná běžné instalaci desktopové aplikace
Aktualizace Automatická Musí být naprogramovaná vývojářem, pomáhá s ní AIR Update Framework
Bohatost API Menší (i když roste s každou verzí) Větší

Pokud bych měl úplným závěrem odpovědět na otázku z názvu článku, řekl bych: Ne, Silverlight OOB není konkurencí Adobe AIR, stejně jako AIR není konkurencí OOB. Využití obou technologií se příliš nepřekrývá a do budoucna asi ani nebude.

Komentáře: 19

Přehled komentářů

Honza JavaFX
Martin Malý Re: JavaFX
Borek Bernard Re: JavaFX
jiravanet Vyhody AIR
Borek Bernard Re: Vyhody AIR
jiravanet Re: Vyhody AIR
Borek Bernard Re: Vyhody AIR
jiravanet Re: Vyhody AIR
Michal Blaha Podporovane OS
Borek Bernard Re: Podporovane OS
Michal Blaha Velikost runtime pro download
jiravanet Re: Velikost runtime pro download
Borek Bernard Re: Velikost runtime pro download
pan pes Uzasne
Martin Malý Re: Uzasne
Belzebub Re: Uzasne
pas Re: Uzasne
VldySek Re: Uzasne
tom AIR a 15 MB => WebKit
Zdroj: https://www.zdrojak.cz/?p=3052