Richard Šerý
13.5.2013

Třetí RADAR: HitHit a lightning talks

25. dubna 2013 proběhl další RADAR AspectWorks, v pořadí už třetí, tentokrát zaměřený hlavně na frontendové technologie. Úvod ale patřil projektu HitHit, který jsme nedávno spustili a který se slibně rozjíždí.

HitHit

hithit2

Tomáš nás seznámil s projektem HitHit. Jde o crowd fundingovou platformu, kterou v současnosti využívají hlavně umělci, nedávno se však rozšířila i o projekty ze školství. Server HitHit již úspěšně vybral přes milion Kč a rozšířil svoji působnost z ČR na Slovensko. Tomáš mluvil zejména o samotném vývoji platformy – představil použité technologie (Spring, Hibernate, Tomcat, Quartz Scheduler, JQuery, Amazon EC2 a S3) a služby, se kterými platforma může spolupracovat (PayU, Paypal, Braintree, Youtube, Google Maps), vysvětlil jak HitHit funguje a probral také úspěchy a neúspěchy, se kterými jsme se při vývoji setkali. Martin K. se pak v druhé přednášce večera zaměřil na platformu Amazon, na které HitHit běží. Amazon nabízí desítky služeb, Martin popsal ty, které jsme použili, jejich výhody a nevýhody:

  • EC2 (server) – drahý ale flexibilní
  • S3 (file storage) – levný, ale jen pro statické soubory
  • Cloudfront (content delivery network)
  • ELB (load ballancer)
  • Route53 (DNS)
  • CloudWatch (monitoring)
  • SES (e-mail server)
  • SNS (notification server)

Celkový dojem: Amazon cloud skvěle funguje, luxusně škáluje a je velmi drahý. Pokud však člověk přesně ví co od něj chce, vyplatí se.

Lightning talks

Novinkou třetího RADARu byly Lightning talks. Vystoupilo šest řečníků, každý měl sedm minut na svoje téma. Ačkoli mnozí z nás stále ještě trpí nešvarem „předčítání slajdů“, zlepšujeme se – lightning talks byly svižné a nenudily.

Java Server Faces 2

Framework JSF2, který představil Luboš, je komponentní framework umožňující velmi rychlý vývoj webových aplikací. V našich projektech ho doplňujeme projektem PrimeFaces, poskytujícím cca 130 UI komponent a 40 skinů. JSF2 se snadno integruje se Springem. Nevýhody: session heavy, úzká vazba s JavaScriptem, vzdálený od technologie („magic driven“), přímá interakce může vést k zmatenému kódu.

GWT

Jakub mluvil o frameworku GWT, na kterém právě vyvíjí aplikaci pro mobilní platformy. GWT umožňuje Java vývojářům vyvíjet browserové aplikace (Java se kompiluje do JavaScriptu). V kombinaci s builderem PhoneGap nám GWT umožňuje vytvářet jednoduché aplikace pro mobilní telefony a tablety. Mezi nevýhody patří pomalý vývoj frontendové části aplikace a občas dost nečekané chování.

Vaadin

Martin Š. nám představil framework Vaadin. Vaadin nabízí dva programovací modely, kde jedním z nich je GWT na klientské straně, druhý je pak komponentní přístup na straně serveru. Takže GWT se může, ale nemusí používat, podle toho co konkrétnímu programátorovi vyhovuje. Kompomenty se skládají Swing-like UI syntaxí. Sofistikované UI komponenty urychlují vývoj aplikací, Vaadin podporuje také robustnější programování na straně serveru. Má add-on architekturu a přímou podporu pro mobilní zařízení (TouchKit). Mezi nevýhody patří hlavně strmá křivka učení (Martin ovšem tvrdí že je to výhoda :-), přebírá také většinu nevýhod GWT.

Wicket

Další komponentní framework, Wicket, přináší dvě podstatné výhody: type-safe session a čisté HTML šablony (takže přechod od prototypu k funkční aplikaci je plynulý). Luboš, který má s frameworkem Wicket svoje zkušenosti, za hlavní nevýhodu označil nutnost velmi přísné disciplíny programátora – kód se podobá Swingu, takže se rychle mění ve špagetoidní propletenec, ve kterém se nikdo nevyzná.

DOJO Toolkit

Alternativa k JQuery. Čistě naprogramovaný javascriptový toolkit nabízí spoustu UI komponent a některé zajímavé možnosti, jako je např. automatická správa závislostí, vícenásobná dědičnost nebo deklarativní programování. Nevýhodou je malá komunita a „ukecanější“ kód, než má JQuery.

OpenXava

