Java Server Faces - PowerPoint PPT Presentation

crystal
java server faces l.
Skip this Video
Loading SlideShow in 5 Seconds..
Java Server Faces PowerPoint Presentation
Download Presentation
Java Server Faces

play fullscreen
1 / 24
Download Presentation
Java Server Faces
218 Views
Download Presentation

Java Server Faces

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Java Server Faces St. Louis JavaSIG June 8, 2006 Jay Meyer, Harpoon Technologies

  2. 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

  3. Summary • Brief History of JSF • Motivations for JSF, the Java Landscape • JSF details • Demo apps in MyFaces & Seam

  4. 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

  5. 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!

  6. 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!

  7. 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?

  8. 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...

  9. 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

  10. typical JSF component tree View Form input input combo command

  11. 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!)

  12. MyFaces architecture J2EE server Faces Servlet my App base classes faces-config.xml

  13. 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

  14. 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

  15. Seam Demo • the Bean: User EJB3 • the view : HTML and JSP • the Action: Register SSB • Seam in the faces-config.xml?

  16. Next for Seam? • Reverse Engineering – make a whole app from a set of database tables

  17. 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

  18. Seam architecture JSP Facelets Sun JSF RI MyFaces Seam Framework EJB3 Hibernate3 SQL DB

  19. Tomahawk • Apache’s extended JSF components, ships with MyFaces • Calendar • Tree • advanced inputText

  20. 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)

  21. 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

  22. 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

  23. 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