👋 Nový obsah na borekb.cz

Info Tento blog je v "read-only módu" a nový obsah již nebude přibývat. O vývoji píšu na DevBlog.

Silverlight 3.0 pohledem Flex vývojáře

Na konferenci MIX09 byla oznámena betaverze Silverlightu 3.0, která přímo konkuruje platformě Flash Player / Flex od Adobe. Jelikož Flex dost důvěrně znám, uvedu pár dojmů z pohledu člověka, co by Silverlightu úspěch moc přál, ale zároveň zná možnosti konkurence.

Tak tedy první dojmy v bodech (upozorňuji, že veškeré dojmy jsou založeny pouze na informacích z keynote, SL3 jsem zatím neinstaloval a nezkoumal):

  • Celkově nebylo oznámeno nic extra převratného. Z mého pohledu Silverlight stále dohání Flex, byla přidána např. podpora pro integraci s historií prohlížeče a deep linking, pixelové efekty, GPU akcelerace, 3D, vylepšení data bindingu, LocalConnection API, cachování knihoven atd., což jsou všechno věci, které Flex už nějakou dobu má.
  • Jediná opravdu inovativní věc, která bude v Silverlightu 3, je multitouch.
  • Podle dema bude Blend 3 opravdu zajímavou aplikací pro designéry – podporuje sketchování, kolaboraci s klienty, převod PSD do funkčního uživatelského rozhraní atd. Jakkoliv je ale Blend 3 „cool“, celkově se mi nelíbí strategie, kdy MS kašle na pořádný návrhář ve Visual Studiu a namísto toho investuje do Blendu, který je popravdě řečeno pro programátora dost utrpením. Ve světě Flexu dojde taky k oddělení vývojářského nástroje (Flex Builder, postavený nad Eclipse) a nástroje pro designéry (Flash Catalyst), ale rozdíl je ten, že Flex Builder je pro návrh UI plnohodnotným nástrojem s kvalitním vizuálním návrhářem. Jistě, Catalyst bude umět víc, ale to je v pořádku. Základ pořád můžu udělat já jako programátor ve Flex Builderu.
  • Tím se dostávám k dalšímu bodu, který mě osobně (nepříjemně) překvapil: Microsoft neoznámil žádné výrazné vylepšení Silverlight Tools for Visual Studio. To ještě neznamená, že se žádná vylepšení konat nebudou (možná se to jen nevešlo do keynote), ale osobně se vážně bojím, že Microsoft bude vydělávat prašulky na Blendu a Visual Studio bude propagovat jako nástroj pro vývojáře, kteří už mají UI vytvořené designerem a nemusí ho tudíž moc řešit. Což je samozřejmě bullshit.
  • Scott Guthrie taky vůbec nemluvil o vylepšení kompatibility WPF a Silverlightu. Můj osobní názor je, že WPF byla velká chyba Microsoftu, která zbrzdila vývoj jejich vlastních aplikací i celého odvětví o roky (to by bylo na delší vyprávění), ale když už tu WPF máme, měl by být Silverlight co nejvíc kompatibilní. Absence tohoto tématu na keynote mě trochu děsí, protože může naznačovat, že to není pro Microsoft prioritou.
  • Možná se to bude zdát malicherné, ale pro mě je Silverlight mrtvý, dokud nezlepší svůj font rendering. S velkým nadšením jsem proto přivítal oznámení, že SL3 bude podporovat ClearType. Snad to nebude nějaký „vlastní ClearType“ jako tolik vychvalovaný „subpixel rendering“ ve WPF, který ve skutečnosti velmi snižuje čitelnost textu. V betě zatím vylepšený font rendering není.
  • Velkým oznámením dne byl Silverlight Out of Browser (OOB). Tady jsem měl poměrně přesný odhad, co Microsoft uvede: pokud znáte Mozilla Prism, tedy možnost spustit webovou aplikaci ve vlastním okně zástupcem z plochy, ale přitom vlastně pořád v kontextu prohlížeče (a tedy v jeho bezpečnostním sandboxu), víte, jak bude fungovat Silverlight OOB. V žádném případě se tedy nejedná o konkurenci pro Adobe AIR, což je škoda. Jakožto Flex vývojář musím říct, že možnost znovupoužít zdrojový kód i zkompilované binárky současně na webu i na desktopu je naprostá bomba. Microsoft to buď nechápe nebo má tolik nainvestováno do těžko použitelného WPF, že management prostě nedovolí vytvořit AIR-like runtime a příslušná API. Sázka na unifikovaný vývojový model napříč různými běhovými platformami je esem v rukou Adobe a od Microsoftu asi bohužel žádný trumf v nejbližší době čekat nemůžeme.

