it-swarm-eu.dev

Kdy nepoužít Google Web Toolkit?

Uvažuji o použití GWT v hlavním in-house projektu vývoje webových aplikací, konkrétně je to v mých očích hlavní výhodou kompilace s Javascriptem, která by (alespoň teoreticky) pomohla mému týmu snížit velikost tech stacku o jeden .

Nicméně, protože jsem byl spálen dříve (jako většina devs), rád bych slyšel od programátorů, kteří ho skutečně použili na jakékoli problémy s GWT, které by bránily nebo omezily jeho použití v určité problémové doméně.

Jaké jsou argumenty proti používání GWT a proč?

55
Jas

Jsem dobrý i špatný na odpověď na tuto otázku - dobrý, protože jsem to vlastně už dříve použil, a špatný, protože jsem byl před prací s GWT docela zkušený s HTML/CSS/JavaScript. To mě nechalo zbláznit pomocí GWT takovým způsobem, že ostatní vývojáři Java vývojáři, kteří opravdu neví DHTML, možná nebyli).

GWT dělá to, co říká - abrazuje JavaScript a do jisté míry HTML do Java. Pro mnoho vývojářů to zní skvěle. Víme však, jak to říká Jeff Atwood, všechny abstrakce jsou abstrakce bez selhání (stojí za přečtení, pokud vezmeme v úvahu GWT). U GWT to konkrétně přináší následující problémy:

Použití HTML v GWT saje.

Jak jsem řekl, do určité míry dokonce abstrakta HTML. Vypadá to dobře vývojáři Java. Ale není tomu tak. HTML je formát značek dokumentů. Pokud jste chtěli vytvořit Java objekty pro definování dokumentu), nepoužíval by prvky označení dokumentu. Je to šíleně podrobný. Je také dostatečně neovládaný. V HTML existuje v podstatě jeden způsob, jak napsat <p>Hello how are <b>you</b>?</p>. V GWT máte 3 podřízené uzly (text, B, text) připojené k uzlu P. Buď můžete nejprve vytvořit P, nebo nejprve vytvořit podřízené uzly. Jeden z podřízených uzlů může být výsledkem funkce. Po několika měsících vývoje u mnoha vývojářů je snaha dešifrovat, jak váš dokument HTML vypadá sledováním kódu GWT, proces vyvolávající bolesti hlavy.

Nakonec se tým rozhodl, že možná použití HTMLPanel pro všechny HTML je tou správnou cestou. Nyní jste ztratili mnoho výhod GWT spočívajících v tom, že elementy jsou snadno dostupné pro kód Java kód pro snadné vázání dat).

Použití CSS v GWT saje.

Připojením k abstrakci HTML to znamená, že způsob, jakým musíte používat CSS, je také odlišný. Od posledního použití GWT (asi před 9 měsíci) se to mohlo zlepšit, ale v té době byla podpora CSS nepořádkem. Z důvodu způsobu, jakým GWT vytváří HTML, máte často úrovně uzlů, o kterých jste nevěděli, že byly injektovány (jakýkoli CSS dev ví, jak to může dramaticky ovlivnit vykreslování). Bylo příliš mnoho způsobů, jak vložit nebo propojit CSS, což mělo za následek matoucí zmatek jmenných prostorů. Kromě toho jste měli podporu Sprite, která opět zní pěkně, ale ve skutečnosti jste zmutovali váš CSS a měli jsme problémy s tím, že jsme psali vlastnosti, které jsme potom museli explicitně přepsat později, nebo v některých případech, zmařili naše pokusy, aby odpovídaly našim hand- kódoval CSS a musel to pouze přepracovat tak, aby jej GWT nezvrátil.

Spojení problémů, průnik výhod

Každý jazyk bude mít svůj vlastní soubor problémů a výhod. Zda je používáte, je vážený vzorec založený na nich. Když získáte abstrakci, získáte spojení všech problémů a průnik výhod. JavaScript má své problémy a běžně se šíří mezi inženýry na straně serveru, ale má také několik funkcí, které jsou užitečné pro rychlý vývoj webu. Zamyslete se nad uzávěrkami, zkratkou syntaxe, objekty ad-hoc, veškerými věcmi, které provedl Jquery (jako dotazování DOM pomocí selektoru CSS). Nyní zapomeňte na jeho použití v GWT!

Oddělení obav

