SlideShare a Scribd company logo
<Insert Picture Here>




Hyperproductive JSF 2.0
Arun Gupta, Java EE & GlassFish Guy
blogs.sun.com/arungupta, @arungupta
Beijing 2010
December 13–16, 2010




                       2
The following is intended to outline our general
product direction. It is intended for information
purposes only, and may not be incorporated into any
contract. It is not a commitment to deliver any
material, code, or functionality, and should not be
relied upon in making purchasing decisions.
The development, release, and timing of any
features or functionality described for Oracle’s
products remains at the sole discretion of Oracle.




                                                      3
Features, features, features, ...




                                    4
Facelets




           5
Facelets
• Designed for JSF from beginning
• XHTML + CSS
  – Document validation
• Better error handling, including line numbers
• Library prefixes as namespaces
• EL directly in page:
   – #{bean.propertyname}
• Templating made easy
   – ui:composition, ui:define, ui:insert
   – ui:include, ui:repeat


                                                  6
Facelets – Sample Code

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:h="http://java.sun.com/jsf/html">
  <h:head>
    <title>Enter Name &amp; Password</title>
  </h:head>
  <h:body>
    <h1>Enter Name &amp; Password</h1>
    <h:form>
      <h:panelGrid columns="2">
        <h:outputText value="Name:"/>
        <h:inputText value="#{simplebean.name}" title="name"
                     id="name" required="true"/>
        <h:outputText value="Password:"/>
        <h:inputText value="#{simplebean.password}" title="password"
                     id="password" required="true"/>
      </h:panelGrid>
      <h:commandButton action="show" value="submit"/>
    </h:form>
  </h:body>
</html>




                                                                       7
Composite Components




                       8
This...




          9
Becomes this...




                  10
Or maybe this:




                 11
Composite Components
• Enable True Abstraction
   – Create a true, reusable, component from an
     arbitrary region of a page
   – Built by composing other components
• “Using” and “Defining” page
• Full support for using attached objects in the
 using page
  – Action methods
  – Validators, etc




                                                   12
Composite Components – Sample Code




                                13
Composite Component – Sample Code

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:h="http://java.sun.com/jsf/html">
  <h:head>
    <title>Enter Name &amp; Password</title>
  </h:head>
  <h:body>
    <h1>Enter Name &amp; Password</h1>
    <h:form>
      <h:panelGrid columns="2">
        <h:outputText value="Name:"/>
        <h:inputText value="#{simplebean.name}" title="name"
                     id="name" required="true"/>
        <h:outputText value="Password:"/>
        <h:inputText value="#{simplebean.password}" title="password"
                     id="password" required="true"/>
      </h:panelGrid>
      <h:commandButton action="show" value="submit"/>
    </h:form>
  </h:body>
</html>




                                                                       14
Composite Components - Mapping
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:ez="http://java.sun.com/jsf/composite/ezcomp">
  <h:head>
    <title>Enter Name &amp; Password</title>
  </h:head>
  <h:body>
    <h1>Enter Name &amp; Password</h1>
    <h:form>
      <ez:username-password/>
      <h:commandButton action="show" value="submit"/>
    </h:form>
  </h:body>
</html>

                                                    . . .
                                                    WEB-INF
                                                    index.xhtml
                                                    resources/
                                                      ezcomp/
                                                        username-password.xhtml



 http://blogs.sun.com/arungupta/entry/totd_147_java_server_faces


                                                                             15
Integrated Ajax




                  16
Integrated Ajax

• Inspiration – ADF, RichFaces, IceFaces,
  DynamicFaces
• Two entry points:
 – Declarative: <f:ajax> tag, uses AjaxBehavior
 – Programmatic ajax
   • resource library javax.faces
   • resource name jsf.js
   • JavaScript namespace jsf.ajax.
     – jsf.ajax.request function


                                                  17
Integrated Ajax – Sample Code




