Devel.cz Lupa Měšec Podnikatel Root Zdroják.cz DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

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ě.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

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.

Anketa

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

       

Martin Hassman

Martin Hassman

Martin Hassman vymyslel a založil projekt Zdroják. Absolvoval Vysokou školu chemicko-technologickou v Praze. Přednáší, školí. Pracoval jako webový vývojář.

Workshop: UX design v návrhu webu

DW - Školení použitelnosti
  • Rychlý a efektivní návrh uživatelských rozhraní.
  • Vedení iterativního kolaborativního workshopu metodou Design Studio.
  • Prototypy vám pomůžou i při komunikaci o designu s klienty nebo v rámci firmy.

Detailní informace o workshopu Návrh webu a mobilních aplikací »

Přehled názorů

chybka
Langi 14. 5. 2009 01:27
Nový
└ 
Re: chybka
Martin Hassman 14. 5. 2009 07:23
Nový
A co JavaFX?
Pavel 14. 5. 2009 10:38
Nový
└ 
Re: A co JavaFX?
Martin Hassman 14. 5. 2009 10:57
Nový
 
└ 
Re: A co JavaFX?
Borek Bernard 15. 5. 2009 01:40
Nový
Flex Builder beta
Solvina 14. 5. 2009 11:04
Nový
├ 
Re: Flex Builder beta
Martin Hassman 14. 5. 2009 11:12
Nový
│
└ 
Re: Flex Builder beta
Solvina 14. 5. 2009 11:56
Nový
└ 
Re: Flex Builder beta
Borek Bernard 15. 5. 2009 01:42
Nový
 
└ 
Re: Flex Builder beta
Solvina 15. 5. 2009 08:56
Nový
Silverlight
David 14. 5. 2009 11:04
Nový
├ 
Re: Silverlight
Martin Hassman 14. 5. 2009 11:10
Nový
└ 
Re: Silverlight
pas 14. 5. 2009 11:34
Nový
 
└ 
Re: Silverlight
Martin Hassman 14. 5. 2009 12:22
Nový
 
 
└ 
Re: Silverlight
pas 14. 5. 2009 13:09
Nový
 
├ 
Re: Silverlight
Petr 21. 5. 2009 16:54
Nový
Flash
Mirek Charvát 14. 5. 2009 11:27
Nový
├ 
Re: Flash
Martin Hassman 14. 5. 2009 11:36
Nový
│
└ 
Re: Flash
Mirek Charvát 14. 5. 2009 11:41
Nový
└ 
Re: Flash
pas 14. 5. 2009 11:56
Nový
 
└ 
Re: Flash
dc 14. 5. 2009 13:30
Nový
 
 
├ 
Re: Flash
pas 14. 5. 2009 13:46
Nový
 
 
│
└ 
Re: Flash
pas 16. 5. 2009 18:02
Nový
 
 
└ 
Re: Flash
Miroslav Charvát 14. 5. 2009 13:53
Nový
 
 
 
├ 
Re: Flash
Martin Svárovský 19. 5. 2009 12:47
Nový
JavaScript vs. ActionScript
pas 14. 5. 2009 11:41
Nový
└ 
Re: JavaScript vs. ActionScript
Martin Hassman 14. 5. 2009 12:12
Nový
 
└ 
Re: JavaScript vs. ActionScript
pas 14. 5. 2009 13:14
Nový
 
 
└ 
Re: JavaScript vs. ActionScript
Martin Hassman 14. 5. 2009 13:27
Nový
 
 
 
└ 
Re: JavaScript vs. ActionScript
pas 14. 5. 2009 14:43
Nový
 
 
 
 
└ 
Re: JavaScript vs. ActionScript
Martin Hassman 14. 5. 2009 15:08
Nový
 
 
 
 
 
└ 
Re: JavaScript vs. ActionScript
pas 14. 5. 2009 15:52
Nový
 
 
 
 
 
 
└ 
Re: JavaScript vs. ActionScript
Martin Hassman 14. 5. 2009 16:02
Nový
 
 
 
 
 
 
 
└ 
Re: JavaScript vs. ActionScript
pas 14. 5. 2009 16:16
Nový
Flash vs. Flex
pas 14. 5. 2009 12:10
Nový
└ 
Re: Flash vs. Flex
none_ 17. 5. 2009 16:55
Nový
 
└ 
Re: Flash vs. Flex
pas 18. 5. 2009 00:42
Nový
Silverlightové mýty
Anton 14. 5. 2009 12:50
Nový
├ 
Re: Silverlightové mýty
dc 14. 5. 2009 13:35
Nový
│
└ 
Re: Silverlightové mýty
David 14. 5. 2009 14:36
Nový
├ 
Re: Silverlightové mýty
David 14. 5. 2009 14:32
Nový
│
├ 
Re: Silverlightové mýty
David 14. 5. 2009 14:50
Nový
│
└ 
Re: Silverlightové mýty
Anton 15. 5. 2009 09:19
Nový
│
 
├ 
Re: Silverlightové mýty
anonymní uživatel 20. 5. 2009 09:45
Nový
├ 
Re: Silverlightové mýty
Jarda Jirava 14. 5. 2009 14:42
Nový
│
 
├ 
Re: Silverlightové mýty
Petr 21. 5. 2009 17:01
Nový
├ 
Re: Silverlightové mýty
Jarda Jirava 14. 5. 2009 14:55
Nový
└ 
Re: Silverlightové mýty
Jan Jelínek 14. 5. 2009 19:36
Nový
 
├ 
Re: Silverlightové mýty
pas 14. 5. 2009 20:19
Nový
 
└ 
Re: Silverlightové mýty
Anton 15. 5. 2009 09:15
Nový
 
 
├ 
Re: Silverlightové mýty
anonymní uživatel 20. 5. 2009 09:46
Nový
FLEX - pouze placené IDE?
Jara jara 14. 5. 2009 15:27
Nový
└ 
Re: FLEX - pouze placené IDE?
Martin Hassman 14. 5. 2009 15:42
Nový
 
├ 
Re: FLEX - pouze placené IDE?
pas 14. 5. 2009 16:02
Nový
 
└ 
Re: FLEX - pouze placené IDE?
Jara jara 15. 5. 2009 20:02
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem