18. března 2011

Co vybrat na klienta? Finále Silverlight vs. GWT

Výběr klienta jde do finále, rozhodujeme se nyní mezi Silverlightem a GWT.

Potřeboval jsem tu původní množinu možností z prvního článku nějak zúžit, abych je mohl detailně porovnat a vybrat nejlepší variantu.

Důvody, proč jsem vybral tyto dvě technologie a nevybral jiné:

  • technologie nevybíráme úplně na zelené louce, nezačínáme od začátku - firma již má nějakou historii, má nějaké produkty, má nějaké know-how, má nějaké programátory, kteří mají určité znalosti. Není možné tedy říci, co bylo, to mě nezajímá, teď přichází budoucnost ...

  • současný výběr technologie ovlivní vývoj ve firmě na dalších min. pět let, možná i více. Ze zkušenosti potřebuji mít aspoň nějaké garance, že technologie tuto dobu (a ideálně mnohem déle) bude existovat, bude podporována, musím z ní "cítit", že se s ní do budoucna počítá. Proto jsem vyřadil řešení jako OpenLaszlo nebo třeba vaadin, které se mi zdají výborné, ale nedovolím si na tom postavit strategii firmy na další roky.
    Pozn.: možná by bylo vhodné uvést, že se bavím o firmě s více jak sto zaměstnanci, z toho čistý vývoj (bez konzultantů) čítá cca 30 lidí.

  • firma dosud hlavně vyvíjela tlusté klienty v Delphi, některé menší projekty mají webové uživatelské rozhraní. Servery jsou všechny psané v Javě. Toto má dva významné důsledky: přepsaní tlustých klientů do webových technologií nebude určitě bezbolestné a bude potřeba najít cestu nejmenšího odporu. Lidem se znalostí Delphi je bližší technologie .NET než webové technologie, navíc tu již nějaké znalosti .NETu jsou.

  • jak jsem již uváděl v předchozím článku, tak Java na straně klienta u mě (bohužel) důvěru nemá. Nikdy to nebylo ono, a ani JavaFX ve mě nyní nebudí moc velkou důvěru. Sun tuto technologii hodně tlačil, ale Oracle je nyní pro mě v této oblasti velkou neznámou.

  • výběr technologie souvisí s možnostmi sehnat (kvalitní) lidi s potřebnými znalostmi. Firma by se v tomto ohledu chtěla "otevřít" mladším ročníkům, absolventům. Také bude určitě dříve či později potřeba sehnat lidi pro nárazovou pomoc na projektech, takže je potřeba se dívat na její rozšíření a podporu v našich končinách.

  • základní technologie je jedna věc a nabízená rozšíření třetích stran je druhá věc. Např. samotné GWT dobrý, ale nabídka třetích stran ještě lepší - SmartGWT, ExtGWT atd. To samé Silverlight - telerik, infragistics atd.

  • při vývoji webových aplikací nechci řešit (nebo řešit co nejméně) kompatibilitu mezi prohlížeči. Chci používat nějaký produkt, nějaké komponenty, které to budou řešit za mě. Bohužel ze zkušenosti vím, že toto nikdy nebude 100%, viz moje zkušenosti z JSF a NetAdvantage.

  • na serveru bude Java, to je jistá věc. K Javě má určitě blíže GWT než Silverlight. Dnes máme celkem velkou znalostní propast mezi lidmi, co dělají klienta a co dělají server, protože se používají úplně odlišné technologie. Jen opravdu minimum lidí rozumí obojímu.
    Při volbě GWT budou mít oba světy k sobě blíže, bude možné lépe vytěžovat lidi - v případě potřeby podpořit více klienta nebo server. Teď to moc nejde, protože s Javou mi v Delphi nepomůžou a naopak
    Naopak pokud zvolím Silverlight a ty světy budou více oddělené, pak by mohl být větší tlak na kvalitní API na serveru, byly by jasně dané hranice. Až za pár let se zase třeba bude měnit technologie na klientovi, tak server zůstane beze změn a jen se vymění klient.

  • v dnešní době je určitě nutné přemýšlet o mobilním přístupu k datům. Není to hlavní kritérium, ale ohled na to je potřeba brát.

  • trochu mám obavu z přijetí Microsoftu u státních projektů. Je jasné, že Microsoft je u nás všude ve státní správě, ale přeci jen cítím, že státní projekty by měly být co nejvíce nezávislé a v tomto pohledu "mám lepší pocit" z Google než Microsoftu. Asi je to jen pocit.