Všichni víme, že s rostoucím projektem je rozhodující mít dobré oddělení zájmů. Jedním z nejdůležitějších je oddělení mezi zobrazením a zpracováním. GWT to opravdu ztěžovalo. Pravděpodobně ne nemožné, ale tým, na kterém jsem byl, nikdy nepřišel s dobrým řešením, ai když jsme si mysleli, že máme, vždy jsme měli jeden, který unikal do druhého.

Desktop! = Web

Jak @Berin Loritsch zveřejnil v komentářích, model nebo myšlení GWT je vytvořeno pro živé aplikace, kde má program živý displej pevně spojený se zpracovatelským motorem. To zní dobře, protože to je to, co tolik cítí, že web chybí. Existují však dva problémy: A) - Web je postaven na HTTP a toto je ze své podstaty odlišné. Jak jsem již zmínil výše, technologie postavené na HTTP - HTML, CSS, dokonce i načítání zdrojů a ukládání do mezipaměti (obrázky atd.), Byly postaveny pro tuto platformu. B) Java vývojáři, kteří pracují na webu), se snadno nepřepínají k tomuto myšlence pro desktopové aplikace. v tomto světě je zcela jiná disciplína. Vývojáři Flex by pravděpodobně byli vhodnější pro GWT než Java weboví vývojáři).

Na závěr...

GWT je schopna produkovat rychle a špinavě AJAX aplikace docela snadno pomocí pouze Java. Pokud rychle a špinavý nezní jako to, co chcete, nepoužívejte jej. Pracoval jsem pro společnost, která se hodně zajímala o koncový produkt, a pro uživatele je to smysl pro polský, vizuální i interaktivní vzhled. Pro nás front-end vývojáře to znamenalo, že jsme potřebovali ovládat HTML, CSS a JavaScript způsobem, který umožňoval použití GWT, jako když se snažíte hrát na klavír s boxerskými rukavicemi.

84
Nicole

Používáme GWT pro velkou webovou aplikaci eGovernment (SOA v pozadí), která má velké využití. Starý UI byl v DHTML, ale měli jsme problémy s kompatibilitou prohlížečů, optimalizací výkonu a vývojovým procesem, takže jsme hledali alternativy.

Naše požadavky byly:

  • vrstva uživatelského rozhraní na straně klienta pro minimalizaci zatížení serveru
  • kompatibilita prohlížeče
  • webová RIA
  • Snadná optimalizace výkonu
  • Není nutná instalace klientských pluginů, měla by fungovat s instalací obyčejných oken

Vybrali jsme GWT a nikdy jsem toho nelitoval. Nový tým neměl žádné nebo méně zkušeností s DHMTL, a proto byl proces GWT Java dev) procesu GWT velmi nápomocný.

  • kompatibilita prohlížeče
  • Vývojový proces založený na Javě a opětovné použití kódu
  • snadné minimalizování požadavků (balík obrázků, ...)
  • snadné agresivní ukládání do mezipaměti (nové aplikace jsou zcela ukládány do mezipaměti na straně klienta)
  • snadná komprimace všech zdrojů (i s js na starších chybových IE)
  • a ještě mnohem více, o čem se zde zmíním

Naše aplikace vydává při spuštění serveru pouze jeden požadavek. Negativní stránkou je, že GWT (a také Android) mají špatný design, ale přesto, pokud použijete svůj vlastní vzhled a máte pocit, že musíte přizpůsobit CSS. Alternativně můžete pro GWT použít různé knihovny komponent, které usnadňují použití správných stylů a motivů.

Pro mě není důvod, že možná HTML DOM není tak dobrý jako ručně, nikdy to nebyl problém. Když se vyvíjím v C++, nedívám se na vygenerovaný kód assembleru. Když jsem se vyvíjel v GWT, nikdy jsem neměl důvod se podívat na kód JS a pouze jednou se podívat na DOM a udělat nějaké refaktoring.

Pro mě je GWT jedinou volbou, pokud jde o vývoj RIA, a doufám, že GWT má světlou budoucnost. Viz prohlášení mise na:

[1] http://code.google.com/intl/de-DE/webtoolkit/makinggwtbetter.html#introduction

Nemělo by se však zmínit, že Google nepoužívá GWT na mnoha svých interních projektech a že v tuto chvíli existují nějaké zvěsti o budoucnosti GWT, viz

[2] http://googlewebtoolkit.blogspot.com/2011/11/gwt-and-Dart.html
[3] https://plus.google.com/105933370793992913359/posts/bLfSagtziBC

24
ChrLipp