Na začiatku tvorby novej verzie webovej aplikácie ITMS2014+, stála pred nami otázka výberu vhodného klientkého frameworku. Projekt z pohľadu predchádzajúcich skúseností sa netvoril na zelenej lúke (jednalo sa už o tretiu generáciu softvéru), existovali teda už pomerne jasné predstavy o požiadavkách a analyticko-programátorskom tíme, ktorý bude tento softvér realizovať.
Základné východiskové informácie, ktoré sme brali do úvahy pri výbere klientského frameworku:
V našej profesnej kariére sme realizovali už viacero projektov a vrámci ich realizácie sme použili rôzne klientské frameworky, ako napr. Java Servlet, JSP, JSF ICEfaces, JSF PrimeFaces, Apache wicket, Scala Lift, GWT, React JS. Nedá sa generálne povedať, ktorý framework je ten najlepší, ale je potrebné detailne zvážiť jednotlivé výhody a nevýhody každého z nich vzhľadom na kladené požiadavky.
V prípade projektu ITMS2014+ tomu nebolo inak, aj keď sa musím priznať, že favorita sme mali jasného pomerne skoro. Kľúcové požiadavky, ktoré rozhodli o výbere boli hlavne:
A víťazom sa stáva framework [Apache Wicket] (https://wicket.apache.org/).
Apache Wicket je open source, komponentovo orientovaný webový framework. Wicket je obzvlášť vhodný na komplikované webové aplikácie s množstvom ajaxových prvkov a zložitých formulárov so zložitou validačnou logikou a interakciami medzi jednotlivými formulárovými poľami.
Vo Wickete na rozdiel od väčšiny iných webových frameworkov sa logika UI vrstvy píše v Jave, HTML kód ostáva čistý, nie je znečistený množstvom frameworku špecifických tagov a direktív. To výrazne zlepšuje znovupoužiteľnosť a refaktorovateľnosť komponent (úplne opačný prípad je napr. JSF, alebo JSP kde veľa logiky leakuje do HTML). Výhodou Wicketu oproti JSF/JSP je aj úplná voľnosť pri navrhovaní používateľského rozhrania, pretože Wicket komponenty sú úplne modifikovateľné a štýlovateľné. JSP a JSF komponenty sú naproti tomu „preddefinované“, často sa dá zmeniť iba základný vzhľad komponentov, ako farba a pobobne. Výsledkom je grafický dizajn aplikácie, ktorý je prakticky nadefinovaný dodávateľom JSP taglibov, resp. JSF komponent.
Wicket je vhodný na zložité administračné rozhrania aj kvôli jednoduchému vytváraniu znovupoužiteľných komponent. Napr. stačí raz spraviť komponentu na tabuľkové zobrazenie dát so stránkovaním a na všetkých ďalších obrazovkách iba použiť túto komponentu bez akéhokoľvek copy-pastovania.
Wicket je jasnou voľbou rôznych bankových a poisťovacích inštitúcií aj kvôli out-of-the-box bezpečnosti. Všetky akcie vo Wickete sú viazané k používateľovej session, automaticky sa escapujú formuláre a používateľský vstup, veľmi jednoducho sa integruje s rôznymi security frameworkami, ako Apache Shiro alebo Spring Security. Podpora Ajaxu je vo Wickete samozrejmosťou, a na rozdiel od MVC webových frameworkov sú ajaxové URL linky úplne bezpečné a „neuhádnuteľné“ prípadným útočníkom.
Na základe našich praktických skúseností môžeme povedať, že Wicket je cca 5x produktívnejší ako JSP a cca 3x produktívnejší ako JSF. Z pohľadu rýchlosti zobrazovania je Wicket jeden z najvýkonnejších frameworkov vôbec (zdroj). Z pohľadu stanovených požiadaviek bol preto Wicket jasná voľba.