Jdeme tedy do finále :). Zase budu moc rád za vaše komentáře a zkušenosti, protože takové věci jsou k nezaplacení.

23 komentářů:

Anonymní řekl(a)...

S infragistics jsem delal pred lety, technologie dobra, ale dejte si pozor na dokumentaci - za me uplne chybela.

GWT pry jeste neni stavene na obrovske projekty - da se spatne extendovat bez kompletniho rebuildu.

Vít Šesták 'v6ak' řekl(a)...
Tento komentář byl odstraněn autorem.
Vít Šesták 'v6ak' řekl(a)...

Podpora v prohlížečích (mobilní prohlížeče a vlastně všechno mimo Windows) je celkově proti Silverlightu a pro GWT. Ono vlastně i na Windows to často* není předinstalované.

Jednu věc pro Silverlight bych ale přece našel: Podpora více programovacích jazyků. U GWT je tu omezení prakticky jen na Javu (a teda přes JSNI i Javascript), u Silverlightu je možné použít snad cokoli na .NET. Pravda, pro GWT tu je ScalaGWT - za sledování to stojí, ale zatím si s tímto do produkce netroufnu.

Jinak kdysi jsem někde (root.cz?) četl, že MS odsunul Silverlight do pozadí, ale už jsem to pak moc nesledoval, možná jej (třeba v souvislosti s WP7) zase z toho pozadí vytáhl :-)

*) Nevím, jak je na tom Win7, ale jinak mimo WP7 to snad předinstalované nenajdeme.

Augi řekl(a)...

V případě Silverlightu bych upřednostnil C#, ale protože kladeš velký důraz na "znovupoužití znalostí", mohla by tě zajímat existence Delphi Prism, ve kterém je možné vyvíjet i pro Silverlight: http://www.embarcadero.com/products/delphi-prism

Pavel řekl(a)...

Napíšu svou zkušenost z pozice uživatele: Silverlight mne jenom štve. Narážím na něj jen tam, kde ho někdo nasadí pro streamování videa a vždy bez výjimky to pro mne znamená konečnou: ještě nikdy mi instalace pluginu na linuxu nestačila.

Tím chci říct, že volba Silverligh automaticky znamená vynucení operačního systému na klientovi. A jako daňový poplatník doufám, že toto státní správa za pár let nebude tolerovat (dnes v době divokého uplácení je to jedno, vizte datové schránky a nesmysly od SW602).

Markus řekl(a)...

Osobně věřím, že se v horizontu 3 let prosadí GWT. Základy a zázemí jsou silné a podle mě zájem o něj bude sílit s rozšířením prohlížečů podporujících HTML5. Stále si myslím, že zatímco na backend je vhodná Java, Scala, C##, Clojure či Erlang (a další fn..), na frontendu je třeba řešit věci co nejvíce deklarativně a v nutných případech doplňovat jednoduchými skripty. Pokud teď napíšu aplikaci v GWT, věřím, že má zajištěna technologicky dlouhý život. Silverlight je podle mě nejpovedenější technologie MS posledních let, bude stát nad WPF ve Windows 8 jako framework pro tvorbu aplikačního GUI. Ale nevěřím, že někdy solidně pojede na jiných OS než jsou Windows.

Horyna řekl(a)...

Proč vypadl flash/flex?

Kamilos řekl(a)...

Ahoj Petře. Docela mě zaujalo, že se do finále dostalo GWT, které mezi původními favority nebylo :) Reaguji, neboť už skoro rok s GWT intenzivně pracuji. Mé zkušenosti s GWT: má to jisté mouchy, největší asi ta, že v podstatě programuješ jiný kód (Java), než který nakonec běží na klientu (JavaScript). Pokud tedy něco funguje v debugu, ale nefunguje na produkci, je to noční můra. Naopak Java programátorům se v tom bude psát hezky. Trochu to připomíní psání v JFC swing, ale View můžeš mít jako XML šablonu (GWT+HTML tagy), tudíš dobře modifikovatelnou. Podpora napříč prohlížeči je také fajn - celkem snadno se udělá aplikace, která funguje v IE, FF, Opeře, Safari atd. V mobilním světě to ještě není ono, ale já su upřímně stejně myslím, že jeden klient není moc reálné použit beze změny na desktopu a na mobilu. GWT obsahuje celkem dost komponent pro vytvoření dialogů, všech možných editů, listů atd. Lze si pochopitelně vytvářet svoje vlastní komponent. Celkově myslím, že pro firmu "M" ;-) to je použitelné. A co, že se GWT vůbec dostalo mezi favority? Měl jsem dojem, že generovaný JavaScript je zásadní překážka.

Petr Jůza řekl(a)...

ad Proč vypadl flash/flex? Já jsem se to snažil zdůvodnit už v tom článku, ale možná to bylo moc obecné. Proč ne Flex? Ve finále můžou být jen dva :).
Teď vážně - nemám v Adobe a Flash v dnešní době důvěru, zejména co se týče výhledu do budoucna. Adobe jako "programátorská" firma nic moc (zájem o komunitu, dokumentace atd.) a myslím, že budoucnost Flashi patřít nebude.

Navíc mi přijde Flash vhodný spíše na "graficky a multimediálně zajímavé aplikace" a ne na nějaké aplikace pro státní správu.

Posledních 10 let se na poli HTML nic moc nedělo (snad jen CSS se pořád vyvíjely) a teď přislo HTML5 a je vidět, že je tu opravdu "nálada" to posunout dál, domluvit se, standardizovat. V tom nyní vidím budoucnost.

Anonymní řekl(a)...

Podla mna ste si dal teraz otazku ci vybrat jablko alebo hrusku. GWT a Silverlight su dve uplne rozdielne technologie.

GWT je framework postaveny sice na jave ale jeho vystupom je vzdy html/javascript, cize standardne technologie, ktore sa uz dnes pouzivaju.

Silverlight je technologie pre klienta, ktora v podstate obchadza HTML a vytvara si vlastne behove prostredie tak isto ako flash.

Kazda s nich ma svoje vyhody alebo nevyhody. GWT je podla mna taky kanon na zajace ale pokial idete do velkej aplikacie tak to mozno stoji za uvahu. Jeho vyhoda je, ze pracuje s technologiou ktora chodi prakticky na 100% PC (okrem mozno IE, kde sa hodne natrapite hlavne s designom). Tak isto tato technologia nevypadne ani za 10 rokov koli spatnej kompatibilite html5. Naopak, je mozne ze cely framework bude neskor usposobeny na HTML5 a jeho features. Jeho nevyhoda je, ze sa cas od casu nevyhnete "znasilnovaniu" tohto framework (hlavne ked vam nieco nepojde na IE ;-)).
Silverlight ma vlastne behove prostredie, takze jeho vyhoda je v tom, ze co tam nakodite to pojde. Bohuzial problemom je, ze nie vsade. Je to technologia od Microsoftu a preto pojde spolahlivo iba na jeho produktoch. Vlastne tym budete aj viazany. Taktiez je o microsofte zname, ze ak sa tam niekto zle vyspi tak celu tu technologiu posle do minulosti. Na vasom mieste by som si dobre spocital, kto vsetko bude s vasimi aplikaciami robit. Silverlight je technologia, ktora sa velmi neujima uz aj koli tomu ze sa caka na HTML5. Ako som povedal je to hlavne o kompatibilite.

Ak by mi dal niekto na vyber medzi tymito dvoma tak by som asi vybral GWT a najal nejakeho dobreho CSS designera.
Brali ste do uvahy ze okrem tohto existuju aj ine technologie pre klienta? Napr. javascriptovy ExtJS alebo existujuce komponentove technologie JSF2, Tapestry 5, Wicket,...
Tych moznosti je vela.

Anonymní řekl(a)...

Preco vylucujete pouzitie JSF 2.0 s nejakym balikom komponent napr. ICEFaces alebo Primefaces?

Unknown řekl(a)...

Dobry den,

jeste bych se ohlizel pri vyberu technologie na skilly, ktere jiz ve spolecnosti mate a ktere pripadne budete potrebovat doplnit a snadnost jejich doplneni. Osobne bych rekl, ze ve spolecnosti, ktera hodla expandovat je tohle dost zasadnni kriterium, protoze i kdyz vezmete uzasnou technologii, kterou nikdo nebude umet bude Vas kazdy odchod zamestnance velmi bolet a nahradit ho, nebo rozsirit tym pujde dost z tuha.

Anonymní řekl(a)...