<h:commandButton
      actionListener="#{sakilabean.findActors}"
      value="submit">
      <f:ajax execute="length"
          render="actorTable totalActors"/>
</h:commandButton>




http://blogs.sun.com/arungupta/entry/totd_123_f_ajax_bean



                                                            18
Partial State Saving




                       19
Partial State Saving

• Inspired by Trinidad state saving
• Save only the state that's changed since creation
  of the component tree
• Per-view state size up to 4X smaller
• Default for pages written with Facelets
• All standard components implement this feature
 – Default for composite components




                                                20
View Parameters




                  21
View Parameters
• Inspired by Page Parameters from Seam
• Provides a declarative way to map request
 parameters to EL-reachable location
  – <f:viewParam>, <f:metadata>

<f:metadata>
  <f:viewParam name="foo" value="#{bean.foo}"/>
</f:metadata>

page1.xhtml?foo=bar

bean.foo will equal “bar”


                                              22
System Events




                23
System Events

• Inspired by Solaris Dtrace, Linux strace, etc.
• Publish/Subscribe event bus for things that
  happen during the JSF Lifecycle
• Adds to event listening abilities
  – FacesEvent/FacesListener
  – PhaseEvent/PhaseListener
  – SystemEvent/SystemEventListener




                                                   24
System Event Types




                     25
System Events – Sample Code


<h:inputText>
    <f:event type="preValidate"
        listener="#{bean.doSomePreValidation}"/>
</h:inputText>



<h:inputText value="#{myBean.text}">
    <f:event type="beforeRender"
         listener="#{myBean.beforeTextRender}"/>
</h:inputText>




                                               26
Resources




            27
Resources
• Standard way to serve image, JavaScripts,
 CSS, …
 – No need for separate Servlet or Filter
 – Logically related to components, treat them that way
• @ResourceDependency or
  @ResourceDependencies on custom
  components
• Built in support for CSS, Image, JavaScript
  resources
• /resources or /META-INF/resources


                                                          28
Resource EL – Sample Code

• #{resource['<resource>']}
• #{resource['<library>:<resource>']}
• Examples of use
  – <a href="#{resource['header.jpg']}" />
  – <h:graphicImage
    value="#{resource['corp:header.jpg']}" />




                                           29
Behaviors




            30
Behaviors

• A Behavior is an interface and invents a new
  type of “attached object” which takes part in
  decode/encode of a component
• 3 new behaviors – ClientBehavior,
  ClientBehaviorHolder, AjaxBehavior
<h:commandLink
    onclick="return confirm('Really???')"/>
<h:commandLink>
    <foo:confirm message="Really???"/>
</h:commandLink>


                                                  31
Optional “faces-config.xml”

• <managed-bean> → @ManagedBean or @Named
  – Validator, Renderer, Listener, ...
• Default navigation rules – match a view on the
 disk
 – Conditional navigation

 @Named(“simplebean”)
 public class SimpleBean {
 . . .
 }

 <h:commandButton action="show" value="submit"/>


                                                   32
Lot more features ...

• Annotations
• Navigation
• Exceptions
• Validation
• EL
• Scopes
• Project Stage




                        33
Annotations

• @ManagedBean
• @*Scoped (Session, Request, etc)
• @ManagedProperty
• @FacesComponent
• @FacesConverter
• etc.
• With implicit Navigation, may eliminate need
 for faces-config.xml in many cases


                                                 34
Bookmarkable URLs



<h:link outcome="viewEntry" value="Link">
  <f:param name="entry" value="#{aBean.entry}"/>
</h:link>


<a
href="http://localhost:8080/myapp/viewEntry.xhtml
?entry=entry1">Link</a>



                                            35
EL (Expression Langauge)


• #{component}, #{cc} (composite
  component): get the “currently” processed
  component / composite component
• #{component.clientId}
• #{component.messageList}




                                              36
Validation

• Integration with JSR 303: Bean Validation
   – @NotEmpty String name;
   – default validator: javax.faces.Bean –
     automatically applied to all input fields
