Struts oder JavaServer Faces?
Transcrição
Struts oder JavaServer Faces?
Struts oder JavaServer Faces WA5 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de [email protected] Über mich Papick Garcia Taboada Software Architekt Technologie-Scout Beratung Projekte Training JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 2 1 „Orientierung“ in Objekten ) Akademie ) • Schulungen, Coaching, Weiterbildungsberatung, Train & Solve-Programme ) Beratung ) • Methoden, Standards und Tools für die Entwicklung von offenen, unternehmensweiten Systemen JAX 2005 / Struts oder JSF? ) Projekte ) • Schlüsselfertige Realisierung von Software • Unterstützung laufender Projekte • Pilot- und Migrationsprojekte © 2005 P.G.Taboada 3 Überblick WA4 Hallo, Einführung und Ziele Eine Webanwendung Zwiebelsoftware Mission Impossible I & II Sun's Spezifikationskeule Struts und / oder JSF? JAX 2005 / Struts oder JSF? Struts Grundidee Struts Welche Probleme löst Struts Welche Probleme löst Struts nicht Wie löst Struts Probleme Tiles, die Rettung? Sackgasse Portale? Know-how-Kapital Struts © 2005 P.G.Taboada 4 2 Überblick WA5 Hallo, Einführung und Ziele Eine Webanwendung Zwiebelsoftware Mission Impossible I & II Sun's Spezifikationskeule Struts und / oder JSF? Grundidee JSF JavaServer Faces Welche Probleme löst JSF Welche Probleme löst JSF nicht Wie löst JSF Probleme Tiles, die Rettung? Tiles oder Portales? Knowhowkapital JSF Zukunft: Struts Shale? JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 5 © 2005 P.G.Taboada 6 Ziele • Einblick in die WAFs aus Architektursicht vermitteln – Einstieg in die Thematik – Problemkreise identifizieren – Lösungsansätze – Entscheidungshilfe JAX 2005 / Struts oder JSF? 3 Eine Webanwendung • Webanwendung := Web + Anwendung – Web • Client/ Server Architektur • HTTP, HTML, CSS, JavaScript, Browser, TCP/ IP, Firewall, VPN, … – Anwendung • Sitzungen – Anwender – Berechtigungen – Sicherheit • Anwendugsfälle – CRUD Operationen (Create, Retrieve, Update and Delete) – Workflows, Dialoge JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 7 Zwiebelsoftware • Java 2 Platform, Enterprise Edition (J2EE) defines the standard for developing component-based multitier enterprise applications. – Web Tier – Business Tier – EIS-Tier JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 8 4 Wo ist mein MVC? • Model-View-Controller in der Vogelperspektive • Gesamtes System wird Betrachtet Web Server Servlet Engine Servlet JSP Bean Präsentation Application Server EJB RMI Corba EJB Logik EIS JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 9 „Wo ist mein MVC“ Reloaded Webapplication Controler GlobalNavigationsController NavigationsController ProcessController Action Action LayoutController Action FormBeans UIComponent AppContext UIComponent ProcessContext UIComponent Model JAX 2005 / Struts oder JSF? • MVC-Perspektive wird auf die Architektur der Webanwendung verschoben • In einer Webanwendung zu finden: – Navigation – Anzeige – Zustände View © 2005 P.G.Taboada 10 5 Mission Impossible I pid=2 Index.jsp editperson.jsp ED ED Person A Person B • • Name Lastname New Person Save Cancel/ Go Back • newperson.jsp Name Lastname • Create reallysaveperson.jsp Cancel – – Really Save? reallydeleteperson.jsp Yes No Really Delete? • Person B Yes aka Model-1 Architektur Globale Navigation und Prozesse sind durch HTML-Links abgebildet Sehr einfach zu implementieren Besondere Erschwernisse Bei Wartungarbeiten Bei Änderungswünsche „Broken Link Melden“Anwendungen No createperson.jsp saveperson.jsp Person was created! Click HERE to continue… Person saved, Click HERE to continue! deleteperson.jsp Person deleted, Click HERE to continue! JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 11 Mission Impossible II action=(edit|delete|create)&pid=X • homeServlet • param action=? Null Edit Create Delete Save Message • listServlet editServlet deleteServlet persistSerlvet messageServlet • aka Model-2 Architektur Navigation und Prozesse in Objekte festgehalten Nur „logische“ Navigation in den JSPs JSP Fragemente wiederverwendbar action=message&pid=X&message=savedOK list.jspf ED ED form.jspf message.jspf Person Firstname A Person Lastname B Message: Yes | No | Cancel New Person Save Cancel action=save&pid=X JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 12 6 No comments JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 13 Sun‘s Spezifikationskeule JAX 2005 / Struts oder JSF? • Zu viele Frameworks – Schwer zu entscheiden – Qual der Wahl – Kein Standard • Fehlende „offizielle“ Alternative zu Microsofts ASP .net WebForms • Die Keule: JavaServer Faces – Standard Webframework für J2EE Anwendung – Anerkennung durch SoftwareIndustrie © 2005 P.G.Taboada 14 7 Struts und / oder JSF? • „Struts“-Anwendung „JSF“-Anwendung Struts • Einfach dargestellt hört Struts da auf wo JSF anfängt Eigentlich klingt das gut, nur das Struts und JSF ganz unterschiedlich funktionieren Struts JSF ? JSF JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 15 Überblick WA5 Hallo, Einführung und Ziele Eine Webanwendung Zwiebelsoftware Mission Impossible I & II Sun's Spezifikationskeule Struts und / oder JSF? JAX 2005 / Struts oder JSF? Grundidee JSF JavaServer Faces Welche Probleme löst JSF Welche Probleme löst JSF nicht Wie löst JSF Probleme Tiles, die Rettung? Tiles oder Portales? Knowhowkapital JSF Zukunft: Struts Shale? © 2005 P.G.Taboada 16 8 JavaServer Faces • JavaServer Faces ist ein Framework zur Erzeugung von Benutzeroberflächen – – – – – – RAD Lückenfüller im J2EE Puzzle Antwort auf Microsofts ASP .net WebForms Eventbasierte UI-Programmierung Umfangreiche API, erweiterbares Komponentenmodell Toolsupport • Spezifiziert durch die JSR 127 – Durch Craig R. McClanahan geleitet JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 17 Grundidee JSF client editperson.jsp • – Eventbasierte UI Programmierung in WebAnwendungen server Name Lastname Save Cancel/ Go Back „Paradigmenwechsel“ • • JSF „Laufzeitumgebung“ wandelt Request/ Response Browserdialog in Ereignisse UI definieren kein HTML – rendern des UI durch sogenannte Renderer JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 18 9 Events, Events, Events, … Simplified request processing lifecycle Restore view Unmarshall request values Errors, listener renders response Process Events Process validations Process Events Update model values Process Events Invoke Application Process Events Render response Errors, listener skips other phases JAX 2005 / Struts oder JSF? Render response © 2005 P.G.Taboada 19 Welche Probleme löst JSF? • Webapplication Controler GlobalNavigationsController NavigationsController Ereignisbasierte UI Programmierung – Toolunterstützung • Technologieneutrale Maskenbeschreibung • Standardisierung und offene Schnittstellen, dadurch ProcessController Action Action LayoutController Action FormBeans UIComponent AppContext UIComponent ProcessContext UIComponent Model JAX 2005 / Struts oder JSF? – Komponenten und Renderer verschiedener Hersteller sind austauschbar, zueinander kompatibel View © 2005 P.G.Taboada 20 10 Wie löst JSF Probleme? request response • Durch Definition einer API und der Umwandlung des RequestResponse Zyklus in Events • Durch Definition von Schnittstellen für die Entkopplung der JSF Laufzeitumgebung Komponentenbibliotheken API XML Renderer – Renderer und – Komponentenbiliotheken XML Listener Beans JSPs Listener Beans JSPs Listener Beans JSPs Listener Beans JSPs JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 21 Welche Probleme löst JSF nicht? Webapplication • Keine Spezifikation für Templates (Tiles) • Kein globales Exceptionhandling • Fortgeschrittene Navigation Controler GlobalNavigationsController NavigationsController NavigationsController NavigationsController LayoutController ProcessController Action Action Action FormBeans UIComponent AppContext UIComponent ProcessContext UIComponent Model JAX 2005 / Struts oder JSF? – Mehrspaltige Webanwendungen – Dialoge – Workflows View © 2005 P.G.Taboada 22 11 Tiles, die Rettung? • Tiles wird aktuell aus Struts entkoppelt, als eigenständiges Projekt weitergeführt • Realisiert das „composite pattern“ für Webanwendungen! • Eventuell einsetzbar header navigation content JAX 2005 / Struts oder JSF? – als Template-Mechanismus für JSF – zur Erstellung von mehrspaltigen Webanwendungen © 2005 P.G.Taboada 23 © 2005 P.G.Taboada 24 Beispiel: JaxJSF JAX 2005 / Struts oder JSF? 12 Projektübersicht JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 25 © 2005 P.G.Taboada 26 Alles ist Architektur Bauen beginnt im Kopf JAX 2005 / Struts oder JSF? 13 Tiles oder Portales? Portale bieten die Funktionalität an, die in JSF fehlt • • • • Aufteilung der Oberfläche in Teilbereiche Templates Erweiterte Navigationsmöglichkeiten Infrastruktur für modulare Softwarekomponenten Je nach Projekt darf entschieden werden… • ob die Infrastruktur selber implementiert werden soll, • oder ein Portal-Produkt eingesetzt werden kann… JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 27 Know-how-Kapital JSF • Ereignisbasierte, komponentenbasierte Softwareentwicklung findet man in vielen Technologien wieder – AWT – Swing – SWT • Eclipse RCP • Fortgeschrittene Softwareentwicklung – objektorientiert – komponentenbasiert – Anwendung vieler bekannter Entwurfsmuster JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 28 14 Gesichertes Kapital? • Ja! – Portale als Anwendungsplatform, JSF als Maskenbeschreibung – Technologie wurde durch Industrie angenommen, inzwischen breite Toolunterstützung – Das gerenderte User Interface entsteht aus einer neutralen Maskenbeschreibung, durch Austauschen des Renderers neue Client-Technologien erreichbar • siehe AJAX JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 29 Zukunft: Struts Shale? • Einige Artikel im Internet beschreiben, dass Struts JSF-fähig gemacht wird… – Dabei wird sich Struts grundlegend ändern, sodass die Weiterführung des Namens „Struts“ bei den Entwicklern umstritten ist. – Das „JSF-Struts“, vielleicht auch „Struts Shale“ genannt, hat sehr wenig mit dem heutigen Struts gemeinsam… • Hier: keine Einführung in Struts Shale, nur ein paar Eindrücke… JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 30 15 Zitate aus „Shale Cometh“ „Struts is old-school and is no longer the best Java-based web application framework. IMO, it's not even in the top 3. As a Struts committer, I will always have a soft spot for Struts, but let's face it: over the past 4 years many advances have been made in WAF technology and, mostly due to backward compatibility considerations, Struts has not kept up.“ JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 31 Zitate aus „Shale Cometh“ „I love Struts and I always will, but it's time to move forward.“ JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 32 16 Zitate aus „Shale Cometh“ „Shale is a framework built on JSF initiated by Craig McClanahan. Craig is trying to get the Struts development community to adopt Shale as Struts 2.0, but ironically, he's getting some push back from developers who don't want Shale to be the next Struts because Shale is an entirely different framework that has absolutely no ties whatsoever to Struts-aswe-know-it.“ JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 33 ? ? ? ? ? Fragen ? Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] 17 „OIO-JAX Scrabble“ Gewinnspiel • Spielen Sie mit uns eine Runde OIO-JAX Scrabble und gewinnen Sie ein OIO Seminar aus dem Bereich O P E N S O U R C E • „Scrabble-Felder“ bekommen Sie an unserem Konferenzstand. • Abgabe bis Donnerstag, 12.05.05 - 11.45 Uhr • Gewinnbekanntgabe: 12.05.05 - 14.10 Uhr O I O @ J A X • Wir freuen uns über Ihren Besuch. Viel Spass beim Scrabbeln! JAX 2005 / Struts oder JSF? © 2005 P.G.Taboada 35 Vielen Dank für Ihre Aufmerksamkeit ! Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] 18