Flex kontra Silverlight aneb když dva dělají totéž…

Když dva dělají totéž, není to vždy totéž. Rich Internet application – Flex i Silverlight se snaží o něco podobného, ale každý je jiný. Kterou technologii si vybrat? Která vám víc sedne? Na to se pokusíme dnes odpovědět. A jak jinak, než subjektivně.

Dnešní článek patří do rubriky Subjektivně. Jejím cílem je zejména poskytovat prostor pro názory a pohledy na aktuální dění v oblasti webových technologií i na jejich vývoj do budoucna. Jedná se o osobní názory, které se nemusí vždy shodovat s názory redakce. Pokud máte co říct, pojďte k nám psát Subjektivně.

Hledání rozdílu

O Flexu i mladším Silverlightu se poslední dobou mluví víc než dost. Oba se hodí, pokud vytváříte aplikaci, která má fungovat na webu, a z nějakých důvodů se chcete vyhnout klasickým webovým technologiím (HTML+CSS+JS). Jenže, který z nich si vybrat, na to už tak snadno odpověď nenajdete.

Přesvědčil jsem se o tom i nedávno, když jsem se účastnil akce, která měla mj. obě technologie představit a srovnat. Ovšem pokud jsme se něco z celé akce nedozvěděli, bylo to právě ono srovnání obou technologií. Možná to bude tím, že jsou komplexní a málokdo je obě zná do hloubky, aby je mohl zhodnotit, nebo prostě proto, že jsou to natolik jiné technologie, že se těžko srovnávají.

Já využiji toho, že jsem se se základy obou z nich seznámil a pokusím se o jakési mělké srovnání určené hlavně pro ty, kdo ani o jedné z těchto technologií prakticky nic nevědí. Tenhle článek by se asi správně měl jmenovat Jak Flex a Silverlight vidí Martin Hassman, nic víc v něm nehledejte.

Každý pes jiná ves

Hned na začátku je nutné poznamenat, že ačkoliv mají obě technologie plnit podobný účel, jsou naprosto jiné. To je způsobeno mj. zázemím, ve kterém vznikají, a následně to předurčuje jejích primární cílové skupiny, čili rozhodujete o tom, která z nich se vám nejspíš bude víc líbit, a kterou se snáze naučíte. Obě technologie se vyvíjí a předhání v tom, co která toho umí (Flex tady má díky delší historii zatím náskok, ale kdo ví, jak dlouho mu vydrží), ale jejich základní paradigmata zůstanou víceméně stejná. A těm se bude celý článek věnovat.

Flex je když…

Pokud jste zkušený webový vývojář a úspěšně křižujete mezi pojmy JavaScript, HTML, CSS nebo AJAX, vyznáte se v nich a baví vás, pak vám Flex dobře sedne. Flex na první pohled totiž vypadá a funguje skoro stejně jako klasické webové technologie.

Flex je, když vezmete webové technologie, trochu je očešete, dáte jim řád a přihodíte něco málo z principů desktopového vývoje.

Ačkoliv je Flex postavený na Flashi (a jak Flash, tak samotný vývoj pro něj se vám jako klasickému vývojáři pravděpodobně příliš nelíbí), má Flex svou podobou mnohem blíž webovým technologiím než Flashi. Alespoň po té stránce, se kterou budete denně přicházet do styku. Je samozřejmě možné, že se ponoříte hlouběji (např. pokud budete chtít vytvářet vlastní skin všech ovládacích prvků), a pak se samotnému Flashi nevyhnete, ovšem při běžném programování ve Flexu o něm nemusíte mít ani tušení.

Co mají Flex a webové technologie společného?