Celkově vzato vidím SL3 jako verzi, která „jen“ dohání Flex. Je úctyhodné, že se Microsoftu během 3 let (nebo kolika) podařilo dohnat několikaletý náskok Adobe, ale tipuji, že první opravdu inovativní verze bude ta čtvrtá. To samozřejmě z SL3 nedělá nepovedený release, jen mě prostě oznámení z letošního Mixu nedokázala nadchnout. Ostatně, asi se tak necítím sám – v sále bylo letos dost ticho, což ostře kontrastuje s dlouhými potlesky a nadšenými výkřiky během konference Mix07, kdy Microsoft poprvé Silverlight ukázal.

Na závěr – takhle vidím hlavní silné a slabé stránky Silverlightu / Flexu já:

Silverlight:

  • (+) .NET v prohlížeči, .NET na serveru, .NET v databázi = potřebujete znát jen jednu sadu technologií. Tohle je obrovská výhoda, která může vyvážit třeba i několik plusů Flexu.
  • (+) Microsoft do Silverlightu mohutně investuje, vývoj je o dost rychlejší než u Adobe.
  • (-) Vývojový model je postaven na zbytečně komplikovaném WPF.
  • (-) Vývojové nástroje jsou nevyzrálé, Microsoft se příliš orientuje na designery s Blendem a ignoruje fakt, že s UI pracují i vývojáři

Flex:

  • (+) Zavedená technologie, Flash Player běží skoro na všech počítačích světa.
  • (+) Jednotný vývoj pro web a pro desktop. Binární kompatibilita!
  • (+) Jednoduchý vývojový model velmi podobný HTML+JS. Žádné superkomplikované XML struktury, vše je jen tak složité, jak je nezbytné.
  • (-) Pro serverové programování je potřeba použít jinou technologii
Zařazeno do kategorií | |
Jarda Jirava (Čt, 2009-03-19 21:24):

Flex neznám, proto se nebudu vyjadřovat ke srovnání. Zkusím okomentovat jen Silverlight. Co se týká WPF, tak to by v budoucnosti mělo být nadmnožinou, použitou v Silverlight. Neznám konkrétně tvé výhrady k WPF a docela by mě zajímaly, osobně mi to přijde jako dobrý směr nebo určitě lepší než winforms – ano, výhrady se také najdou, ale ve srovnání právě s winform je WPF vpředu. Pokud jsi se díval na Prism 2.0 (Composite WPF), tak řeší spoustu infrastrukturních věcí, které pomáhají ve výjoji a tak můžeš mít snadno sdílený kód aplikace pro Silverlight tak i „tlustého“ WPF. A myslím, že i spoustu ovládacích prvků budeš moci znovupoužít. Je jasné, že rozšířenost nemůže být za půl roku (v2.0) taková, jako má konkurence ve Flash playeru. Ale pokud se nemýlím, tak pro běh na klientovi je stejně nutno stáhnout separátní instalaci (cca 11MB). Navíc MS v tomto směru celkem dobře podchytil rozšiřování v podobě streamingu OH, a pokud vše dopadne, mělo by to být právě přes v3.0. Toť jen mé postřehy. --J.

Borek (Čt, 2009-03-19 23:05):

Díky za komentář, pár poznámek v bodech:

  • WPF by mělo být nadmnožinou, ale v praxi to neplatí úplně stoprocentně (rád používám pojem „mimomnožina“).
  • Prism jsem zběžně procházel minulý týden (když jsem sbíral inspiraci pro Flex aplikace :), ale bylo to tak zběžné, že nemůžu dělat žádné závěry. Ale i Caliburn by měl mít multitargeting, takže to asi nějak půjde.
  • Ano, Adobe AIR je běhové prostředí, které je potřeba nainstalovat samostatně. Je to trochu něco jako Silverlight plugin vs. plný .NET s tím rozdílem, že komponenty pro Flash Player a Adobe AIR jsou binárně kompatibilní.

