JSF-Erweiterung Woodstock

Werbung
JSF-Erweiterung
Woodstock
Umgang mit JSF Erweiterungen am Beispiel Woodstock
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
Version: 0.3
www.oio.de
[email protected]
Java, XML und Open Source seit 1998
) Projekte )
• Schlüsselfertige Realisierung
von Software
• Unterstützung laufender
Projekte
• Pilot- und Migrationsprojekte
) Beratung )
) Akademie )
• Methoden, Standards und
• Schulungen, Coaching,
Tools für die Entwicklung
von offenen, unternehmensweiten Systemen
Weiterbildungsberatung,
Train & Solve-Programme
2
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
1
Der Sprecher: Oliver Wolff
Ajax mit Java
JavaServer Faces
Java Portalentwicklung
QS mit Open Source
XML mit Java
Trainer
Berater
Entwickler
3
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
Gliederung
•
•
•
•
JavaServer Faces
Woodstock
Ajax & Dynamic Faces
Diskussion & Ausblick
4
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
2
JavaServer Faces - Übersicht
• UI-Framework für Webanwendungen
• JSF Design:
– Fokus auf Komponenten-APIs
– Lebenszyklus nicht perfekt
– Aber: Alle Framework-Aspekte leicht erweiterbar
• Java Specification Request (JSR) 127 / 252
• Ed Burns, Craig R. McClanahan
• Beteiligte Firmen: IBM, Oracle, BEA, ...
5
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
JavaServer Faces - Spezifikation-Implementierung
• JSR 127 / 252 ist reine Spezifikation
• Neben der Referenzimplementierung (RI) gibt es
–
–
–
–
MyFaces, Apache
ADF / Trinidad, Oracle
ICEfaces
...
• Implementierungen prinzipiell austauschbar
6
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
3
JavaServer Faces - Architektur
JSF bildet eine Architektur
•
•
•
•
•
•
•
Model-View-Controller
Navigationskonzept
Komponentenmodell
Bean-Mangement
Konverter und Validatoren
Eventhandling
...
7
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
JavaServer Faces Erweitern - Übersicht
• Framework: Æ Apache Shale, Seam, Orchestra, ...
JSF = Komponenten-Framework
JSF + Shale = Anwendungs-Framework
Æ www.oio.de/public/presentations/#JAX2008
• Alternative ViewHandler
– JavaServer Pages nicht optimal
– Facelets, JSFTemplating, Shale Clay
• Komponenten Bibliotheken
8
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
4
Bibliotheken
• Implementierungen beinhalten nur Grundfunktionalität
• Selbst Entwickeln ÍÎ Einbinden bestehender Bibliotheken
• Viele Probleme wurden schon gelöst
• Aber wie vorgehen?
9
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
Bibliotheken - Implementierung mit Erweiterung
Standard
Html
<h:form>
<h:inputText>
<h:commandButton>
<h:dataTable>
....
Andere:
Struktur
Events
....
Erweiterung ist Teil der
Implementierung,
nicht austauschbar,
Bindung an Implementierung
Erweiterung
<ice:superTable>
<ice:ajax>
<ice:events>
....
10
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
5
Bibliotheken - Implementierung & Erweiterung
Referenz-Impl.
MyFaces
Html
<h:form>
<h:inputText>
<h:commandButton>
<h:dataTable>
....
Html
<h:form>
<h:inputText>
<h:commandButton>
<h:dataTable>
....
Andere:
Struktur
Events
....
Andere:
Struktur
Events
....
Erweiterung
<ext:superTable>
<ext:ajax>
<ext:events>
....
Erweiterung getrennt
von Implementierung
11
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
Bibliotheken - Tomahawk
• Zusammen mit MyFaces entwickelt
• Viele interessante Komponenten:
–
–
–
–
–
–
JSCook Menu (JavaScript-Menu)
File Upload
Calendar
Data List
Tree
....
• Externe Bibliothek Æ Modular
12
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
6
Bibliotheken - ICEfaces
• Kommerziell, Community Edition
• Gute Komponenten, z.B: Fortschrittsbalken
• Ajax-Einbindung, jedoch eigener Ansatz
• Externe Bibliothek Æ Modular
• JSF 1.1, 1.2
13
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
Bibliotheken - Oracle ADF, MyFaces Trinidad
• Gute Ajax-Unterstützung, jedoch eigener Ansatz
• ADF: Gute Dokumentation, Support
– Trinidad beinhaltet Kern, nicht alle Komponenten
• Viele Komponenten:
– Drag and Drop
– DataBinding, Datentabelle ..
• Eigene Implementierung Æ Monolith
– Trinidad: teilweise Bibliothek
• JSF 1.1 & 1.2
14
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
7
Bibliotheken - NetAdvantage
• Kommerziell
• Ajax-Komponenten, jedoch eigener Ansatz
• Live-Visualisierung von Daten
• Externe Bibliothek Æ Modular
• JSF 1.1, 1.2
15
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
Bibliotheken - JBoss ajax4jsf/RichFaces
• ajax4jsf: wenig invasive „Ajaxifizierung“
– Gut für Legacy Anwendungen
• Mächtige Komponenten
• Gute Ajax-Unterstützung
• Externe Bibliothek Æ Modular
• JSF (1.1) & 1.2
16
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
8
Bibliotheken - Monolith vs. Modular
X
Woodstock
Woodstock
Facelets
Facelets
Shale
(Shale)
RI 1.2
Monolith
MyFaces 1.2
X
X X
RI 1.2
17
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
Gliederung
•
•
•
•
JavaServer Faces
Woodstock
Ajax & Dynamic Faces
Diskussion & Ausblick
18
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
9
Woodstock - Übersicht
• Ursprung: Glassfish - Administrationsoberfläche
• NetBeans: VisualWeb-PlugIn
– Gut integriert: Entwicklung durch Drag-and-Drop
• Open Source, CDDL-Lizenz
• Sehr hohe Qualität
• Mächtiges Komponenten Framework
19
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
Woodstock - NetBeans
20
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
10
Schaufenster - Struktur und Layout
• Viele Elemente für Struktur und Layout:
–
–
–
–
Accordion, Breadcrumbs
MastHead, Page, Panel
Bubble, Alert
LogIn, Wizard
21
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
Schaufenster - Eingabe und Spezielles
• Erweiterte Varianten von Textfeldern, Buttons & Co
• Calendar, FileUpload
• Aber auch Rating, ProgressBar, dndContainer
22
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
11
Schaufenster - Datentabelle
• Umgang mit Daten zentrales Problem
• Ziel: Einfache Verwendung & Hohe Funktionalität
23
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
Datentabelle - DataProvider - Übersicht
• JSF-DataModel guter Ansatz, jedoch nicht sehr komfortabel
• DataTable muß ergänzt werden: Paginieren, Sortieren
• DataProvider: Verallgemeinerte DataSources, externe Lib
• Dienste:
– Einheitlicher Zugriff mit Bean Notation
– Grundlage für Sortierung, Paginierung
• Kombination w:table & TableDataProvider
– Paginierung, Sortierung
– Filter: Hilfsklassen sind direkt der Javadoc zu entnehmen
– Durch einfache Struktur leicht generierbar
24
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
12
Datentabelle - DataProvider - Verwendung
<w:table title="System User" id="systemUserTable"
paginateButton="true" clearSortButton="true"
sortPanelToggleButton="true" paginationControls="true">
<w:tableRowGroup
sourceData="#{listSystemUserBean.dataProvider}"
sourceVar="systemUser" rows="10">
<w:tableColumn id="shortname" headerText="Anmeldename"
sort="shortname" rowHeader="true">
<w:staticText text="#{systemUser.value.shortname}" />
...
25
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
Datentabelle - DataProvider - Übersicht
Woodstock
Facelets
Shale
RI 1.2
Data
Provider
Über DataProvider
wenig GlueCode
notwendig
Backend
26
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
13
Gliederung
•
•
•
•
JavaServer Faces
Woodstock
Ajax & Dynamic Faces
Diskussion & Ausblick
27
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
Ajax - Übersicht
• Asynchronous JavaScript And XML
• Kleine Datenpakete werden asynchron vom Server geladen und
angezeigt
• Interaktion findet mittels JavaScript und DOM statt
• Erweiterung zu Request / Response-Zyklus
• Web 2.0, Desktop, schick...
28
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
14
Ajax - JSF 1.1
• Auf Request / Response Zyklus ausgelegt
• Kein eleganter Weg zur Einbindung
– PhaseListener
– ServletFilter
– ...
• Kernproblem: Adressierung einzelner Komponente
– Overhead durch Baumaufbau: Phase RestoreView
– Lebenszyklus zu komplex
• Unterschiedliche Lösungen: Nicht kompatibel
– Eigene Implementierung: ICEfaces, Oracle ADF
– ServletFilter: RichFaces / ajax4jsf
Æ Siehe: www.oio.de/public/presentations/#OOP2007
29
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
JSF 1.2 & DynamicFaces
• Wichtigste Änderung: UIComponent#invokeOnComponent(.)
– Jakob Hookom, Avatar
– Erstaunlich schnell Teil der Spezifikation
• Darauf basierend: Projekt JSF-Extensions-DynamicFaces
• DynamicFaces bildet eine einheitliche Grundlage für Ajax
–
–
–
–
Eigener Lebenszyklus
JavaScript API für asynchrone Kommunikation
Benötigt JSF 1.2
Verwendet Shale-Remoting
30
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
15
DynamicFaces - Lebenszyklus
Quelle: https://jsf-extensions.dev.java.net/mvn/tutorial.html
31
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
Woodstock & DynamicFaces
• Woodstock verwendet DynamicFaces für Remoting
• Dojo-Widget für jede JSF-Komponente
– Client-seitiges Rendering
– Umfangreiche JavaScript-API
• Konsequenzen
– Mehr JavaScript als beispielsweise bei RichFaces
– Hohe Flexibilität: domNode.refresh()
– Nicht auf JSF beschränkt (Server-Seite)
32
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
16
Woodstock - Client-Server Kommunikation
33
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
Praxis - AutoComplete - Übersicht
• Wichtigste Ajax-Anwendung
• „Zu Fuß“ nicht ganz einfach
• Beispiel: Feld Organisation
34
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
17
Praxis - AutoComplete - Code
• JSP
<w:textField id="organisationInput" required="true"
autoComplete="true"
autoCompleteExpression="#{userBean.getOrganisationChoices}"
notify="organisationLabel"
text="#{modifyUserBean.updateUser.organisation}" />
• Java
public Option[] getOrganisationChoices(String
searchString) {....}
Æ Zwei Attribute und eine Funktion
35
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
Praxis - Andere Komponenten
• Viele Komponenten verfügen über Ajax-Funktionalität
• Einbindung über mehrere Wege:
– MethodExpression, wie bei AutoComplete
– Durch JavaScript domNode.refresh()
– Implizit, z.B: MastHead
• Spezielle Komponenten: table2 alias Ajax-Tabelle
36
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
18
Gliederung
•
•
•
•
JavaServer Faces
Woodstock
Ajax & Dynamic Faces
Diskussion & Ausblick
37
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
Und der Haken?
• Sun zieht sich gerade zurück
• Dojo-Bug mit Firefox 3
• Starke Verwendung von JSF-1.2 Expressions
– Facelets hat damit Probleme
– JSFTemplating eine gute Alternative
• Starke Verwendung von JavaScript
– Höhere Flexibilität
• NetBeans vs. Eclipse
38
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
19
Warum Woodstock?
• Herausragende Qualität: Dokumentation, Spezifikation
– Wird in vielen Projekten verwendet
– Saubere Architektur
– Skaliert gut
• Umfangreiche Komponenten
• DataProvider-API
– NetBeans punktet auch hier
• Technisch die eleganteste Lösung: DynamicFaces
– Basis für einheitliches Remoting
39
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
Qual der Wahl oder Wahl der Qual?
• Modulare Erweiterungen wählen
• Einheitliche Remoting Schicht: z.B: DynamicFaces
• RichFaces besser / schlechter als Woodstock?
• Die ideale Erweiterung gibt es nicht: Es muß passen
• „JavaScript ist böse“Æ RichFaces
• CRUD-Schleudern & Flexibilität Æ Woodstock
40
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
20
Links
•
Woodstock http://woodstock.dev.java.net/index.html
•
JSF-Extensions http://jsf-extensions.dev.java.net
•
Glassfish https://glassfish.dev.java.net
•
NetBeans http://www.netbeans.org
•
Jacob Hookom Avatar-Blog
http://weblogs.java.net/blog/jhook/archive/2005/09/jsf_avatar_vs_m_1.html
•
Woodstock-Showcase http://webdev2.sun.com/example/faces/index.jsp
•
Woodstock Ajax-Architektur https://woodstock.dev.java.net/docs/specs/ajaxarchitecture-spec.html
•
Kurze Einführung DataProvider
http://blogs.sun.com/winston/entry/creator_data_provider_a_gentle
•
Facelets http://facelets.dev.java.net
•
JSFTemplating: https://jsftemplating.dev.java.net/
41
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
Vielen Dank für Ihre
Aufmerksamkeit !
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
Version: 0.3
www.oio.de
[email protected]
21
? ? ?
?
?
Fragen ?
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
Version: 0.3
www.oio.de
[email protected]
Bilder
Raffael: Die Schule von Athen
http://en.wikipedia.org/wiki/Image:Sanzio_01.jpg
IvanGrohar-Portrait of France Preseren
http://commons.wikimedia.org/wiki/Image:Ivan_Grohar_-_Portrait_of_France_Preseren.jpg
http://commons.wikimedia.org/wiki/Image:PlateVIIFlyTyingFromRodFishingWithFlys.JPG
Bild aus dem Codex Gigas, 13. Jh
http://commons.wikimedia.org/wiki/Image:Codex_Gigas_devil.jpg
Carl Spitzweg: Der Bücherwurm. (wikimedia):
http://commons.wikimedia.org/wiki/Image:Carl_Spitzweg_021.jpg
Exekias-Ajax:http://commons.wikimedia.org/wiki/Image:Ajax%27s_face.jpg
Coupe.nef.cathedrale.Amiens
http://commons.wikimedia.org/wiki/Image:Coupe.nef.cathedrale.Amiens.png
http://commons.wikimedia.org/wiki/Image:Flowerpowerportfolio.jpg
Die Bilder sind public domain (commons.wikimedia)
Shale-Logo: shale.apache.org
Screenshots, Diagramme:www.oio.de
44
Die JSF-Erweiterung Woodstock
© 2008 Orientation in Objects GmbH
22
Herunterladen