Celkem hodně, počítejte se mnou:

  1. Skriptovací jazyk. JavaScript i současný ActionScript jsou postavené na stejném standardu (ECMAScriptu) a je to na nich znát. Dokonce natolik, že když umíte JavaScript, můžete začít v ActionScriptu téměř rovnou začít programovat. Ačkoliv na první pohled najdete mezi oběma jazyky řadu rozdílů (ActionScript je typový, má odlišný objektový model, neobsahuje eval atd.), po hodině zkoumání zjistíte, že vám tyto rozdíly nevadí (někdy se vám možná i zalíbí) a jste schopni v novém jazyku programovat bez problémů (podrobnější sepsání rozdílů mezi oběma jazyky alias třicetiminutový rychlokurz ActionScriptu pro javascriptové vývojáře necháme na případný zvláštní článek).
  2. Kaskádové styly. Vzhled aplikace se ve Flexu definuje pomocí kaskádových stylů (vlastní layout už ne, ten najdete přímo v MXML, ale to není teď podstatné). On je to tedy malý podvod. Ačkoliv tomu Adobe říká CSS, o žádné CSS se nejedná (tedy nejedná se o implementaci žádné CSS specifikace), ovšem je to technologie podobná CSS jako vejce vejci – základní věci, které z CSS znáte, zde fungovat budou a na to, že Flex nezná pokročilejší selektory a má řadu svých CSS vlastností, si velmi rychle zvyknete.
  3. MXML je (se zavřenýma očima) skoro takové úzce zaměřené XHTML na aplikační prvky. MXML (Magic eXtensible Markup Language) je dialekt XML, kterým popisujete dialogy vaší aplikace (jaká bude mít tlačítka atd.). Ve srovnání s předchozími dvěma technologiemi, je tahle ze všech nejodlišnější. Na první pohled zcela odlišná od HTML (zejména tím, jaké používá značky), ale jakmile si v MXML zkusíte něco vytvořit, zjistíte, že onen „feel“ technologie a uvažování jsou velmi podobné. A ostatně i práce s MXML z ActionScriptu se velmi podobá práci s DOM, kterou znáte z (X)HTML. Takže ačkoliv na první pohled mezi MXML a XHTML moc podob nenajdete (společné mají co jsem našel snad jen tři značky: button, form a canvas), přesto zjistíte, že se vám s oběma pracuje velmi podobně a základní paradigmata si můžete přenést od jedné technologie ke druhé. To, že v HTML používáte k pozicování divy+CSS a v MXML zase VBoxy, HBoxy nebo absolutní pozicování, je detail, na který si rychle zvyknete.

Zmíněná podobnost mezi technologiemi, na kterých stojí Flex, a webových technologií způsobí, že klasický webový vývojář se ve Flexu bude cítit jako doma. V zásadě není důvodu, aby po několika dnech zkoumání nebyl schopen vytvářet plnohodnotné Flexové aplikace.

S Flexem ovšem přichází jeden zásadní rozdíl, na který si budete muset zvyknout. Zatímco webové aplikace jste mohli dělat třeba i na koleně (resp. v Notepadu), s Flexem na to zapomeňte. Ne, že by to do jisté míry nešlo (zkusil jsem to, jde to!), ale zjistíte, že bez pomocných nástrojů to jaksi není ono. Stačí, když si srovnáte třeba vlastnosti CSS a onoho „Flex CSS“, nebo si prohlédnete všechny možné atributy v MXML, které budete používat.

Zjistíte, že to, co se u HTML snadno vešlo do jedné hlavy, to se u Flexu špatně pamatuje. Je toho prostě víc. Bez pořádného IDE proto na vývoj ve Flexu raději zapomeňte. IDE s názvem Flex Builder k dispozici nabízí přímo Adobe, ale jedná se o placený produkt. Obchodní model je zde jasný. Základní technologie je zdarma, platíte za nástroje. Ono se to ve výsledku třeba nakonec i vyplatí, ale pro klasického webového vývojáře je platit za nástroj umožňující mu psát kód každopádně nezvyk.

Silverlight je když…

Silverlight k problému přistupuje z opačné stránky. Pokud jste onen webový vývojář, kterému se Flex tolik líbil, o to méně se vám bude líbit Silverlight. Pokud to shrneme, tak programovací jazyk pro vás bude nejspíš naprosto cizí, podobně tak šablonovací mechanismus pro definování vzhledu a nakonec budete i se XAML (dialekt XML definující formuláře aplikace) poměrně zápasit.

Zcela jinak to ovšem bude vidět desktopový vývojář, ten totiž na výše zmiňovaných výhodách Flexu nejspíš nenajde nic moc zajímavého, zato u Silverlightu bude možná v sedmém nebi.

Silverlight je, když vezmete technologie desktopového vývoje, malinko je přiohnete, aby šly „nacpat“ do webového prohlížeče a pak je do toho prohlížeče taky skutečně nacpete.

Pozitiva Silverlightu pro desktopové vývojáře

  1. Programovací jazyk. Ostřílený vývojář bude mít pravděpodobně svůj oblíbený programovací jazyk, a proč by jej měl opouštět, když chce vyvíjet aplikaci pro web? V Silverlightu si může z řady jazyků vybrat, případně je i v jedné aplikaci kombinovat.
  2. Knihovny. V Silverlightu lze používat stejné .NET knihovny jako na desktopu (tedy pokud nevyužívají zrovna „něco“, co v prostředí prohlížeče nespustíte). Takových knihoven bude existovat mnohem víc, než jen pro specializované prostředí v prohlížeči, které má Flex (i když u něj se to může trochu zlepšovat s příchodem technologie AIR, což je stručně řečeno Flex pro desktop).
  3. XAML (eXtensible Application Markup Language). Stejný dialekt XML používají desktopové aplikace pro Windows, tak proč se učit nový? V tom je další výhoda Silverlightu.

