You are on page 1of 24

Java Server Faces

St. Louis JavaSIG June 8, 2006


Jay Meyer,
Harpoon Technologies
About Me
 Master CS from Washington Univ. (wustl.edu)
 Software developer for 14 years (1992)
 Java Web development since 1999
 Certified JBoss Application Developer
 Recent projects use Struts, Spring, Hibernate,
JBoss, Oracle
 Hibernate consulting thru HarpoonTech, a
JBoss partner
Summary
 Brief History of JSF
 Motivations for JSF, the Java Landscape
 JSF details
 Demo apps in MyFaces & Seam
What is Java Server Faces?
 JSF is a spec which defines a component-based MVC
framework
 JSF 1.2 is included in the larger JEE5 spec
 The spec was developed by involving many people
from orgs like Sun, Apache, IBM, Oracle
 Not tied to a Web framework, nor a thick-client GUI
– theoretically could be applied to either
 Implementations, frameworks:
 Sun RI vs. Apache MyFaces
 JBoss Seam vs. Apache Struts 2 Shale
 IBM, Oracle have proprietary solutions
The Problem with Web apps

 HTML? HTML? Java people like Objects, HTML is not


Objects
 Web programming is more difficult than GUI programming
 Java programming is hard – and J2EE is even more difficult:
Servlets? JSP? EJBs!?!
 Microsoft has VisualStudio which turns web programming
into drag-and-drop, that looks easy! 10 minute demo!
Answer: a Framework!
(yet another framework, of course)

 Struts – reduced lines of code, made apps


pretty complex, created a niche of skilled
Struts mercenaries
 WebWork – fixed some of the Struts hassle
 SpringMVC – brought powerful AOP
concepts to web dev
 Tapestry – JSP? dump it, XML rules!
MVC
WARS
 any Web apps in 2006 means seeing a mix of Struts,
Tapestry, Spring MVC, and Webwork (consultant:
which one pays the best?)
 the battle rages on, who will win? how can you tell
who won? Trust Craig? Trust Rod? How can a OSS
project define victory?
 Converting legacy apps: Struts is dead! long live
Struts 2 Action and Struts 2 Shale!!!
 How can I possibly pick one for a new project, when
the technology is under attack?
JSF to the rescue
 Make Committees, Not War!
 get the big players together to solve MVC problems in a
standard way, argue, compromise, repeat... publish final
Spec
 Use components, not actions, more like Swing, less like
Struts
 Set a standard so we can build derivative products like
IDEs with drag-n-drop ease, without worrying about
change
 extensible standard to allow growth (plugins)
 and the main objective...
errr... What’s a component?
 the JSF spec defines a standard set of
components and relationships
 the View layer (e.g. JSP) and the Java code on
the server use these components to interact and
pass data
 JSF tree is the current set of components in a
Java object graph
 Struts, Webwork, SpringMVC use actions, not
components
typical JSF component tree
View

Form

input

input

combo

command
How does Apache MyFaces work?
 jar file for deployment on Tomcat or any J2EE
container – myfaces-all.jar
 Controller servlet, XML config file, JSP, a pile
of base classes, and custom tags out the wazoo
(of course! just like all the other frameworks!)
MyFaces architecture
J2EE server

Faces
Servlet
my App

base classes

faces-config.xml
MyFaces Demo
 I used: Eclipse, Java5, JBoss 4 (JBossIDE)
 Register a user
 the Bean: Registration
 the view : HTML and JSP
 the Action Controller
 the web.xml
 faces-config.xml
 navigation
What is Seam?
 Seam is a new product from JBoss, (OSS, free
as in beer and speech)
 Founded by Gavin King, Hibernate creator
 uses Java5 and EJB3
 goal: use the exact same objects for
persistence and rendering the view layer:
abolish glue code and DTO objects
 combines MyFaces, EJB3
Seam Demo
 the Bean: User EJB3
 the view : HTML and JSP
 the Action: Register SSB
 Seam in the faces-config.xml?
Next for Seam?
 Reverse Engineering – make a whole app from
a set of database tables
Facelets
 Totally replace JSPs, uses XHTML instead
 Integrates tightly with JSF
 faster and leaner than JSPs – same idea as
Tapestry
 avoids serious JSP / JSF integration issues
Seam architecture
JSP Facelets

Sun JSF RI MyFaces

Seam Framework

EJB3 Hibernate3

SQL DB
Tomahawk
 Apache’s extended JSF components, ships
with MyFaces
 Calendar
 Tree
 advanced inputText
the Future
 continued Component development, similar to
taglib dev with Struts
 more tool dev – Eclipse plugins, GUI designers
 Facelets general acceptance instead of JSP
 Seam innovation from Gavin King, JBoss also
JSR 299 WebBeans just started
 Shale? Will Craig McClanahan work on Shale
or just Struts 2 Action (aka Webwork)
Glossary
 JSF – JavaServer Faces
 JEE5 – the newest Java App Server spec, includes EJB3, JSF etc.
 MyFaces – Apache’s JSF impl, completely replaces Sun’s ref impl for JSF
 Tomahawk – Apache’s set of components to extend JSF, comes with
MyFaces
 Facelets – replacement for JSP, interprets XML instead of JSP files to
produce web pages, integrated well with JSF
 Seam – JBoss’ framework that works with JSF to provide the glue between
JSF and EJB3 to reduce lines of code, includes MyFaces, Facelets (Gavin
King’s project)
 Shale – Apache Struts (Craig McClanahan) framework to provide a better
API for JSF, competes with Seam, needs JDK5, not EJB3
Resources
 JavaServer Faces by Hans Bergsten, OReilly
 http://java.sun.com/javaee/javaserverfaces/
 http://www.coreservlets.com/JSF-Tutorial/
 http://www.jboss.com/products/seam
 http://docs.jboss.com/seam/reference/en/html/tutorial.html
 http://struts.apache.org/struts-shale/index.html
 http://www.jsfcentral.com/articles/facelets_1.html
Questions?
contact: Jay Meyer jmeyer@harpoontech.com

discuss: Ideal architecture?


Facelets, MyFaces, Seam, EJB3, JBossAS, MySQL, Ubuntu
Linux?
discuss: worst of breed?
JSP, Struts 1.x, Sun JSF RI, Websphere, Toplink, DB/2,
Windows

You might also like