Mé výhrady k WPF by zajímaly i níže komentujícího MicTecha, tak se snad brzo k sepsání něčeho kratšího dostanu.

Jarda Jirava (Pá, 2009-03-20 09:16):

>WPF by mělo být nadmnožinou, ale v praxi to neplatí úplně stoprocentně (rád používám pojem „mimomnožina“).

Neříkám, že je to současný stav, ale stav, ke kterému se směřuje. Plné WPF zde přeci jen bylo dřív. A podle reakcí na letošním MVP Summitu to spíše vypadalo, že by se od Silverlight chtělo, aby měl vše co plné WPF, což bylo ze strany MS dementováno a poukazováno, že existuje Client profile (částečná analogie k běhovému prostředí Adobe AIR).

Podle mě, MS v současné chvíli hledá cestu, která bude mít perspektivu, a nabídne jak uživatelům tak i vývojářům potřebný komfort. (viz. právě Silverlight+OoB a plné WPF+XBAP) A zřejmě se spoléhá i na to, že je velice rychlý ve vývoji a nové verze jdou do release téměř po roce.

--J.

MicTech (Čt, 2009-03-19 22:35):

Netvrdil bych, že WPF byla velká chyba Microsoftu. Chyba je určitě v tom, že přišlo tak pozdě, protože už nekde kolem roku 2001 se objevovali funkční ukázky. Ale rád si přečtu to delší povídání.

Jan Jelinek (So, 2009-03-21 17:37):

Ahoj,

dík za pěkný příspěvek z pohledu Flexaře. Flex znám jen zběžně, takže je to celkem super si počíst o tom, jak SL vidí vývojáři ostatních technologií.

Mám jen pár bodů (možná i nějakou tu odpověď:-):

  1. WPF bych také neházel do koše. Jedná se o velice šikovnou technologii, ve které se dá udělat spoustu zajímavých věcí:-)
  2. Co se týče sblížení SL a WPF, tak to asi čekali všichni a obávám se že tohle je na SL3 trochu odfláklé a tento nedostatek trochu kamuflují integrací SL Toolkitu (jen některých „mature“ komponent. Můj sen? App v WPF --> Ctrl+C, Ctrl+V = app v SL.
  3. Co se týče VS, tak oni se na něj v MS „nevykvajzli“. Je pravda, že jsem na MUXu taky čekal nějaký příspěvek o tom jak si pěkně poradí s SL, ale ono ne. Každopádně výrazné zlepšení práce se SL ve VS přijde až s VS2010 (viděl jsem to na nějakém videu). Bude se jednat o výraznou podporu DataBindingu, práci se styly a templatovaním, atd. Bude toho asi víc, ale zatím je hrozně málo zveřejněno (a ani jsem extrémně o tom nepátral).
  4. OOB – zajímavé a velký potenciál do budoucna, ale v tuto chvíli nedodělané (tady doufám že se v ostré verzi vytáhnou.
  5. 3D – moje velké zklamání. Těšil jsem se na skutečné 3D a ono nic. Ani se tomu nedá říkat 3D. SL3 má pouze perspektivní 2D.

Uf, takhle dlouhej komentář jsem snad nidky nenapsal:-)

Borek (Ne, 2009-03-22 14:33):

Díky za komentář.

K tomu vztahu WPF a SL: myslím, že cílem je mít spíš obrácenou kompatibilitu na úrovni zdrojových kódů, tedy SL app → copy&paste → WPF app. Považ ale, jestli by nebylo ideální mít binární kompatibilitu jako ve světě Flexu, tedy vytvořím knihovnu třeba pro práci s obrázky, zkompiluji ji a rovnou ji můžu použít ať už ve WPF projektu nebo SL projektu. Pokud je mi známo, k této situaci se světě .NETu neschyluje, což je mi trochu záhadou vzhledem k tomu, jak užitečné by to bylo.

Komentáře jsou uzavřeny (blog je v read-only módu). Pokud mě chcete kontaktovat, můžete mailem.