Der GWT oder JSF Wahl-O-Mat Die Session stellt ein bereits mehrfach erprobtes Auswahlinstrument vor, mit dem man die prominenteste aller Short Lists von Webframeworks - JSF und GWT - für die eigenen Anforderungen qualifiziert entscheiden kann. Umgekehrt kann man das Instrument auch benutzen, um eine gute Begründung zu finden, falls man im Grunde seines Herzens die Entscheidung schon getroffen hat. Die Session stellt ein bereits mehrfach erprobtes Auswahlinstrument vor, mit dem man die prominenteste aller Short Lists von Webframeworks - JSF und GWT - für die eigenen Anforderungen qualifiziert entscheiden kann. Umgekehrt kann man das Instrument auch benutzen, um eine gute Begründung zu finden, falls man im Grunde seines Herzens die Entscheidung schon getroffen hat. Die Session stellt ein bereits mehrfach erprobtes Auswahlinstrument vor, mit dem man die prominenteste aller Short Lists von Webframeworks - JSF und GWT - für die eigenen Anforderungen qualifiziert entscheiden kann. Umgekehrt kann man das Instrument auch benutzen, um eine gute Begründung zu finden, falls man im Grunde seines Herzens die Entscheidung schon getroffen hat. Die Session stellt ein bereits mehrfach erprobtes Auswahlinstrument vor, mit dem man die prominenteste aller Short Lists von Webframeworks - JSF und GWT - für die eigenen Anforderungen qualifiziert entscheiden kann. Umgekehrt kann man das Instrument auch benutzen, um eine gute Begründung zu finden, falls man im Grunde seines Herzens die Entscheidung schon getroffen hat. Die Session stellt ein bereits mehrfach erprobtes Auswahlinstrument vor, mit dem man die prominenteste aller Short Lists von Webframeworks - JSF und GWT - für die eigenen Anforderungen qualifiziert entscheiden kann. Umgekehrt kann man das Instrument auch benutzen, um eine gute Begründung zu finden, falls man im Grunde seines Herzens die Entscheidung schon getroffen hat. Die Session stellt ein bereits mehrfach erprobtes Auswahlinstrument vor, mit dem man die prominenteste aller Short Lists von Webframeworks - JSF und GWT - für die eigenen Anforderungen qualifiziert entscheiden kann. Umgekehrt kann man das Instrument auch benutzen, um eine gute Begründung zu finden, falls man im Grunde seines Herzens die Entscheidung schon getroffen hat. Die Session stellt ein bereits mehrfach erprobtes Auswahlinstrument vor, mit dem man die prominenteste aller Short Lists von Webframeworks - JSF und GWT - für die eigenen Anforderungen qualifiziert entscheiden kann. Umgekehrt kann man das Instrument auch benutzen, um eine gute Begründung zu finden, falls man im Grunde seines Herzens die Entscheidung schon getroffen hat. Die Session stellt ein bereits mehrfach erprobtes Auswahlinstrument vor, mit dem man die prominenteste aller Short Lists von Webframeworks - JSF und GWT - für die eigenen Anforderungen qualifiziert entscheiden kann. Umgekehrt kann man das Instrument auch benutzen, um eine gute Begründung zu finden, falls man im Grunde seines Herzens die Entscheidung schon getroffen hat. About JSF-Geek Thomas Asel pgt technology scouting GmbH GWT-Nerd Papick G. Taboada Orientation in Objects GmbH http://www.cartoonjournal.de JSF, GWT? Fear, Uncertainty and Doubt GWT ist... kein Standard. JSF ist... doch langsam! State-Saving, erster Aufruf, Server Ressourcenverbrauch! GWT ist... nur ein JS Toolkit. JSF ist... ein 7 (8?) - Phasiges (Kopf) Monster (Drache)... GWT ist... irgendwie doch gar nicht Java, oder? oder? JSF ist... • • problematisch wenn man mehrere Bibliotheken „mischen“ will GWT ist... doch Swing-Like, und Swing ist doch tot. JSF ist... doch Swing auf dem Server! Swing ist doch... Google ist böse! Aber hallo. Oracle auch. 20:45 - 21:45 was bisher geschah Erstellung eines Bewertungskatalogs für die Analyse eines geeigneten Webframeworks ? Was vergleichen wir?!? verwendetes CSS? erzeugtes HTML? Aussehen? ? Dokumentation? API? Was vergleichen wir?!? 2.322 2.321 And the winner is?!? Architekturvergleich Prototypisierung ist gut Aber, Prototyp mit Produktionscharakter?!? Produkt oder Projekt? Unsere Reise GWT Spring, … JSF, Eclipse RCP Swing, Struts, … Java EE Java RIA Die Magie findet im Client/ Browser statt. JS als De-facto oder QuasiStandard? RIA == JS Entwicklung? Mehr RIA, mehr JS, weniger Java? Fear browsers* with all of mind, body and spirit When in danger, when in doubt, run in circles cry and shout... *DOM HTML5 canvas video Chrome Firefox Safari Opera Vic Gundotra Google IO Keynote geolocation appcache database workers HTML 5 here and now Wahl-O-Mat? Fail fast, fail early Politische Kriterien Architektur Laufzeitumgebung Programmiermodell Software-Engineering Produktivität Notwendige Skills UI Komponenten Politische Kriterien Architektur Laufzeitumgebung Programmiermodell Software-Engineering Produktivität Notwendige Skills UI Komponenten http://de.wikipedia.org/wiki/ Proprietär • Juristisch „urheberrechtlich geschützt“ • IT: Dinge, die nicht allgemein anerkannten Standards entsprechen („hauseigene Entwicklungen“) • Freie-Software-Bewegung: alles was nicht frei (Lizenztechnisch) und Quelloffen ist. http://de.wikipedia.org/wiki/ Standard • De-facto- oder Quasi-Standards • Industriestandard • Herstellerspezifische Standards • Offener Standard Wo ist JSF Standard? Industriestandard • Java EE ist ein De-facto oder Quasi-Standard in der Entwicklung von unternehmenskritischen Anwendungen Standard • JSF Spezifikation ist Teil der Java EE Spezifikation WEB Standards RIAs Java EE Standards klassische dynamische Webanwend ungen There is a kind of magic GWT & Standards cloud HTML5 HTML4 IE6 IE9 IE10 JS Support Websphere 5... 6... 7... Mobile Zukunftsicherheit Gewährleistung Herstellerunabhängigkeit? Herstellersupport gibts nicht. Sencha (GXT) Google GWT Isomorphic Software (Smart GWT) JBoss (RichFaces) Prime Technology (PrimeFaces) Blau oder Rot? JSF Icesoft Technologies (IceFaces) Politische Kriterien Architektur Laufzeitumgebung Programmiermodell Software-Engineering Produktivität Notwendige Skills UI Komponenten Server Browser e ve n t espo r l m t h l l fu nse e ve n t espo r l m t h l l u f nse e ve n t esp full html r onse klassische Webanwendungen Server Browser first reques t espo r l m t h l l u f nse event event event data reque st data event data reque st data Ajax architectural shift http://breganzane.com/blog/snfl.php (ifying) Ajax Webapps http://breganzane.com/blog/snfl.php (ifying) Ajax Webapps Architektur Evolution? • Reduzierung der Latenz • Reduzierung des Bandbreitenbedarfs • Reduzierung Ressourcenverbrauch Serverseitig • Verteilung der Last auf Clients • Teil eines Ganzen? Single-PagePrinzip GWT Statische Resourcen Servlet, HttpRequest (JSON, XML) JSF Navigation Integration? Einbettung in Seite schwierig JSF Runtime Politische Kriterien Architektur Laufzeitumgebung Programmiermodell Software-Engineering Produktivität Notwendige Skills UI Komponenten weder JSF noch GWT machen Aussage zu BackendTechnologien http://download.oracle.com/javaee/5/tutorial/doc/bnabo.html Nur ein Web-Container In der Entwicklung aber... ist es bei GWT angenehmer das Backend im mitgelieferten Jetty starten zu können. Daher sind Spring-Backends sehr beliebt. weblogic jboss websphere glassfish JSF & die „Fullstack“ Falle Politische Kriterien Architektur Laufzeitumgebung Programmiermodell Software-Engineering Produktivität Notwendige Skills UI Komponenten Data-Binding/ Validierung Request-Response Modell JSF macht Vorgaben Navigation Konzepte aus Rich-Client-Entwicklung übernehmen Vorgaben müssen erst definiert werden GWT eher weniger Womit will ich entwickeln? Facelets (XML) HTML CSS CSS JavaScript GWT Java UI Binder (XML) Technologiebrüche werden vermieden JSF HTML JavaScript (für RIA) Java Technologiebruch gehört zum Programmiermodell Hier wäre die Einführung und GWT und JSF angebracht Politische Kriterien Architektur Laufzeitumgebung Programmiermodell Software-Engineering Produktivität Notwendige Skills UI Komponenten Webtechnologien & Software-Engineering ?!? Lessons learned aus SE & Java Zu aufwendig? Unit Tests, Testabdeckung, CI OhneTooling geht nix Refactoring, Enwurfsmuster, ... Checkstyle, Findbugs, PMD Fail early? IDE, Code-Completion, Starke Typisierung, Debugging Programmiermodell (wdh) Facelets (XML) HTML CSS CSS JavaScript GWT Java UI Binder (XML) Technologiebrüche werden vermieden JSF HTML JavaScript (für RIA) Java Technologiebruch gehört zum Programmiermodell Hier wäre eine Einführung in GWT und JSF angebracht Programmiermodell und Software-Engineering? Facelets (XML) Java GWT JSF HTML Java Programmiermodell und Software-Engineering? Technologiebrüche machen es schwieriger Java GWT Facelets (XML) JSF HTML Java Heimspiel... Politische Kriterien Architektur Laufzeitumgebung Programmiermodell Software-Engineering Produktivität Notwendige Skills UI Komponenten GWT <1s JSF 1s bis 3m +backend Deployment Turnaround Sonstiges... GWT schnelleres, umkompliziertes debugging bessere Composite Komponentenbildung (Typisierung möglich) JSF Rollentrennung Designer/ Java Entwickler besser umsetzbar Breite Toolingunterstützung über mehrere IDEs Webentwicklung ist ein Hürdenlauf über Technologiebrüche Fachanwendung Fachanwendungsframework Generisches Webframework Produktivitätsgewinn durch Spezialisierung Politische Kriterien Architektur Laufzeitumgebung Programmiermodell Software-Engineering Produktivität Notwendige Skills UI Komponenten Teambedingt Rich Client Frameworks umfangreicher komplexer ungewohnt Webapp Frameworks Lernkurve aus der Erfahrung Know-How starke Weiterentwicklung, wachsende Themenbereiche Online Dokumentation Wissen in Blogs GWT wenige Schulungsanbieter Bücher grundsätzlich Veraltet Knappheit im Arbeitsmarkt Beispiele & Javadocs Wissen in Blogs Stabil durch lange Releasezyklen JSF theoretisch Arbeitskräfte am Markt… gute Bücher vorhanden viele Schulungsanbieter (Technologie) Dokumentation, Javadocs, Beispiele abhängig von der Komponentenbibliothek Politische Kriterien Architektur Laufzeitumgebung Programmiermodell Software-Engineering Produktivität Notwendige Skills UI Komponenten UI Komponenten • Komponentenvergleich ist eine Momentaufnahme, versionsabhängig • Keine sinnvolle Metrik für den Vergleich von Checkboxen GWT bietet sehr wenig… • GWT Komponenten vergleichbar mit JSF RI Komponenten • GWT Komponentenbibliothek sehr schlicht • Existierende (3rd Party) Komponentenbibliotheken erzeugen mehr Probleme als sie lösen … dafür bietet GWT • Einfache UI Komponenten (HTML Set) • Tab-Panels, Accordeon • Datenhaltungskomponenten (Cell-Widgets) JSF Komponentenbibliotheken • Haben langsam aber sicher die JSF 2.0 Spezifikation erreicht • Bieten umfangreiche Komponenten • Eigenes Wahl-O-Mat notwendig... UI Komponenten Fazit? • Bei GWT baut man selber • bei JSF nutzt man 3rd Party Bibliotheken Und jetzt? K.O. Kriterium gefunden? Wahl treffen. Mehr von OIO zum Thema... Schulung: Einführung in GWT http://www.oio.de/google-web-toolkit-schulung.htm Schulung: JavaServer Faces http://www.oio.de/java-server-faces.htm Artikel: Überblick GWT - Google Web Toolkit http://www.oio.de/public/opensource/ueberblick-gwtgoogle-web-toolkit-2-artikel.htm Mehr von OIO zum Thema... Artikel: JSF Best Practices (englischer Artikel) http://www.oio.de/public/java/jsf-best-practicesjavaserver-faces-session-tips.htm Zeitschriften-Artikel aus dem Eclipse Magazin Vol. 14, S. 40 Google Web Toolkit: Webanwendungen mit GWT entwickeln http://www.oio.de/public/opensource/gwt/ google-web-toolkit.pdf Zeitschriften-Artikel aus dem Java Magazin 01/2009, S. 46 Love & Peace & JSF! http://www.oio.de/public/java/jsf-woodstock/ JM1.09_Love_Peace_JSF.pdf Mehr von OIO zum Thema... Beratung zu Java Software Frameworks http://www.oio.de/beratung-consulting/open-sourcesoftware/java-frameworks/consulting-support-javaframeworks.htm Referenz: Rent-a-Team: After-Sales System für Automobilhersteller http://www.oio.de/object-rangers/referenzen/javaprojekt-referenz-after-sales-jboss-soa-jsf.htm Referenz: Coaching: Expertenwissen JSF bei Arbeitsübergabe http://www.oio.de/referenzen/competence-center/ referenz-coaching-review-jsf-anwendung.htm