Web frameworks v praxi Tomáš Krátký
[email protected]
http://www.profinit.eu/cz/podpora-univerzit/univerzitni-vyuka
O čem to dnes určitě nebude Uţ
víte, co je framework Uţ víte, proč jsou frameworks důleţité Znáte trochu z jejich historie Víte, co je Pipes&Filters, MVC, …
O čem to dnes bude Seznámení Máme problém ? Postup pro výběr frameworku Naši favorité Co si myslím já Diskuse
Seznámení
Přednášející Zaměření na J2EE, Web aplikace (vnitropodnikové i určené pro veřejnost) na platformě Java Moje zkušenosti
Struts:
od roku 2005 (v1.2.x) Tapestry: od roku 2005 (v3, v4, v5) JSF: od roku 2007 (v1.1, v1.2) Webwork Struts 2: experimenty v roce 2007 Spring MVC: experimenty v roce 2007 GWT (Google Web Toolkit): od roku 2007
Čerstvá zkušenost Projekt pro velký evropský finanční dům Existující rozsáhlá aplikace (tisíce stránek) typu internetového bankovnictví Mnoho klientů, nároky na výkon, dostupnost, … Zastaralé technologie, sloţitý vývoj, …
„Chceme to přepracovat !“ Do čeho ? A jak ?
Posluchači 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, …
Vaše zkušenosti s web frameworks ? Struts,
JSF, Seam, Wicket, Stripes, GWT, Flex, …
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
Jak se rozhodnout ?
Podstatná kritéria 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í Primárně View „internetové“ aplikace s vysokou dostupností a poţadavky na škálovatelnost Typicky View&Write „intranetové“ aplikace, obvykle určené pro omezenou mnoţinu lidí, obvykle se sloţitější business logikou Vysoce interaktivní „internetové“ aplikace Produkty, udrţované po 5 – 10 let Legacy backend
… a další, pokud přestaneme zjednodušovat …
Typy web frameworků
Push-based frameworks (Request-based) Struts
Pull-based frameworks (Component-based) JSF,
1/2, Rails, Stripes, …
Tapestry, GWT, ASP.NET, …
RIA frameworks Flex,
OpenLaszlo, JavaFX, Microsoft Silverlight, Java Web Start, …
Snadný vývoj 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 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
Existuje společnost zaštiťující projekt ? Seam
(jBoss), JSF (Oracle), ASP.NET (Microsoft) …
Jak je na tom mailing list ? příliš
mnoho problémů ? příliš málo dotazů ? relevantní odpovědi ?
Frekvence nových verzí ? Vyuţití v reálném světe ? Existují pro framework kvalitní knihy ?
Budoucnost vs. údržba Jak ambiciózní jsou cíle projektu ? 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 ?
Jak snadno lze framework testovat ? Udrţí se framework minimálně několik let ?
Technické vlastnosti Přecházíte-li z jiného frameworku Má nový vše, co jste ocenili v původním ? Nebudou vám důleţité věci chybět ?
Technické vlastnosti Vytváříte-li novou aplikaci Je to vývoj na zelené louce ? Musíte se integrovat do existujícího prostředí ? Neklade tato integrace na vás nějaká omezení ? Neztíţí vám framework integraci ? Nejsou vám všechny ty „features“ na obtíţ ? Není framework aţ příliš restriktivní ?
nelze
ovládat Javascript, URL, …
Technické vlastnosti
Podpora pro AJAX Integrace Javascriptu Bookmarking a URL Validace I18N View language Page decoration Testovatelnost Kvalita, chybovost Výkonnost
… jiné …
Srovnání
http://bit.ly/jvm-frameworks-matrix
Srovnání
Důležité jsou VÁHY u jednotlivých kritérií !
Výkonnost?
Naši favorité
JSF Výhody JEE standard Široká podpora, stabilita Řada komponent, nástrojů, rozšíření Nevýhody JEE standard Performance, komplexnost Dokumentace, komunita
Spring MVC Výhody Jednoduchá konfigurace Bezproblémová integrace s mnoha view technologiemi (JSP, FreeMaker, Excel, …) Vynikající podpora pro REST Nevýhody Nemá zabudovaný instant reload (JRebel) Nemá otevřený vývojový proces (SpringSource) AJAX vyţaduje knihovnu třetí strany
GWT Výhody Píšeme Javu produkuje se optimalizovaný JS Snadno se učí a vyvíjí se standardními nástroji Velmi aktivní komunita Nevýhody Velice obtíţně testovatelné Pomalá kompilace Spíše knihovna komponent neţ framework
Tapestry Výhody Live Class reloading Vývoj klade velký důraz na výkonnost a stabilitu Vynikající reporting výjimek Nevýhody Ţádné nabídky práce Jako JS knihovnu natvrdo Prototype Anotace vs. Konvence
Grails Výhody Jednoduchý přechod pro Java programátory Groovy Pluginy pro celou řadu typů aplikací Nevýhody Studijní matriály cílené na Java vývojáře Stack traces Znalost frameworků, na kterých je vše postaveno je opravdu velmi uţitečná
Co si myslím já …
Hlavní hráči
Java oriented
Budoucnost (2011++)
Webové technologie jako základní platforma mobilní
telefony, dotykové obrazovky, iPad, iPod, … televizory, … desktop (Adobe Air, Titanium, …)
Konec IE6 (snad …) HTML5 (ale s problémy) Důraz na AJAX Méně inovací, více stabilizace
Nevěřte reklamním trikům Buďte opatrní při četbě (ne)kritických blogů Věřte vývojářům, nejlépe těm zkušeným, kteří framework pouţívají v produkci Všechno si sami vyzkoušejte Pokud váháte, zkuste pouţít více neţ jeden framework
Vybírejte s rozvahou Existují různé typy aplikací s velmi rozdílnými nároky ! Vţdy je o aplikaci ! Ţádný nástroj není univerzální ! Něčí názor je
… prostě jen názor !
Volte „velké hráče“ ! Udělejte prototyp
… jde vám to těţko ? Zahoďte framework !
Děkuji za pozornost