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