Web frameworks v praxi Tomáš Krátký

Podobné dokumenty
Web frameworks v praxi

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

2012 ET NETERA a.s. Wicket přehled technologie Martin Strejc

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Systémová administrace portálu Liferay

PA165: Úvod do Java EE. Petr Adámek

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

INFORMAČNÍ SYSTÉMY NA WEBU

Komponentově orientované webové frameworky. Jiří Stránský twitter.com/jistr

Web frameworks v praxi. František Řezáč

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

Formy komunikace s knihovnami

Co by měl umět dobrý vývojář. Petr Adámek Home Credit International a.s.

Web Frameworks Java Server Faces. Petr Aubrecht CA

Drupal. Svobodný redakční systém. duben 2007 Jakub Suchý 1

Drupal konference sobota,

Platformy / technologie. Jaroslav Žáček

Historie, současnost a budoucnost ASP.NET

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

Spring framework 2.0. Roman Pichlík CZJUG

SPECIFIKACE PŘEDMĚTU PLNĚNÍ

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Zpětná vazba od čtenářů 11 Dotazy 11 Zdrojové kódy ke knize 11 Errata 11 Typografické konvence použité v knize 12

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

Architektury informačních systémů

Architektury informačních systémů

EMBARCADERO TECHNOLOGIES. Jak na BYOD chytře? Možnosti zapojování různých mobilních zařízení do podnikových informačních systémů.

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

InternetovéTechnologie

Úvod do Web Services

Richtext editory. Filip Dvořák

Architektura aplikace

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP

People Manager Komplexní řízení zdrojů a projektů jednoduše

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče.

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Část IV - Bezpečnost 21. Kapitola 19 Bezpečnostní model ASP.NET 23

Počítačová Podpora Studia. Přednáška 5 Úvod do html a některých souvisejících IT. Web jako platforma pro vývoj aplikací.

Novinky v ASP.NET MVC6

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Část 1 Moderní JavaScript

Olga Rudikova 2. ročník APIN

Firemní profil FG Forrest

Redakční systém Joomla!

Přehled technologií mapových serverů ve státní správě

Domino 10 nové komponenty a související témata (node.js, ES )

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

Analýza a návrh webových aplikací I N G. M A R T I N M O L H A N E C, C S C. Y 1 3 A N W

Web. Získání informace z internetu Grafické zobrazení dat a jejich struktura Rozšíření funkcí pomocí serveru Rozšíření funkcí pomocí prohlížeče

Databáze EMS podacích lístků

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

KIV/PIA 2013 Jan Tichava

Ruby on Rails. VŠE, Jiří Hradil

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

SYLABUS IT V. Jiří Kubica. Ostrava 2011

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

Vývojařská Plzeň AngularJS

2013 IBM Corporation

Embedded Experience Ondřej Fuxa, YOUR SYSTEM spol. s r.o.

Nové přístupy tvorby web site. Doc. Ing. Zdeněk Havlíček, CSc. KIT PEF CZU - 13/11/2001

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Databázové a informační systémy

Základní pojmy spojené s webovým publikováním ~ malý slovníček pojmů~ C3231 Základy WWW publikování Radka Svobodová, Stanislav Geidl

Programovací jazyky Přehled a vývoj

Programátorské večery. Tomáš Herceg Microsoft Student Partner

Celkem odpovědí 96. Oblasti Javy Java EE % Java SE % Java ME %

CineStar Černý Most Praha

Tvorba informačních systémů

Microsoft Office 2003 Souhrnný technický dokument white paper

KIV/PIA 2012 Ing. Jan Tichava

UNIVERZITA PARDUBICE

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Stručný obsah. Část I Úvod. Část II Komponenty

Notes and Domino Social Edition 9. David Marko, TCL DigiTrade

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Server-side technologie pro webové aplikace

Platformy / technologie. Jaroslav Žáček

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU

PHP Best Practices. Please try to fit your code to 80 columns. That's decimal 80. A. Morton

O autorech 13 O odborném korektorovi 13. Poděkování 15 Úvod 17. Cílová skupina této knihy 17 Témata této knihy 17

TNPW1 Cvičení aneta.bartuskova@uhk.cz

Skriptování na straně serveru a klienta

Dobrý CMS Popis produktu a jeho rozšíření

Maturitní projekt do IVT Pavel Doleček

Internet 2 css, skriptování, dynamické prvky

Konvergence vývoje aplikací a jejich integrování

Obsah. Rozdíly mezi systémy Joomla 1.0 a Systém Joomla coby jednička online komunity...16 Shrnutí...16

Fiktivní firma. Žáci získají základní informace o přípravě a tvorbě webových stránek. Na konci prezentace je úkol, se kterým žáci samostatně pracují.

Ruby on Rails: zapomeňte na Javu

Dobrý FOTO Popis produktu a jeho rozšíření

Převod LN aplikace do xpages

Tvorba informačních systémů

ŠKODA Portal Platform

Manuál pro obsluhu Webových stránek

Transkript:

Web frameworks v praxi Tomáš Krátký tomas.kratky@profinit.cz

Stručný obsah Vzájemné seznámení Problém Definice podstatných kritérií Kandidáti Volba správného nástroje Situace na trhu práce Co si myslím já Diskuse

Vzájemné seznámení

Přednášející Zaměření na J2EE, Web aplikace (podnikové i určené pro veřejnost) na platformě Java Moje zkušenost Struts: v roce 2005 (v1.2.x) Tapestry: od roku 2005 až do současnosti (v3, v4) JSF: v současnosti (v1.1) Webwork Struts 2: experimenty v roce 2007 Spring MVC: experimenty v roce 2007 GWT (Google Web Toolkit): experimenty v roce 2007

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, Tapestry, JSF,

Problém

Jak se rozhodnout?

Podstatná kritéria Typ frameworku vs. typ aplikace Snadný vývoj Komunita spojená s projektem Budoucnost projektu (roadmap) Údržba Technické vlastnosti jiná?

Nejčastější typy web aplikací Internetové aplikace s velmi vysokou dostupností a nekonečnými požadavky na škálovatelnost Intranetové aplikace, obvykle určené pro omezenou množinu lidí, obvykle se složitější business logikou Aplikace s dlouhou životností (minimálně 5-10 let) a mnoho dalších?

Typy web frameworků Request-based frameworks Struts 1/2, Rails, Stripes, Component-based frameworks JSF, Tapestry, GWT, ASP.NET, Rich Internet Applications 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? Snaží se framework minimalizovat nepříjemná překvapení? Používáte už nějaký framework? Liší se ten nový koncepčně?

Komunita Existuje společnost zaštiťující projekt? Seam (jboss), JSF (Sun), 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í? Pokud ne, 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 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? Vytváříte novou aplikaci? Je to vývoj na zelené louce? Neztíží vám framework integraci? Nejsou vám všechny ty features na obtíž? Není framework až příliš restriktivní? nelze ovládat Javascript nelze ovládat URL

Technické vlastnosti Podpora pro AJAX Bookmarking a URL Validace Testovatelnost I18N Page decoration jiné?

Kandidáti

Struts 1.x Plusy Je tu s námi už poměrně dlouho - vyzrálý, důvěryhodný, Velké množství existujících aplikací, pro mnoho firem stále nejlákavější varianta řada pracovních příležitostí Velké množství kvalitní dokumentace, tipů, rad, Velké množství kvalitních doplňků, knihoven, Velký důraz na zpětnou kompatibilitu Minusy Vazba formulář Doménový model (ActionForms) Nelze tvořit unit testy Projekt se už pouze udržuje, větší úsilí se věnuje Struts2