Co se týče IDE, platí zde totéž, co pro Flex. Bez dobrého IDE budete aplikace pro Silverlight tvořit jen těžko. U Silverlightu to ovšem vůbec nevadí, protože desktopoví vývojáři jsou už dávno na různá IDE zvyklí. Takže když při tvorbě aplikací pro Silverlight můžou zůstat u Visual Studia, je to pro ně další plus.

Pozn.:Omlouvám se, že jsem výše zjednodušeně používal termín „desktopový vývojář“. Zmíněné důvody totiž platí hlavně pro vývojáře v .NETu (což bude dnes celá řada windowsích vývojářů), už slaběji platí pro jiné vývojáře (např. javisty, C++…), i když i pro ně nebudou tyto důvody bezvýznamné. Dokonce i pro webové vývojáře v ASP.NET zůstává většina důvodů platná.

Čtěte k tématu

Pokud byste se chtěli o obou technologiích dozvědět víc, přečtěte si naše články o Flexu:

a Silverlightu:

Závěr

Mohli bychom najít řadu důvodů, proč použít raději Flex nebo Silverlight (např. Flex už dnes umí řadu z toho to, co přinese teprve Silverlight ve verzi 3), většina z těchto důvodů se bude měnit s časem, ovšem paradigmata zmíněná v článku zůstanou nejspíš stejná. A ačkoliv nejsou nepřekonatelná (webový vývojář je schopen se naučit technologie Silverlightu a desktopový vývojář se zase bez problému naučí Flex), jedná se o jasné vstupní výhody pro konkrétní cílové skupiny, které si s sebou obě technologie nesou.

Když už jsem Flex a Silverlight pěkně srovnal, měl bych možná říct, který z nich u mě vede. Odpověď zni, že zatím ani jeden. Což možná vychází z toho, že patřím do obou zmíněných kategorií (jak webový, tak desktopový vývojář). Navíc si myslím, že klasické webové technologie nám stále mají co říct, a proto se při tvorbě RIA nikdy nebudu rozhodovat jen mezi Flexem a Silverlightem, ale vždy mezi webovými technologiemi a Flexem a Silverlightem.

Líbí se vám víc Silverlight nebo Flex?

Vystudoval jsem biochemii. Vymyslel jsem a založil Zdroják. Jsem vyhlášeným expertem na likvidaci komentářů. Nejsem váš hodný tatínek, který vás bude brát za ručičku, já jsem zlý moderátor diskusí. Smiřte se s tím!

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 56

Přehled komentářů

Langi chybka
Martin Hassman Re: chybka
Pavel A co JavaFX?
Martin Hassman Re: A co JavaFX?
Borek Bernard Re: A co JavaFX?
Solvina Flex Builder beta
Martin Hassman Re: Flex Builder beta
Solvina Re: Flex Builder beta
Borek Bernard Re: Flex Builder beta
Solvina Re: Flex Builder beta
David Silverlight
Martin Hassman Re: Silverlight
pas Re: Silverlight
Martin Hassman Re: Silverlight
pas Re: Silverlight
Petr Re: Silverlight
Mirek.Charvat Flash
Martin Hassman Re: Flash
Mirek.Charvat Re: Flash
pas Re: Flash
dc Re: Flash
pas Re: Flash
pas Re: Flash
Mirek.Charvat Re: Flash
Martin Svárovský Re: Flash
pas JavaScript vs. ActionScript
Martin Hassman Re: JavaScript vs. ActionScript
pas Re: JavaScript vs. ActionScript
Martin Hassman Re: JavaScript vs. ActionScript
pas Re: JavaScript vs. ActionScript
Martin Hassman Re: JavaScript vs. ActionScript
pas Re: JavaScript vs. ActionScript
Martin Hassman Re: JavaScript vs. ActionScript
pas Re: JavaScript vs. ActionScript
pas Flash vs. Flex
none_ Re: Flash vs. Flex
pas Re: Flash vs. Flex
Anton Silverlightové mýty
dc Re: Silverlightové mýty
David Re: Silverlightové mýty
David Re: Silverlightové mýty
David Re: Silverlightové mýty
Anton Re: Silverlightové mýty
Anonym Re: Silverlightové mýty
Petr Re: Silverlightové mýty
jiravanet Re: Silverlightové mýty
jiravanet Re: Silverlightové mýty
Jan Jelínek Re: Silverlightové mýty
pas Re: Silverlightové mýty
Anton Re: Silverlightové mýty
Anonym Re: Silverlightové mýty
treto FLEX - pouze placené IDE?
Martin Hassman Re: FLEX - pouze placené IDE?
pas Re: FLEX - pouze placené IDE?
treto Re: FLEX - pouze placené IDE?
eniac
Zdroj: https://www.zdrojak.cz/?p=3008