25.1.2010

Emulovanie java tried v GWT

Naposledy pri jednej nezáväznej debate pri dobrom pivku sme narazili na situáciu ako riešiť problém Command patternu v GWT. Celkový problém spočíva v tom, že klient (rozumej javascript, alebo skompilovaný GWT Java kód) zostrojí lightweight verziu Command objektu na GUI (s naplnenými dátami), pošle sa na server - či už pomocou RPC, alebo JSON (alebo telepaticky, v princípe je to jedno :) ) , na serveri sa zostrojí už plnohodnotná inštancia triedy so serializovanými dátami a daný Command sa vykoná a poprípade vráti výsledok späť na klienta. V princípe existuje viacero riešení, otázkou je čo uzná GWT špecialista-odborník za najvhodnejšie :). V princípe ma napadá hneď niekoľko riešení:
  • Vytvoriť "custom field serializer" pre dané command-y, ktorý bude zodpovedný za deserializáciu serializovaného objektu a jeho korektné nainštanciovanie - nevýhoda je, že je potrebné pre kazdý command vytvárať vlastný deserializér, čo v princípe nie je nejaký extra problém ale je to celkom otrava a celkovo ... na čo ? keď sa to dá aj jednoduchšie.
  • Nejakým zázrakom cez aspekty zneuctiť proces GWT deserializácie a inštanciovanie presunút do vlastnej réžie (Igor alebo Michal ... nepodelíte sa o svoje riešenie ? :) ) - výhody sú nesporné - jedna univerzálna trieda pre inštanciovanie všetkých Commandov
  • Využiť proces emulácie java tried a vytváranie ich lightweight verzie na klientovi - je to oficiálny postup aj zo strany GWT, odskúšaný praxou a celkom zaujímavé riešenie. Jediným problémom môže byť to, že treba serializované položky leightweight a plnohodnotnej verzie commandu udrziavať synchrónne - to znamená, že keď pridám novú položku do commandu, musím ju pridať na 2 miestach, kvôli serializácii na klientovi (1 miesto) a kvôli deserializácii na serveri (2 miesto). Toto však v dnešnej dobe nie je žiadny problém, pretože doménová oblasť je pred implementáciou dôkladne zmapovaná, požiadavky korektne zanalyzované, softvér bezchybne navrhnutý, takže nehrozí, že by počas implementácie nastala zmena v požiadavkách alebo zmena v rozhraní daných Command objektov ;). Mimochodom kompletný článok je možné nájsť na wiki stránkach acris-u: GWT Emulation.

22.1.2010

1. GTUG stretnutie

Máme za sebou prvé stretnutie skupiny vývojarov Google technológii, ktoré zorganizovali chalani z firmy Seges (Peter Šimun, Ladislav Gažo a Michal Grosos) v Bratislave. Technologicky bolo stretnutie zamerané na Google Web Toolkit. Účasť prekvapila pravdepodobne všetkých, počet zúčastnených bol 15 a nakoniec aj celkový čas trvania stretnutia napovedajú tomu, že záujem o Google technológie je naozaj veľký.

V úvode Igor Mihálik predstavil GTUG iniciatívu vo všeobecnosti, ako je táto iniciatíva vnímaná zo strany spoločnosti Google a aké kroky môžme my sami podniknúť pri rozširovaní lokálnej slovenskej GTUG komunity: priespevanie do blogu, organizovanie stretnutí, komunikácia aj cez diskusnú skupinu, kóderske "hackathony" alebo campouty, ale aj iné možné formy spolupráce napríklad prostrednictvom open source projektov.



Po tomto netechnickom úvode nasledovala diskusia spojená s prezentáciami rôznych prístupov použitých pri používaní Google Web Toolkitu.

Vojtech Szőcs odprezentoval best-practices, ktoré sa osvedčili na skutočnom projekte s použitím GWT. Pozornosť sa venovala použitiu MVP, Command patternu a EventBus-u. Základ diskusie vychádzal zo známej a veľmi populárnej prezentácie Ray Ryan-a.

Po krátkej prestávke Michal Grosos, Peter Šimun a Ladislav Gažo pokračovali prezentáciou ich open source projektu acris. V skutočnosti acris zastrešuje viacero projektov: AcrisWeb pre podporu tvorby web stránok, ktorý poskytuje základné stavebné bloky pri ich realizácii, GWT Beans binding pre podporu data-bindingu s použitím anotácií, myšlienka použitia GwtTestCase-u na generovanie index-friendly obsahu v podobe Offline content generator-a, GWT security, proxy servlet a rôzne utilitky pre vývoj aplikácii s použitím GWT. Jednotlivé projekty boli podporené aj ukážkami aplikácii a čerešničkou na torte bola určite prezentácia projektu Synapso: interaktívneho web content management systému, ktorý je vyvinutý s použitím GWT.

V závere ešte v krátkosti Igor Mihálik ukázal layoutovacie a animačné možnosti nového layout systému v GWT 2.0 v podobe gwt-carousel widgetu.

Nasledovala neformálna diskusia pri dobrom pivku a občerstvení. Ešte raz vďaka chalanom za zorganizovanie stretnutia, výborné pohostenie a pevne veríme, že toto stretnutie dalo pevný základ pre ďalšiu pravidelnejšiu spoluprácu Google komunity na Slovensku.

Záverečné spoločné foto