Struts 2.x Plusy Velmi jednoduchá architektura, lze snadno rozšířit Navigace může být controller-based i page-based Plná podpora tag libraries pro FreeMaker a Velocity Srozumitelné pro migraci ze Struts 1 Integrace s JSF Minusy Dokumentace má stále mezery (především její organizace), při hledání pomoci (Google) často skončíte ve Struts 1 Nedokonalá reakce na chybějící properties nebo špatné OGNL výrazy

JSF Plusy Otevřená architektura, prakticky vše lze vyměnit (Facelets, Seam, Spring Web Flow, RestFaces, ) Java EE standard potenciálně mnoho nabídek k práci, velké firmy v pozadí Velké množství komponent a stále dokonalejších nástrojů (!!) Minusy Postback problémy s SEO, bookmarks a Security Některé věci nedotažené, prakticky nelze použít samostatně, přitom při integraci s jinými frameworks nekonečné, drobné a otravné problémy Vytvářet nové komponenty není tak snadné, jak by mohlo být

Tapestry Plusy Jazykem šablon je HTML (velká podpora pro rozdělení práce mezi vývojáře a web návrháře) Mezi jednotlivými verzemi výrazné změny k lepšímu Vysoká produktivita (pokud framework dobře znáte) Minusy Minimální zájem o zpětnou kompatibilitu každý rok nová verze, prakticky zpětně nekompatibilní Učící křivka, vše je tak trochu jinak Dokumentace je spíše konceptuální než praktická Málo nabídek k práci u nás i ve světě

GWT Plusy Vývojář píše Javu, framework generuje Javascript, není nutné znát temná zákoutí Javascriptu a přitom lze snadno vytvořit RIA aplikaci Spojení výhod client-server a web aplikací Velice snadno se lze naučit a použít Minusy Javascript není dobrá platforma (problémy v prohlížečích, výkonnostní problémy, bezpečnost, ) Bez podpory pro Java 5 (otázka času) Složité GWT vs. SOA (RemoteService, )

ASP.Net Plusy Populární, mnoho nabídek k práci (vynikající marketing) Vynikající nástroje pro vývojáře (Visual Studio) Mnoho standardních dobrých komponent Minusy Příliš svázané s platformou Microsoft Není jednoduché začít, relativně příkrá učící křivka Komponenty, které nejsou standardní, obvykle nejsou volně dostupné Postback problémy s SEO, bookmarks a Security

Co ostatní? Spring MVC je dobré, ale velmi podobné Struts 2, jeho popularita je spíše popularitou Spring frameworku Stripes má velmi malou komunitu a žádné knihy, ale Spring MVC i Struts 2 se od něj inspirují Grails umožňují dosáhnout vynikající produktivity, ale z mého pohledu je skoro nemožné je prodat do korporátního prostředí Flex, Wicket, PHP,?

Volba správného nástroje

Kritéria (pro připomenutí) Typ frameworku vs. typ aplikace Snadný vývoj Komunita spojená s projektem Budoucnost projektu (roadmap) Údržba Technické vlastnosti jiná?

Typ aplikace vs. frameworku Internetové aplikace s velmi vysokou dostupností a nekonečnými požadavky na škálovatelnost Request-based frameworks Intranetové aplikace, obvykle určené pro omezenou množinu lidí, obvykle se složitější business logikou Component-based frameworks Rich Internet Applications Aplikace s dlouhou životností Typ je nepodstatný, důležitá je podpora a kvalitní a dostatečně stabilní komunita

Snadný vývoj JSF, ASP.Net mají poměrně příkrou učící křivku Tapestry jsou na tom ještě hůř než JSF GWT se zdá snadný (je to jen Java) Struts 1,2 je celkem srozumitelný, zásadně nepřekvapí PHP je na tom asi nejlépe (ale jen do určité velikosti)

Komunita spojená s projektem Struts rozsáhlá komunita JSF firmy v pozadí ASP.Net firma v pozadí GWT firma v pozadí Tapestry poměrně malá komunita, dlouho spíše one-man-show