• Default-validator: hook up a validator for all
  instances of EditableValueHolder
• <f:validateBean>,
  <f:validateRequired>,
  <f:validateRegexp>


                                                   37
Project Stage

• Inspired by Rails
• Development
   – Better error reporting, debugging
• Production
  – Better performance




                                         38
References


• glassfish.org
• blogs.sun.com/theaquarium
• youtube.com/user/GlassFishVideos
• facebook.com/glassfish
• Follow @glassfish




                                     39
<Insert Picture Here>




Hyperproductive JSF 2.0
Arun Gupta, Java EE & GlassFish Guy
blogs.sun.com/arungupta, @arungupta

More Related Content

PDF
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
PDF
JavaServer Faces 2.0 - JavaOne India 2011
PDF
Staying Sane with Drupal NEPHP
PDF
JSF 2.0 Preview
PDF
Primefaces Nextgen Lju
PPTX
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
PDF
Action Controller Overview, Season 2
PDF
Action View Form Helpers - 1, Season 2
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
JavaServer Faces 2.0 - JavaOne India 2011
Staying Sane with Drupal NEPHP
JSF 2.0 Preview
Primefaces Nextgen Lju
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Action Controller Overview, Season 2
Action View Form Helpers - 1, Season 2

What's hot (20)

PDF
A Peek At The Future: Going Beyond JavaServer Faces 2.0 With RichFaces 4
PDF
Jsf Ajax
PDF
Layouts and Rendering in Rails, Season 2
PDF
Bootstrat REST APIs with Laravel 5
KEY
Templates
PDF
Rails 4.0
PPT
Presentation
PDF
Expression Language in JSP
TXT
Jsp Notes
PPT
PDF
ACL in CodeIgniter
PPT
Php frameworks
PPTX
Sightly - Part 2
PDF
深入淺出 MVC
PDF
Jsf2 composite-components
PPTX
Mule esb
PDF
Lecture 2: Servlets
PDF
Basic JSTL
PDF
Java Web Programming [5/9] : EL, JSTL and Custom Tags
A Peek At The Future: Going Beyond JavaServer Faces 2.0 With RichFaces 4
Jsf Ajax
Layouts and Rendering in Rails, Season 2
Bootstrat REST APIs with Laravel 5
Templates
Rails 4.0
Presentation
Expression Language in JSP
Jsp Notes
ACL in CodeIgniter
Php frameworks
Sightly - Part 2
深入淺出 MVC
Jsf2 composite-components
Mule esb
Lecture 2: Servlets
Basic JSTL
Java Web Programming [5/9] : EL, JSTL and Custom Tags
Ad

Viewers also liked (17)

PDF
Spark IT 2011 - Context & Dependency Injection in the Java EE 6 Ecosystem
PDF
Running your Java EE 6 Apps in the Cloud - JavaOne India 2011
PDF
Java EE 7 Soup to Nuts at JavaOne 2014
PDF
Java EE 6 = Less Code + More Power
PDF
Deep Dive Hands-on in Java EE 6 - Oredev 2010
PDF
Understanding the nuts & bolts of Java EE 6
PDF
JavaOne India 2011 - Running your Java EE 6 Apps in the Cloud
PDF
JAX-RS 2.0: What’s New in JSR 339 ?
PDF
The Java EE 7 Platform: Productivity++ & Embracing HTML5
PDF
Understanding
PDF
PaaSing a Java EE 6 Application at Geecon 2012
PDF
GlassFish 3.1 – Simplifying your Java EE 6 Development and Deployment @ JAX L...
PDF
Running your Java EE 6 applications in the Cloud
PDF
JAX-RS 2.0: RESTful Web services on steroids at Geecon 2012
PDF
Jfokus 2012: PaaSing a Java EE Application
PDF
Java E
PDF
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Spark IT 2011 - Context & Dependency Injection in the Java EE 6 Ecosystem
Running your Java EE 6 Apps in the Cloud - JavaOne India 2011
Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 6 = Less Code + More Power
Deep Dive Hands-on in Java EE 6 - Oredev 2010
Understanding the nuts & bolts of Java EE 6
JavaOne India 2011 - Running your Java EE 6 Apps in the Cloud
JAX-RS 2.0: What’s New in JSR 339 ?
The Java EE 7 Platform: Productivity++ & Embracing HTML5
Understanding
PaaSing a Java EE 6 Application at Geecon 2012
GlassFish 3.1 – Simplifying your Java EE 6 Development and Deployment @ JAX L...
Running your Java EE 6 applications in the Cloud
JAX-RS 2.0: RESTful Web services on steroids at Geecon 2012
Jfokus 2012: PaaSing a Java EE Application
Java E
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Ad

