0% found this document useful (0 votes)
98 views24 pages

Java Server Faces: St. Louis Javasig June 8, 2006 Jay Meyer, Harpoon Technologies

This document provides an overview of Java Server Faces (JSF), including: 1) A brief history of JSF and its motivations in addressing issues with prior MVC frameworks like Struts and providing a standard component-based framework. 2) Details on how JSF defines a standard set of UI components and the relationships between the view layer and server-side Java code using these components. 3) An example of how the Apache MyFaces implementation of JSF works and its architecture using a controller servlet, XML configuration, and custom tags.

Uploaded by

Ashish Gupta
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
98 views24 pages

Java Server Faces: St. Louis Javasig June 8, 2006 Jay Meyer, Harpoon Technologies

This document provides an overview of Java Server Faces (JSF), including: 1) A brief history of JSF and its motivations in addressing issues with prior MVC frameworks like Struts and providing a standard component-based framework. 2) Details on how JSF defines a standard set of UI components and the relationships between the view layer and server-side Java code using these components. 3) An example of how the Apache MyFaces implementation of JSF works and its architecture using a controller servlet, XML configuration, and custom tags.

Uploaded by

Ashish Gupta
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 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... Whats 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 Sun JSF RI Facelets MyFaces

Seam Framework EJB3


Hibernate3

SQL DB

Tomahawk

Apaches 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 Apaches JSF impl, completely replaces Suns ref impl for JSF Tomahawk Apaches 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 Kings 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 [email protected]
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