Contains three Parts:
1) JSF basics (Architecture, Concepts)
2) JSF addons (Seam, Portlet-Bridge, Component Libraries, CaptainCasa)
3) Comparison to other Java Web Frameworks - decide when to use JSF and when to user another web framework
Presented at an IT conference organized by "DOAG SIG Java" at Munich, Germany in September 2010.
See details about this conference at my blog: www.kai-waehner.de/blog
5. Ziel: ÜBERBLICK über JSF geben
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 5
6. Keine Erläuterung aller Details des JSF-Standards
Bullet Point
Boot Camp
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 6
8. Agenda
1. Überblick über JSF
2. Verfügbare Addons
3. Grenzen von JSF
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 8
9. Agenda
1. Überblick über JSF
2. Verfügbare Addons
3. Grenzen von JSF
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 9
10. JSF ist ein Web-Framework Was ist das?
A web application framework is a software
framework that is designed to support the
development Web applications.
The framework aims to alleviate the overhead
associated with common activities performed in
Web development..
(Wikipedia)
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 10
12. Überblick über JSF
HTTP-
Request
R XUL
e
n JSP
(AJAX)
d XHTML Converter
Converter
Faces e Component Converter
r A
HTTP- Servlet Component
e B
Response Component
r C Validator
Validator
faces- Managed
config.xml
(optional)
Bean
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 12
13. JSF und MVC
HTTP-
Request
View
R XUL
e
n JSP
(AJAX)
d XHTML Converter
Converter
Faces e Component Converter
r A
HTTP- Servlet Component
e B
Response Component
r C Validator
Validator
faces- Managed
config.xml
(optional)
Bean
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 13
14. JSF und MVC
HTTP-
Request
R XUL
e
n JSP
(AJAX)
d XHTML Converter
Converter
Faces e Component Converter
r A
HTTP- Servlet Component
e B
Response Component
r C Validator
Validator
faces-
config.xml
Managed
Bean
Model
(optional)
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 14
15. JSF und MVC
HTTP- Controller
Request
R XUL
e
n JSP
(AJAX)
d XHTML Converter
Converter
Faces e Component Converter
r A
HTTP- Servlet Component
e B
Response Component
r C Validator
Validator
faces- Managed
config.xml
(optional)
Bean
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 15
16. MVC - View
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>"Hello World"-Beispiel</title>
</h:head>
<h:body>
<p>Aktuelles Datum: </p>
<h:outputText value="#{helloBean.now}" />
<h:button value="Zur zweiten Seite“ action="#{helloBean.secondPage}"
</h:body>
</html>
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 16
17. MVC – Model und Controller
package de.mwea.waehner.helloworld.beans;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
// Annotations statt Konfiguration in faces-config.xml
@ManagedBean(name="helloBean") // Default-Name: helloWorldManagedBean
public class HelloWorldManagedBean {
public HelloWorldManagedBean() {}
public java.util.Date getNow() { return new java.util.Date();}
public String getSecondPage() { return "secondPage.xhtml"; } // auch Navigation
möglich
}
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 17
18. JSF Life Cycle
Apply
Restore Process
Request Request
View Validations
Values
No Query Data
Invoke Update
Render
Response Application Model
Response
s Values
Conversion or Validation Errors
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 18
19. Design-Konzepte Multi-Page
Suche Artikel Waren-
Startseite
katalog
Wähle Artikel aus
Kunden-
Warenkorb
verwaltung
Bestelle Artikel
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 19
20. Design-Konzepte Server-zentrisch
Bei jedem
Request:
Request
Client Server
Response:
GUI + Daten
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 20
21. Design-Konzepte Komponenten-basiert
Dropdown-
Box
RadioButtons
Complex Component
Table
Button Button
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 21
22. Design-Konzepte: Server-seitige Validierung
Standard-Validierung vs. Bean-Validation (JSR-
303)
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 22
23. Was ist eigentlich neu bei JSF 2.0?
Standardisiertes Facelets
Ressourcen- (kein JSR!)
Management
Zusätzliche
Scopes
Annotations
AJAX Einfachere
Komponenten
Weniger
-entwicklung
Konfiguration
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 23
24. Weitere Details (d.h. Codebeispiele) zu JSF?
Standard JSF Tags
Managed Beans,
Navigation,
Facelets,
Data Tables,
Converter,
Validation,
Composite Components,
Event Handling,
Custom Components,
Converters and Validators.
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 24
25. Agenda
1. Überblick über JSF
2. Verfügbare Addons
3. Grenzen von JSF
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 25
27. Beispiel "RichFaces"
Viele Dynamisch
Komponente e
n Ressourcen
-Verwaltung
AJAX-
Erweiterungen
Eigene
Komponenten
Client-side
noch
Validation
einfacher
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 27
28. Verfügbare Addons: JBoss Seam
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 28
29. JBoss Seam
Seam 2 vs. Seam 3
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 29
30. JBoss Seam – Rückblick: Seam 2 (JSF 1.2)
„Mit JBoss Seam liegt ein Framework vor, das das Gebot
der Leichtgewichtigkeit mit dem klassischen Java EE Stack
kombinieren will.
Es verspricht, die einzelnen Java-EE-Komponenten mit
einem speziellen „Klebstoff“ zu verbinden und so für den
Entwickler die Grenzen zwischen den einzelnen
Technologien zu verwischen.“
Java Magazin 01/2009 (Jan Groth, Frank Ratzlow)
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 30
31. JBoss Seam – Rückblick: Seam 2 (JSF 1.2)
JBos
LGLP-
s JSF 1.2 +
Lizenz
EJB 3.0 / POJO +
JPA 1.0 / Hibernate
100% + jBPM
JEE-
konform
Seam-Kontext
über alle
Schichten
(GUI – Logik – seam-gen
DB)
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 31
32. JBoss Seam – Vorschau: Seam 3 (JSF 2.0)
„Wenn Java EE 6 das Haus baut,
dann sorgt Seam 3 für die Möbel“
Dan Allen (Seam-Comitter) im Java Magazin 08/2010
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 32
33. JBoss Seam – Vorschau: Seam 3 (JSF 2.0)
„Problem“: Vieles von Seam 2 in Java EE 6
integriert
Context and Dependency Injection (JSR-299)
Bean Validation (JSR-303)
neue JSF 2.0 Features
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 33
34. JBoss Seam – Vorschau: Seam 3 (JSF 2.0)
Frage: Wieso wird dann
überhaupt noch Seam 3 benötigt?
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 34
35. JBoss Seam – Vorschau: Seam 3 (JSF 2.0)
Auszug aus Seam 3:
JEE 6 Web-Profil als technisches Minimum
seam-gen fast komplett neu
„Seam 2 Bridge“
PDF-Erzeugung
BPM-Integration
Arquillian: „An end to end testing solution“
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 35
36. JBoss Seam – Wann soll es eingesetzt werden?
Seam ist geeignet für:
Entwicklung einer vollständigen Webanwendung
Seam ist nicht geeignet für:
Entwicklung einzelner Module
Integration mit anderen Frameworks
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 36
37. JBoss Seam – Pitfall
„Ich habe mit Seam angefangen. Ich habe aber
gar keine Erfahrung mit Web-Entwicklung.
Würde mir jemand sagen, wie ich darüber
Beispiele und kleine Übungen finden kann?“
Quelle: Ein Java-Forum...
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 37
38. JBoss Seam – Pitfall
Hohes Maß an Verständnis sowohl der
verwendeten Technologien als auch der Seam-
Konzepte wird unbedingt vorausgesetzt!
„Ich habe mit Seam angefangen. Ich habe aber gar
keine Erfahrung mit Web-Entwicklung. Würde mir
jemand sagen, wie ich darüber Beispiele und kleine
Übungen finden kann?“
Quelle: Ein Java-Forum...
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 38
40. Portal-Integration - Was ist ein Portal?
Kein Standard!
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 40
41. Portal-Integration - Was ist ein Portal?
Informationen verschiedener Anwendungen auf eine
einheitliche Art darstellen
Informationen, Personen und Prozesse über
organisatorische Grenzen hinweg in Unternehmen
integrieren
zusätzlich zu Web-Framework(s)
Portal-Server
Portlet-Standard
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 41
43. Portal-Integration - Vorteile eines Portals?
Integration
Zusammenarbeit
Single-Sign-On
Personalisierung
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 43
44. Portal-Integration
</ Exkurs_Portal>
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 44
45. Portal-Integration - Wieso JSF bei Portal einsetzen?
Problem generell:
Integration / Migration
von Portlet und Web-Framework
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 45
46. Portal-Integration - Wieso JSF bei Portal einsetzen?
Problem generell:
Integration / Migration
von Portlet und Web-Framework
Problem bei JSF:
JSF Life Cycle vs. Portlet Life
Cycle
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 46
47. Portal-Integration - Wieso JSF bei Portal einsetzen?
„Portlet Bridge for JSF“
JSR-301: Portlet 1.0 (JSR-168) + JSF 1.2
JSR-329: Portlet 2.0 (JSR-286) + JSF 1.2
JSR-???: Portlet 2.0 (JSR-286) + JSF 2.0
(bisher keine Standardspezifikation gestartet)
Liferay: portletfaces.org
JBoss: PortletBridge 3.0
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 47
49. CaptainCasa – Was ist das?
Rich Client + Eigene PDL
JSF Backend und Render-Kit
100% JSF-
kompatibel
Zielgruppe: Verschiedene
Enterprise- Lizenzierungs-
Anwendungen möglichkeiten
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 49
50. CaptainCasa – Welche Technologien werden
eingesetzt?
Nutzt JSF- Ausschluss
Referenz- einiger JSF-
implementierun Features
g
Swing-
XML-Layout
basierter
statt HTML
Client
HTML-Client
als
Alternative
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 50
51. CaptainCasa – Wie wird entwickelt?
Einfache Installation
/
Keine Konfiguration Video-
Tutorials
GUI-Builder + Viele
Eclipse- verfügbare
Plugin Komponente
n
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 51
52. CaptainCasa – Wie wird entwickelt?
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 52
53. CaptainCasa – Wie wird entwickelt?
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 53
54. Verfügbare Addons: Viele weitere...
JSFUnit PrettyFaces
JSF-Flex
MyFaces
J4Fry External
(u.a. JSF- Validation
JPA-Bridge) (Server-side)
XULFaces
RichFaces
OracleAD
Validation
F
(Client-side)
jQuery4jsf
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 54
55. Agenda
1. Überblick über JSF
2. Verfügbare Addons
3. Grenzen von JSF
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 55
56. Welche Kriterien für den Vergleich von Web-
Frameworks?
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 56
57. Kriterien für den Vergleich von Web-Frameworks
Lesezeichen
Internationalisierung
„Post-
Redirect-
Problem“
AJAX
Einige
mehr...
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 57
58. Kriterien für den Vergleich von Web-Frameworks
Lesezeichen
Internationalisierung
Einige
mehr...
AJAX „Post-
Redirect-
Problem“
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 58
60. Kategorisierung von Web-Frameworks
Klassische Portal
Web-
CRUD Anwendung
Zeit-
Kurz Lang aufwand
Rich Internet
Rich Client Application
(RIA)
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 60
61. Überblick über Web-Frameworks im Java-Umfeld
Komplexität hoch
Lift
Flex
JavaF
Grails X
Sprin JSF
g
Klassische MVC
Web- RIA
anwendung GWT
Tapestr
Struts y ZK
Fram
Wicke ework
t
Roma
Fram
ework
Komplexität gering
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 61
62. Überblick über Web-Frameworks im Java-Umfeld
Komplexität hoch
Lift
CRUD-Client Flex
JavaF
Grails X
Sprin JSF
g
Klassische MVC
Web- RIA
anwendung GWT
Tapestr
Struts y ZK
Fram
Wicke ework
t
Roma
Fram
ework
Komplexität gering
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 62
63. Überblick über Web-Frameworks im Java-Umfeld
Komplexität hoch
Lift
Klassische Flex
JavaF
Grails Webanwendung X
Sprin JSF
g
Klassische MVC
Web- RIA
anwendung GWT
Tapestr
Struts y ZK
Fram
Wicke ework
t
Roma
Fram
ework
Komplexität gering
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 63
64. Überblick über Web-Frameworks im Java-Umfeld
Komplexität hoch
Lift
Flex
JavaF
Grails X
Sprin
g
JSF Rich Client
Klassische MVC
Web- RIA
anwendung GWT
Tapestr
Struts y ZK
Fram
Wicke ework
t
Roma
Fram
ework
Komplexität gering
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 64
65. Überblick über Web-Frameworks im Java-Umfeld
Komplexität hoch
Lift
Flex
JavaF
Grails X
Sprin
g
JSF RIA
Klassische MVC
Web- RIA
anwendung GWT
Tapestr
Struts y ZK
Fram
Wicke ework
t
Roma
Fram
ework
Komplexität gering
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 65
66. Überblick über Web-Frameworks im Java-Umfeld
JSF = Komplexität hoch
Lift
Klassische Flex
Grails
Webanwendung JavaF
X
Sprin JSF
g
Klassische MVC
Web- RIA
anwendung GWT
Tapestr
Struts y ZK
Fram
Wicke ework
t
Roma
Fram
ework
Komplexität gering
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 66
67. Überblick über Web-Frameworks im Java-Umfeld
Komplexität hoch
Lift
JSF + seam-gen
Grails
= CRUD Client
JSF
Klassische
Web- RIA
JSF
anwendung
+
Seam
Roma
Fram
ework
Komplexität gering
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 67
68. Überblick über Web-Frameworks im Java-Umfeld
Komplexität hoch
JSF + CaptainCasa
= Rich Client
JSF
Klassische
Web- RIA
anwendung JSFGWT
ZK +
FramCaptain
ework Casa
Komplexität gering
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 68
69. Überblick über Web-Frameworks im Java-Umfeld
Komplexität hoch
JSF
+
Flex
???
JSF + ??? = RIA JavaF
X
JSF
Klassische
Web- RIA
anwendung
Komplexität gering
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 69
70. Überblick über Web-Frameworks im Java-Umfeld
Komplexität hoch
JSF
+
Flex
???
JSF + ??? = RIA JavaF
X
JSF
Klassische
Web- RIA
anwendung
Komplexität gering
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 70
72. Was ist JSF?
JSF
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 72
73. Welche Addons gibt es?
JSF PortletBridge
Seam
PrettyFaces
Captain JSFUnit
JSF-Flex
Casa Viele weitere....
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 73
74. Welches Web-Framework einsetzen?
JSF PortletBridge
Seam Klassische Portal
Web-
CRUD Anwendung
Zeit-
Kurz Lang aufwand
Rich Internet
Rich Client Application PrettyFaces
(RIA)
Captain JSFUnit
JSF-Flex
Casa Viele weitere....
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 74
75. Ziel: Verständlichen Überblick über JSF geben
Überblick über JSF
Verfügbare Addons
Grenzen von JSF
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 75
76. Auf Wiedersehen!
Kai Wähner
IT-Consultant
Telefon +49 89 544 253 88
Mobil +49 151 544 277 88
kai.waehner@mwea.de
www.kai-waehner.de/blog
MaibornWolff et al GmbH | Theresienhöhe 13 | D-80339 München
www.mwea.de Einsatz und Grenzen von Java Server Faces 2.0 (Kai Wähner) 9/11/2010 Seite 76