Similar to Hyperproductive JSF 2.0 @ JavaOne Brazil 2010 (20)

PDF
Ajax, JSF, Facelets, Eclipse & Maven tutorials
PPTX
KEY
LatJUG. JSF2.0 - The JavaEE6 Standard
PDF
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
PPTX
Jsf presentation
PDF
Going Above JSF 2.0 with RichFaces and Seam
ODP
JSF 2.0 (JavaEE Webinar)
ODP
A Complete Tour of JSF 2
PPT
JSF 2 and beyond: Keeping progress coming
PDF
What You Need To Build Cool Enterprise Applications With JSF
PDF
Sun JSF Presentation
PPTX
Introduction to jsf 2
PDF
PrimeFaces: Next-Generation JSF Component Suite - Ian Hlavats
PDF
JBoss Seam vs JSF
ODP
Development of web apps based on JSF (TU Vienna)
PDF
Jsf2 overview
PDF
jsf2-composite-components
PDF
Jsf Online F
PPT
JSF basics
Ajax, JSF, Facelets, Eclipse & Maven tutorials
LatJUG. JSF2.0 - The JavaEE6 Standard
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
Jsf presentation
Going Above JSF 2.0 with RichFaces and Seam
JSF 2.0 (JavaEE Webinar)
A Complete Tour of JSF 2
JSF 2 and beyond: Keeping progress coming
What You Need To Build Cool Enterprise Applications With JSF
Sun JSF Presentation
Introduction to jsf 2
PrimeFaces: Next-Generation JSF Component Suite - Ian Hlavats
JBoss Seam vs JSF
Development of web apps based on JSF (TU Vienna)
Jsf2 overview
jsf2-composite-components
Jsf Online F
JSF basics

More from Arun Gupta (20)

PDF
5 Skills To Force Multiply Technical Talents.pdf
PPTX
Machine Learning using Kubernetes - AI Conclave 2019
PDF
Machine Learning using Kubeflow and Kubernetes
PPTX
Secure and Fast microVM for Serverless Computing using Firecracker
PPTX
Building Java in the Open - j.Day at OSCON 2019
PPTX
Why Amazon Cares about Open Source
PDF
Machine learning using Kubernetes
PDF
Building Cloud Native Applications
PDF
Chaos Engineering with Kubernetes
PDF
How to be a mentor to bring more girls to STEAM
PDF
Java in a World of Containers - DockerCon 2018
PPTX
The Serverless Tidal Wave - SwampUP 2018 Keynote
PDF
Introduction to Amazon EKS - KubeCon 2018
PDF
Mastering Kubernetes on AWS - Tel Aviv Summit
PDF
Top 10 Technology Trends Changing Developer's Landscape
PDF
Container Landscape in 2017
PDF
Java EE and NoSQL using JBoss EAP 7 and OpenShift
PDF
Docker, Kubernetes, and Mesos recipes for Java developers
PDF
Thanks Managers!
PDF
Migrate your traditional VM-based Clusters to Containers
5 Skills To Force Multiply Technical Talents.pdf
Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubeflow and Kubernetes
Secure and Fast microVM for Serverless Computing using Firecracker
Building Java in the Open - j.Day at OSCON 2019
Why Amazon Cares about Open Source
Machine learning using Kubernetes
Building Cloud Native Applications
Chaos Engineering with Kubernetes
How to be a mentor to bring more girls to STEAM
Java in a World of Containers - DockerCon 2018
The Serverless Tidal Wave - SwampUP 2018 Keynote
Introduction to Amazon EKS - KubeCon 2018
Mastering Kubernetes on AWS - Tel Aviv Summit
Top 10 Technology Trends Changing Developer's Landscape
Container Landscape in 2017
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Docker, Kubernetes, and Mesos recipes for Java developers
Thanks Managers!
Migrate your traditional VM-based Clusters to Containers