Tajemný malý framework, který nám představil Roman, nezapře španělský původ. Je jiný. Umožňuje velice rychle, vlastně jen pomocí anotací, vyvinout webové CRUD rozhraní nad databází. A nic víc. Největší výhoda tohoto frameworku, jeho minimalismus, je zároveň i jeho největší slabinou.

Vrstvy nebo komponenty?

Komponentové frameworky jsou populárnější, neboť umožňují velice rychle vytvořit funkční aplikaci, což vypadá velmi dobře při prezentaci. Nevýhodou je, že jde často o „černou magii“ – ekosystém komponent většinou hodně abstrahuje od technologie a má spoustu skrytých vztahů a závislostí, což je v praxi dost riskantní. mvc Request based frameworks mají výhodu konzistence a větší flexibility – jednotlivé vrstvy mají jasně definovaná rozhraní, takže lze kteroukoli vrstvu vyměnit či upravit. Nevýhodou je, že tyto frameworky jsou méně populární a tedy i méně dotažené, takže vývoj jednoduchých aplikací trvá podstatně déle.

Vývoj zevnitř nebo zvenčí?

Vývoj „zvenčí dovnitř“ zkoumá potřeby uživatele a buduje systém, který bude na tyto potřeby reagovat. Naopak přístup „zevnitř ven“ vychází ze stávajících vlastností systému, které uživatelům zpřístupní tak jak jsou. Vývoj „zevnitř ven“ je jednodušší, protože můžeme vyvíjet plně v souladu s technologií a neřešíme potřeby uživatele. Pro takový typ vývoje fungují dobře zejména komponentové frameworky (JSF2, Vaadin), které umožňují rychlý a efektivní vývoj. Vývoj „zvenku dovnitř“ bere ohled na potřeby uživatele, zejména použitelnost, čímž se vývoj dosti komplikuje. U komponentových frameworků zpravidla rychle narazíme na jejich meze, zvláště co se týče konzistence a konfigurovatelnosti. Dobrých výsledků lze v takovém případě dosáhnout spíš pomocí „vrstvených“ frameworků (např. Spring MVC + JSP), je však třeba počítat s podstatně pracnějším vývojem.

Framework nebo dev stack?

DSC_0106

V situaci, kdy nabídka frameworků je velká, ale neuspokojivá, se nabízí otázka, zda nevzít jednotlivé samostatné technologie a nesestavit nějaký devstack. Na některých projektech používáme třeba Struts 2 + FreeMarker + JQuery UI, případně Spring MVC + JSP + Velocity + JQuery UI.

Závěr

Na závěr jsme udělali hlasování na téma „v čem byste chtěli vyvíjet front-end příští aplikace“. Přesvědčivě navrch měly dvě varianty:

Nakonec jsme však nebyli žádnou variantou úplně nadšeni a shodli jsme se, že zatímco na backendu je práce víceméně hotová, frontendové frameworky mají před sebou ještě velmi dlouhou cestu. A co vy, jaký byste použili frontendový framework? Tapestry? Play? Grails? Nebo něco nového, na co jsme zatím nepřišli?

Vaše emailová adresa nebude zveřejněna

Komentáře

Děkujeme za váš komentář
Další
  • Naprostý souhlas. Backend je jasný, ale front-end drhne. Asi záleží projekt od projektu. Na "klikačku" v intranetu může být nejlepší řešení Vaadin. Na web a cokoli více customizovaného Spring Web MVC + JSP + JQuery. Jenže jak na začátku projektu odhadnout co z toho použít?

  • A tak zase u některých projektů je to zjevné třeba už z požadavků na UI. V kombinaci Spring Web MVC + JSP + JQuery je hodně slabým článkem JSP, tady by stálo za to něco vymyslet. Hodně se mi líbí Freemarker, ale ani ten není zdaleka ideální.

  • To jo. SpringSource zase v poslední době místo JSP začíná prosazovat Thymeleaf, ale to má také své nevýhody. Prostě s UI v Javě to je komplikované :)

  • Anonym

    Zvážil by som použitie kombinácie Spring MVC + HTML + Angular JS, hlavne pre weby, kde je potrebné pohrať sa s výsledným HTML kódom ale zároveň sa vyžaduje istá interaktivita.

  • Díval jsem se na Thymeleaf a zajímaly by mě ty nevýhody - zatím při pohledu "z vlaku" se mi nezdá, že by z klasických šablon šlo vytřískat víc, ale zatím jsem to moc nezkoušel. Co se týče AngularJS, to u nás asi není průchozí, protože máme hodně Javistů a málo JavaScriptistů, takže toho cpeme co nejvíc na stranu serveru. Dávat tam client side MVC framework by bylo neefektivní, ačkoli chápu jaké to má výhody.