Budoucnost vs. údržba Z hlediska zpětné kompatibility je vzorem Struts, změny ale jen velmi pomalu Tapestry každý rok nová verze, bez ohledu na zpětnou kompatibilitu JSF nepovedená 1.x verze, velké změny v 2.x, kompatibilita nebude GWT je příliš mladé ASP.Net už 3. verze.net, nejsou kompatibilní, jednotlivé verze mohou existovat vedle sebe

Podpora pro Ajax Struts 1 žádná zabudovaná podpora, ale snadná integrace Struts 2 zabudováno Dojo, plugin pro GWT JSF žádná podpora, ale existují ICEFaces a Ajax4JSF Tapestry Dojo zabudováno od verze 4.1 GWT ASP.Net zabudována podpora

Bookmarking a URL Struts 1 vytváření záložek umožňuje Struts 2 má velmi dobrou podporu JSF řeší vše pomocí POST, takže záložky vytvářet nelze, ale existují RestFaces Tapestry s určitou námahou záložky podporují (IExternalPage) GWT má typický problém Ajax aplikací vše je jedno URL ASP.Net funguje podobně jako JSF (postback)

Validace Struts 1 podporují Commons Validator (což je velmi robustnířešení s podporou pro server i client side validace) Struts 2 podporují client-side validace pouze v případě, že se nadefinují pravidla u jednotlivých Actions JSF defaultně nemají client-side validace, toto řeší různé pluginy Tapestry mají velmi pěknou podporu pro validace na straně serveru i klienta GWT má dobře použitelné validace (jen klientské) ASP.Net má validace na straně serveru i klienta

Testovatelnost Struts 1 podporuje pouze StrutsTestCase (neobratné, žádné lokální unit testy) JSF, Struts 2 má pro unit testy velmi dobrou podporu Tapestry lze velmi špatně testovat (vše abstraktní) GWT má velmi dobrou podporu pro unit testy

I18N Na úrovni šablon velmi podobné ve všech frameworks Na úrovni controller tříd neexistuje žádné standardní řešení, lépe řešené v Tapestry než ve Struts či JSF Nutnost deklarovat resource bundle v JSF na každé stránce je otravné Jeden soubor či více souborů?

Page decoration Struts 1, 2 lze použít s Tiles i SiteMesh JSF není vhodné použít se SiteMesh, vynikající podpora pro dekoraci je ve Facelets GWT toto řeší pomocí Java dědičnosti (nejsou tu vlastně žádné stránky) Tapestry podporují styl založený na vytvoření komponenty, kterou použijí ostatní stránky a pouze doplní tělo (neobratné) ASP.Net podporuje mnoho stylů, ten doporučovaný je podobný jako v Tapestry, ale podpora pro MasterPage

Situace na trhu práce

Nabídka pracovních míst Struts 1 je stále velmi žádaný (prakticky tolik, co ostatní JVM frameworks dohromady) Struts 2 nabírá dech, ale velmi pomalu JSF jsou žádané, zdaleka ne jako Struts 1, ale asi je to jen otázka času Tapestry někdy získávají někdy ztrácí, velmi nestabilní GWT je příliš mladé ASP.Net v tomto ohledu kraluje

Co si myslím já?

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 Myslete stále na to, že existují různé typy aplikací s velmi rozdílnými nároky! Myslete stále na to, že žádný nástroj není univerzální! Myslete na to, že něčí názor je prostě jen názor! Volte velké hráče! Udělejte prototyp jde vám to těžko? Zahoďte framework!

Odkazy http://en.wikipedia.org/wiki/list_of_web_applicat ion_frameworks http://en.wikipedia.org/wiki/comparison_of_web _application_frameworks https://equinox.dev.java.net/ http://raibledesigns.com/rd/page/publications

Diskuse Komentáře Otázky Připomínky Upřesnění Poznámky