Hyperproductive JSF 2.0 @ JavaOne Brazil 2010

  • 1. <Insert Picture Here> Hyperproductive JSF 2.0 Arun Gupta, Java EE & GlassFish Guy blogs.sun.com/arungupta, @arungupta
  • 3. The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. 3
  • 6. Facelets • Designed for JSF from beginning • XHTML + CSS – Document validation • Better error handling, including line numbers • Library prefixes as namespaces • EL directly in page: – #{bean.propertyname} • Templating made easy – ui:composition, ui:define, ui:insert – ui:include, ui:repeat 6
  • 7. Facelets – Sample Code <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"> <h:head> <title>Enter Name &amp; Password</title> </h:head> <h:body> <h1>Enter Name &amp; Password</h1> <h:form> <h:panelGrid columns="2"> <h:outputText value="Name:"/> <h:inputText value="#{simplebean.name}" title="name" id="name" required="true"/> <h:outputText value="Password:"/> <h:inputText value="#{simplebean.password}" title="password" id="password" required="true"/> </h:panelGrid> <h:commandButton action="show" value="submit"/> </h:form> </h:body> </html> 7
  • 12. Composite Components • Enable True Abstraction – Create a true, reusable, component from an arbitrary region of a page – Built by composing other components • “Using” and “Defining” page • Full support for using attached objects in the using page – Action methods – Validators, etc 12
  • 13. Composite Components – Sample Code 13
  • 14. Composite Component – Sample Code <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"> <h:head> <title>Enter Name &amp; Password</title> </h:head> <h:body> <h1>Enter Name &amp; Password</h1> <h:form> <h:panelGrid columns="2"> <h:outputText value="Name:"/> <h:inputText value="#{simplebean.name}" title="name" id="name" required="true"/> <h:outputText value="Password:"/> <h:inputText value="#{simplebean.password}" title="password" id="password" required="true"/> </h:panelGrid> <h:commandButton action="show" value="submit"/> </h:form> </h:body> </html> 14
  • 15. Composite Components - Mapping <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:ez="http://java.sun.com/jsf/composite/ezcomp"> <h:head> <title>Enter Name &amp; Password</title> </h:head> <h:body> <h1>Enter Name &amp; Password</h1> <h:form> <ez:username-password/> <h:commandButton action="show" value="submit"/> </h:form> </h:body> </html> . . . WEB-INF index.xhtml resources/ ezcomp/ username-password.xhtml http://blogs.sun.com/arungupta/entry/totd_147_java_server_faces 15
  • 17. Integrated Ajax • Inspiration – ADF, RichFaces, IceFaces, DynamicFaces • Two entry points: – Declarative: <f:ajax> tag, uses AjaxBehavior – Programmatic ajax • resource library javax.faces • resource name jsf.js • JavaScript namespace jsf.ajax. – jsf.ajax.request function 17
  • 18. Integrated Ajax – Sample Code <h:commandButton actionListener="#{sakilabean.findActors}" value="submit"> <f:ajax execute="length" render="actorTable totalActors"/> </h:commandButton> http://blogs.sun.com/arungupta/entry/totd_123_f_ajax_bean 18
  • 20. Partial State Saving • Inspired by Trinidad state saving • Save only the state that's changed since creation of the component tree • Per-view state size up to 4X smaller • Default for pages written with Facelets • All standard components implement this feature – Default for composite components 20
  • 22. View Parameters • Inspired by Page Parameters from Seam • Provides a declarative way to map request parameters to EL-reachable location – <f:viewParam>, <f:metadata> <f:metadata> <f:viewParam name="foo" value="#{bean.foo}"/> </f:metadata> page1.xhtml?foo=bar bean.foo will equal “bar” 22
  • 24. System Events • Inspired by Solaris Dtrace, Linux strace, etc. • Publish/Subscribe event bus for things that happen during the JSF Lifecycle • Adds to event listening abilities – FacesEvent/FacesListener – PhaseEvent/PhaseListener – SystemEvent/SystemEventListener 24
  • 26. System Events – Sample Code <h:inputText> <f:event type="preValidate" listener="#{bean.doSomePreValidation}"/> </h:inputText> <h:inputText value="#{myBean.text}"> <f:event type="beforeRender" listener="#{myBean.beforeTextRender}"/> </h:inputText> 26
  • 27. Resources 27
  • 28. Resources • Standard way to serve image, JavaScripts, CSS, … – No need for separate Servlet or Filter – Logically related to components, treat them that way • @ResourceDependency or @ResourceDependencies on custom components • Built in support for CSS, Image, JavaScript resources • /resources or /META-INF/resources 28
  • 29. Resource EL – Sample Code • #{resource['<resource>']} • #{resource['<library>:<resource>']} • Examples of use – <a href="#{resource['header.jpg']}" /> – <h:graphicImage value="#{resource['corp:header.jpg']}" /> 29
  • 30. Behaviors 30
  • 31. Behaviors • A Behavior is an interface and invents a new type of “attached object” which takes part in decode/encode of a component • 3 new behaviors – ClientBehavior, ClientBehaviorHolder, AjaxBehavior <h:commandLink onclick="return confirm('Really???')"/> <h:commandLink> <foo:confirm message="Really???"/> </h:commandLink> 31
  • 32. Optional “faces-config.xml” • <managed-bean> → @ManagedBean or @Named – Validator, Renderer, Listener, ... • Default navigation rules – match a view on the disk – Conditional navigation @Named(“simplebean”) public class SimpleBean { . . . } <h:commandButton action="show" value="submit"/> 32
  • 33. Lot more features ... • Annotations • Navigation • Exceptions • Validation • EL • Scopes • Project Stage 33
  • 34. Annotations • @ManagedBean • @*Scoped (Session, Request, etc) • @ManagedProperty • @FacesComponent • @FacesConverter • etc. • With implicit Navigation, may eliminate need for faces-config.xml in many cases 34
  • 35. Bookmarkable URLs <h:link outcome="viewEntry" value="Link"> <f:param name="entry" value="#{aBean.entry}"/> </h:link> <a href="http://localhost:8080/myapp/viewEntry.xhtml ?entry=entry1">Link</a> 35
  • 36. EL (Expression Langauge) • #{component}, #{cc} (composite component): get the “currently” processed component / composite component • #{component.clientId} • #{component.messageList} 36
  • 37. Validation • Integration with JSR 303: Bean Validation – @NotEmpty String name; – default validator: javax.faces.Bean – automatically applied to all input fields • Default-validator: hook up a validator for all instances of EditableValueHolder • <f:validateBean>, <f:validateRequired>, <f:validateRegexp> 37
  • 38. Project Stage • Inspired by Rails • Development – Better error reporting, debugging • Production – Better performance 38
  • 39. References • glassfish.org • blogs.sun.com/theaquarium • youtube.com/user/GlassFishVideos • facebook.com/glassfish • Follow @glassfish 39
  • 40. <Insert Picture Here> Hyperproductive JSF 2.0 Arun Gupta, Java EE & GlassFish Guy blogs.sun.com/arungupta, @arungupta