Web frameworks v praxi
František Řezáč
Agenda o Spoiler
o o o o o o
Představení a vymezení rozsahu Máme problém? Postup pro výběr frameworku Naši favorité Co si myslím já Diskuze
Přednášející o Fakulta aplikovaných věd ZČU (kdo se zeptá, kolik mě stál diplom, bude vyloučen z přednášky) o U vzniku 3 velkých projektů (v současnosti další v přípravě) o Nejvíce 3 roky souvislé práce na projektu (vývoj + údržba) o 7 let profesionálně ve web application vývoji, hlavně Java EE o Technologicky neutrální (ale Java rulezzz) o Tapestry, JSF, Wicket, Spring (MVC, Webflow), GWT
Vymezení hloubky o o o o o
Víte, co je framework Víte, proč jsou frameworky důležité Znáte architektonické pojmy – MVC, ORM, DAO, DI apod. Máte představu o JavaEE, hlavně servlet technologii Znáte trochu historie
Vymezení šířky o Java ekosystém (a blízké okolí) – Mnoho nových jazyků cílí na JVM – Java výojáři emigrují jen k několika alternativám
o Velké informační systémy – Malá zkušenost s marketingovými požadavky – Z pohledu „vědeckého IT“ jsou marketingoví zákazníci nezajímaví
Vaše očekávání o o o o
Co očekáváte od dnešní přednášky ? Vaše zkušenosti s webovými aplikacemi Vaše platforma (J2EE, .Net, Rails, LAMP, …) ? Vaše zkušenosti s non-web frameworks ? – Spring, Hibernate, …
o Vaše zkušenosti s web frameworks ? – Struts, JSF, Seam, Wicket, Stripes, GWT, Flex, Vaadin, ZKoss…
Máme problém?
domain
web
web services
business services
data - access O/R mapping
Database
integration
other services
Spring framework
„Naše“ typická architektura
Problém
Problém o o o o o o o o o o o o o o o o o o
Apache Tapestry Apache Wicket AppFuse Aranea Context Framework Eclipse RAP FormEngine Grails Google Web Toolkit Hamlets IceFaces ItsNat JavaServer Faces JBoss Seam Jspx-bay JVx WebUI ManyDesigns Portofino OpenLaszlo
o o o o o o o o o o o o o o o o o o
OpenXava Oracle ADF Play! Richfaces RIFE Apache Shale Apache Sling Apache Struts SmartClient Spring Stripes ThinWire Vaadin Wavemaker WebObjects WebWork ZK ztemplates
Jak vlastně vybírat? o Craig McClanahan (autor Struts, autor pozdějších servlet specifikací) – Emigrace k Rails
o James Gosling (autor Javy) – Hates JSF … with passion.
… ale technické a emoční vztahy je při výběru frameworku to NEJMENŠÍ!
Podstatná kritéria o o o o o o
Typ frameworku vs. typ aplikace Snadný vývoj Dostupnost lidí/expertů na trhu Komunita spojená s projektem Budoucnost projektu (roadmap) Technické vlastnosti
… jiná ? …
Typy web aplikací o Primárně View „internetové“ aplikace s vysokou dostupností a požadavky na škálovatelnost o Typicky View&Write „intranetové“ aplikace, obvykle určené pro omezenou množinu lidí, obvykle se složitější business logikou o Vysoce interaktivní „internetové“ aplikace o Produkty, udržované po 5 – 10 let o Legacy backend
… a další, pokud přestaneme zjednodušovat …
Typy web frameworků o Push-based frameworks (Request-based) – Struts 1/2, Rails, Stripes, …
o Pull-based frameworks (Component-based) – JSF, Tapestry, GWT, ASP.NET, ZKoss …
o RIA frameworks – Flex, OpenLaszlo, JavaFX, Microsoft Silverlight, Java Web Start, …
Snadný vývoj o o o o
Jak rychle pochopíte základní koncepty ? Jak rychle se naučíte framework používat ? Minimalizuje framework nepříjemná překvapení ? Používáte-li už nějaký framework, liší se ten nový koncepčně ?
Dostupnost lidí na trhu o o o o o
Jaká je dostupnost lidí se znalostí frameworku na trhu ? Jaká je jejich kvalita ? Jaká je jejich cena ? Jaká je dostupnost expertů pro daný framework na trhu? Jaká je jejich cena ?
Komunita o Existuje společnost zaštiťující projekt ? – Seam (jBoss), JSF (Oracle), ASP.NET (Microsoft) …
o Jak je na tom mailing list ? – příliš mnoho problémů ? – příliš málo dotazů ? – relevantní odpovědi ?
o Frekvence nových verzí ? o Využití v reálném světe ? o Existují pro framework kvalitní knihy ?
Budoucnost vs. údržba o Jak ambiciózní jsou cíle projektu ? o Co zpětná kompatibilita ? – Je jedním z cílů vývojářů frameworku ? – Jsou jednotlivé verze zpětně kompatibilní ? – Existují jasné a přesné návody pro upgrade ?
o Jak snadno lze framework testovat ? o Udrží se framework minimálně několik let ?
Technické vlastnosti Přecházíte-li z jiného frameworku o Má nový vše, co jste ocenili v původním ? o Nebudou vám důležité věci chybět ?
Technické vlastnosti Vytváříte-li novou aplikaci o Je to vývoj na zelené louce ? o Musíte se integrovat do existujícího prostředí ? o Neklade tato integrace na vás nějaká omezení ? o Neztíží vám framework integraci ? o Nejsou vám všechny ty „features“ na obtíž ? o Není framework až příliš restriktivní ? – nelze ovládat Javascript, URL, …
Technické vlastnosti o o o o o o o o o o
Podpora pro AJAX Integrace Javascriptu Bookmarking a URL Validace I18N View language Page decoration Testovatelnost Kvalita, chybovost Výkonnost
… jiné …
Srovnání o Matt Raible
http://bit.ly/jvm-frameworks-matrix
Srovnání
Důležité jsou VÁHY u jednotlivých kritérií !
Naši favorité
JSF Výhody o JEE standard o Široká podpora, stabilita o Řada komponent, nástrojů, rozšíření Nevýhody o JEE standard o Performance, komplexnost o Dokumentace, komunita
Wicket Výhody o Není tak složitý, jako JSF o Dobrá podpora Ajax o Dobrá skinovatelnost, příjemný přechod pro Java programátory Nevýhody o Není tak složitý, jako JSF o Výkon o Spíše knihovna komponent, než framework
Tapestry Výhody o Live Class reloading o Vývoj klade velký důraz na výkonnost a stabilitu o Vynikající reporting výjimek Nevýhody o Žádné nabídky práce o Jako JS knihovnu natvrdo Prototype o One-man-show
GWT Výhody o Píšeme Javu produkuje se optimalizovaný JS o Snadno se učí a vyvíjí se standardními nástroji o Velmi aktivní komunita Nevýhody o Velice obtížně testovatelné o Pomalá kompilace o Spíše knihovna komponent než framework
Spring MVC Výhody o Jednoduchá konfigurace o Bezproblémová integrace s mnoha view technologiemi (JSP, FreeMaker, Excel, …) o Vynikající podpora pro REST Nevýhody o Nemá zabudovaný instant reload (JRebel) o Nemá otevřený vývojový proces (SpringSource) o AJAX vyžaduje knihovnu třetí strany
Co si myslím já …
Hlavní hráči
Roztříštěnost Java
Budoucnost (2012++) o Z minulého roku: …desktop (Adobe Air, Titanium, …) o Totální zaměření na mobilní platformy – Nové technologie – Social je už standard
o HTML 5 – Hlavně offline
o Integrace
Nevěřte reklamním trikům o Buďte opatrní při četbě (ne)kritických blogů o Věřte vývojářům, nejlépe těm zkušeným, kteří framework používají v produkci o Všechno si sami vyzkoušejte o Pokud váháte, zkuste použít více než jeden framework
Vybírejte s rozvahou o Existují různé typy aplikací s velmi rozdílnými nároky! o Žádný nástroj není univerzální ! o Něčí názor je … prostě jen názor !
o Volte „velké hráče“ ! o Udělejte prototyp … jde vám to těžko ? Zahoďte framework !
www.profinit.eu
Děkuji za pozornost