Jak nekdo muze vahat mezi technologii Microsoftu a Googlu ... Zkuseny a inteligentni clovek s alespon 5 - 10 lety praxe v IT must prece videt naprosto jasne, ze se nevyplati investovat cas ani penize do Microsofti technologie... To co tady microsoft predvadi za posledni dve dekady je hodne k placi, nezdrava komunita a marketingem vyhonena popularita nebude zit dlouho podle me...

Omlouvam se za trochu offtopicu...

Anonymní řekl(a)...

Ja osobne by som sa uz zacal zameriavat na HTML5. Vypada to, ze tato technologia ide velmi rychlo dopredu co sa tyka podpory.

Petr Jůza řekl(a)...

ad JSF: Z mých zkušeností jsou JSF dobré pro intranetové aplikace, pro omezený počet lidí, hlavně z důvodu jejich výkonnosti a škálovatelnosti. Navíc know-how k JSF je ve firmě nulové a ani ji nikdo nehce.


ad Microsoft: "... nevyplati investovat cas ani penize do Microsofti technologie... To co tady microsoft predvadi za posledni dve dekady je hodne k placi, nezdrava komunita a marketingem vyhonena popularita nebude zit dlouho ..."

Nejsem žádným fanouškem Microsoftu (spíše naopak), ale s tímto tvrzením nesouhlasím. Jednak si myslím, že ať se nám to líbí nebo ne, tak Microsoft do značné míry udává směr a je potřeba ho brát v potaz (i když to může být marketingově vyhoněné, ale co dneska není?) Pak si myslím, že při výběru technologie na klienta má cenu přemýslet v horizontu 5 let, o moc více ne. Něco jiného je server, tam je to hlavní know-how, ale klient je pro mě jen nějaké zobrazení.
A v neposlední řadě se na to snažím koukat více jako manažer než programátor a zohledňuji takové věci, jako podpora Microsoftu pro naše podnikaní, pomoc v obchodu atd.

Anonymní řekl(a)...

takze nakoniec ste sa ako rozhodli, respektive v akej ste faze. Ste stale nakloneny GWT ?

Anonymní řekl(a)...

A co tak spring MVC. Pomerne jednoduchy, nenarocny a dokaze toho vcelku dost

Petr Jůza řekl(a)...

Finální rozhodnutí ještě nepadlo a ještě nějaký čas asi nepadne, termín máme do června.

Anonymní řekl(a)...

No co sa tyka vykonu JSF. Pouzivame JSF aj na klasicke webove aplikacie a z mojich skusenosti si myslim, ze pouzitelne su aj co sa tyka vykonu. Napr. ZUNO banka ma na icefaces postaveny cely internet banking.

Uz ste sa zamyslali aj nad tym spravit si vlastny framework, ktory by splnal vase poziadavky?

Petr Jůza řekl(a)...

Zrovna ZUNO banka je hodně špatný příklad :) - v této bance jsem se účastnil performance testů a bylo celkem vidět, že klient moc rychlý není. Nicméně tato věc byla "daná" a byly jiné větší problémy k řešení, takže toto se nechalo být.
Ale je pravda, že to vypadá pěkně, možná na banku až moc divoce :).

Anonymní řekl(a)...

zravim, a nerozmyslate nad EXTJS ? Teraz vysla 4rka v ktora bola znacne prepracovana. Ide podla mna o silny, rychly framework s obrovskou perspektivou. Zatial nanom nevidim nevyhody okrem komercnych licencii, ale ak chce v tom clovek dlhodobo vyvijat tak myslim ze je to zanedbatelna cast nakladov. Neviem akych mate ludi asi vychovanych na staicky typovanych jazykoch, toto je javascript, no js ma obrovsku buducnost tak by to mozno mohla byt prenich vyzva sa posunut dalej od staticky typovanych zalezitosti. Jednoznacne sa lepsie modeluje v dynamickych jazykoch(ruby,python..)

Anonymní řekl(a)...

Zajímavé kouknout se o pouhý rok později, jak předpoklad, že MS za Silverlightem zajistí této technologii budoucnost byl mimo.

Petr Jůza řekl(a)...

Také jsem o tom nedávno přemýšlel - v té době jsem se podle mého názoru rozhodl správně, ale i tak je to pro mě velké ponaučení - Microsoftu se v tomto směru nedá věřit, pokud člověk chce něco opravdu na delší dobu. Na firma se teď sama hledá a neví co chce.