SlideShare a Scribd company logo
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I1
JSF 2.2 Input/Output
Edward Burns
@edburns
http://slideshare.net/edburns/
Consulting Member of Staff, Oracle
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I2
My plan for your time investment
§  How is JSF still relevant?
§  JSF 2.3 Plans
§  JSF 2.2 Big Ticket Features: in Context
–  1055 Stateless Views: Context: Performance
–  1090 HTML5 Friendly Markup: Context: Markup Evolution
–  730 Flows and 1142 Resource Library Contracts:
Context: Multi-tenancy and Modularity
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I3
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.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I4
§  JSR 127
–  JSF 1.0 11 March 2004
–  JSF 1.1 27 May 2004
§  JSR 252
–  JSF 1.2 11 May 2006
–  JSF 1.2 Maintenance Release 1
19 December 2006
–  JSF 1.2 Maintenance Release 2
13 June 2008
–  JSF 1.2 Maintenance Release 3
25 August 2008
Where is JSF in its Lifecycle?
JSR Timeline §  JSR 314
–  JSF 2.0 1 July 2009
–  JSF 2.1 16 July 2010
–  JSF 2.1 Maintenance Release 2
22 November 2010
§  JSR 344
–  Started 14 April 2011
–  Final June 2013 http://bit.ly/
JavaEE7WrapsUp
§  JSR 372
§  Started 22 Sep 2014
§  Final CY 2016
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I5
WE STILL NEED WEB APPS THAT ARE
QUICK TO BUILD,MAINTAINABLE,
LOCALIZABLE, ACCESSIBLE,
SECURE, DEVICE INDEPENDENT, GOOD
LOOKING, AND ARE FUN TO USE
How Can JSF Still Be Relevant?
Abstractions Endure
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I6
What About the MVC JSR?
§  Facelets
§  Scopes
–  Flash
–  View Scope
Alignment between JSF and MVC
M
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I7
§ Tie up the loose ends
–  Specification clarifications
–  CDI alignment
§  Ease of use e.g. @Inject
FacesContext
§  @Inject into Validators, Converters,
etc.
–  HtmlInputHidden is
ClientBehaviorHolder
§ Small scale new features
§ Subject to Spec Lead oversight
–  JSON ajax component rendering
–  Stateless enhancements
–  GET enhancements
–  Adopt-a-JSR support
JSF 2.3 in Java EE 8
Two feature drivers, each with their own agenda
M
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I8
JSF 2.3 Small Scale New Features
§  End of the line for non-CDI managed beans
–  Redefine meaning of @javax.faces.bean.ManagedBean to be CDI bean
–  Redefine corresponding XML syntax to be CDI bean
§  Ajax method invocation
–  A Faces request
–  Not specific to a view
–  Is specific to a ClientWindow
–  Returns results in JSON
§  Multi-component validation
M
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I9
My plan for your time investment
§  How is JSF still relevant?
§  JSF 2.3 New Plans
§  Big Ticket Features: in Context
–  1055 Stateless Views: Context: Performance
–  1090 HTML5 Friendly Markup: Context: Markup Evolution
–  730 Flows and 1142 Resource Library Contracts:
Context: Multi-tenancy and Modularity
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I10
JSF 2.2 Big Ticket Features
in Context
Issue numbers relative to JSF JIRA
http://jsf-spec.java.net/issues/
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I11
New to JSF?
§  JSF 2.0 was a blockbuster release
–  Facelets
–  Composite Components
–  Ajax
–  Resource Libraries
2.0 Big Ticket Feature Review
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I12
1055 Stateless JSF
§  Kinds of state in a JSF app
–  UIComponent state
–  Model tier state
–  Persistence tier state
What is state?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I13
1055 Stateless JSF
§  Kinds of state in a JSF app
–  UIComponent state
–  Model tier state
–  Persistence tier state
What is state?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I14
1055 Stateless JSF
§  Kinds of state in a JSF app
–  UIComponent state
–  Model tier state
–  Persistence tier state
§  Context: Stateless is important mostly as performance concern
–  See http://bit.ly/LeonardoJsfPerformance Leonardo Uribe’s paper
–  Much can be done in the way you use JSF to reduce statefulness
What is state?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I15
1055 Stateless JSF
§  Leverage existing API
§  Biggest gain for smallest change
–  Expose existing UIComponent transient property on f:view
<f:view transient=“true”>
–  Spec changes in Restore View Phase, ResponseStateManager
§  Be advised
–  Must be on outer-most <f:view> in Facelets inclusion
–  View scoped managed beans will not work if the view is marked stateless
JSF 2.2 approach to stateless
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I16
1055 Stateless JSF
§  Automatic state management is a key value-add of JSF
–  Differentiates it from RESTful
§  Pros
–  Can be lazy with your UI,
Why is this important?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I17
1090 HTML5 Friendly Markup
§  This is a JSF page
The best part of Wicket comes to JSF
<!DOCTYPE html>!
<html xmlns="http://www.w3.org/1999/xhtml"!
xmlns:myNS="http://xmlns.jcp.org/jsf”>!
<form myNS:id="form">!
<input name="textField" type="text" myNS:value="#{bean.text1}" />!
<input type="submit" myNS:id="submitButton" value="submit" /> !
<p>submitted text: #{bean.text1}.</p>!
</form>!
</html>!
!
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I18
1090 HTML5 Friendly Markup
§  JSF Views are written in a View Declaration Language (VDL).
§  The standard Facelet VDL is an XML application with two kinds of
elements
–  HTML Markup
–  JSF Components
§  HTML Markup is passed through straight to the browser
§  JSF Components take some action on the server, during the lifecycle
Let’s get back to basics
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I19
1090 HTML5 Friendly Markup
§  Before JSF 2.2
–  JSF tags hide complexity of underlying HTML+script+css+images
–  JSF “Renderer”:
§  encode: markup to browser
§  decode: name=value from browser
<html>…
<my:colorPicker value=“#{colorBean.color2}” />
<my:calendar value=“#{calendarBean.date1}” />
</html>
§  Context: Missing feature in browser? Write a JSF component.
Let the elegance of HTML shine through
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I20
1090 HTML5 Friendly Markup
§  With JSF 2.2
–  Pure HTML+script+css+images in the JSF page
–  JSF Renderer handles decode from browser
§  Leverage the strength of the JSF lifecycle
§  Leverage the expressiveness of HTML5
<html>…
<input type=“color” jsf:value=“#{colorBean.color2}”/>
<input type=“date” jsf:value=“#{calendarBean.date1}” />
</html>
§  Context: New feature in browser? Use “pass through elements”
Let the elegance of HTML shine through
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I21
1142 Resource Library Contracts
730 Faces Flows
§  Allow composing a JSF app as a
collection of modules
–  Faces Flows modularize behavior
–  Resource Library Contracts modularize
appearance
§  Well defined contract for each
Modularity and Multi-tenant capability
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I22
1142 Resource Library Contracts 730 Faces Flows
§  Two new concepts in JSF 2.2
–  Resource Library Contract
–  Faces Flows
What’s going on here?
Builds on facelets concepts
Builds on navigation concepts
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I23
Resource Library Contracts
Facelets Review
<ui:define name="headline">
Today's News
</ui:define>
<ui:define name="story">
Facelets is now a part
of JSF 2.0...
</ui:define>
The Facelets Gazette
Site
Navigation
●Events
●Docs
●Forums
About Contact Site Map
_template.html
template client
greeting.html
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I24
Resource Library Contracts
Facelets Review The Facelets Gazette
Site
Navigation
●Events
●Docs
●Forums
About Contact Site Map
Template File name
_template.html
Insertion points
Resources
css classes, scripts, images
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I25
Resource Library Contracts
A Contract is Born
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractA
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I26
Resource Library Contracts
Loading Conventions
contractA
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractB
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractC
• Declared Templates
• Declared Insertion Points
• Declared Resources
<web-app-root>/contracts
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I27
Resource Library Contracts
Loading Conventions
contractA
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractB
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractC
• Declared Templates
• Declared Insertion Points
• Declared Resources
<web-app-root>/contracts
contractD
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractE
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractF
• Declared Templates
• Declared Insertion Points
• Declared Resources
JAR files in WEB-INF/lib
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I28
Resource Library Contracts
Loading Conventions
contractA
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractB
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractC
• Declared Templates
• Declared Insertion Points
• Declared Resources
<web-app-root>/contracts
contractD
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractE
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractF
• Declared Templates
• Declared Insertion Points
• Declared Resources
JAR files in WEB-INF/lib
Set of available contracts
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I29
Resource Library Contracts
Loading Conventions
contractA
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractB
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractC
• Declared Templates
• Declared Insertion Points
• Declared Resources
<web-app-root>/contracts
contractD
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractE
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractF
• Declared Templates
• Declared Insertion Points
• Declared Resources
JAR files in WEB-INF/lib
Set of available contracts
Facelet 1 Facelet 3Facelet 2
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I30
Resource Library Contracts
Loading Configuration
contractA
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractB
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractC
• Declared Templates
• Declared Insertion Points
• Declared Resources
<web-app-root>/contracts
contractD
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractE
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractF
• Declared Templates
• Declared Insertion Points
• Declared Resources
JAR files in WEB-INF/lib
Set of available contracts
Facelet 1 Facelet 3Facelet 2
faces-config.xml
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I31
Resource Library Contracts
Loading Configuration
contractA
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractB
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractC
• Declared Templates
• Declared Insertion Points
• Declared Resources
<web-app-root>/contracts
contractD
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractE
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractF
• Declared Templates
• Declared Insertion Points
• Declared Resources
JAR files in WEB-INF/lib
Set of available contracts
Facelet 1
<f:view contracts="contractA">
...
Facelet 3Facelet 2
faces-config.xml
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I32
Resource Library Contracts
§  Resource Library Contract
–  Convention
§  Available contracts discovered at startup
§  All of them are made available to the application
§  Assumes there are no naming collisions
–  Configuration
§  faces-config.xml <resource-library-contracts> element
–  Controls which parts of the app are allowed to use which contracts
§  contracts attribute in <f:view>
–  Declares that this view is only able to use these named contracts
Modular Appearance
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I33
Faces Flows
Standards are for Standardizing, Not Innovating
§  ADF Task Flows
§  Spring Web Flow
§  Apache MyFaces CODI
Architectural Pedigree
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I34
Flow Concepts
§  Can be “called” from any place in the application
§  Single entry point
§  Input parameters and return values
§  Well defined interface contract
–  Internal implementation details hidden
§  New flowScoped for flow local storage
§  New @FlowScoped CDI annotation: automatic activation/passivation
Hint: Think of a flow like a Java method
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I35
Flow Navigation
§  Navigation is no longer just between pages
§  Navigation is now between flow “nodes”
§  Information Hiding comes to JSF. Welcome to 1972!
§  Multiple node types:
–  View
–  Method Call
–  Switch
–  Flow Call
–  Flow Return
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I36
Flow Navigation
§  Flow represented at
runtime by instance of
javax.faces.flow.Flow
§  JSF 2.2 authoring
experience
–  XML
–  Builder
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I37
730 Faces Flows 1142 Resource Library Contracts
§  Two new concepts in JSF 2.2
–  Resource Library Contract
–  Faces Flows
§  Each builds on the packaging scheme in JSF 2.0
–  A special directory in the web app root
§  /contracts
§  /flows
–  A special location in the Classpath
§  /META-INF /contracts
§  /META-INF/flows
What’s going on here?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I38
730 Faces Flows 1142 Resource Library Contracts
§  Two new concepts in JSF 2.2
–  Resource Library Contract
–  Faces Flows
§  Each builds on the packaging scheme in JSF 2.0
–  A special directory in the web app root
§  /contracts
§  /flows
–  A special location in the Classpath
§  /META-INF /contracts
§  /META-INF/flows
What’s going on here?
Useful during development
Useful during deployment
}
}
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I39
Flow Definition
§  Name of the flow
§  Where does the flow start?
§  Input values
§  Optional initializer & finalizer
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I40
Flow Definition
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I41
730 Faces Flows
Spec challenge
§  Ensuring the feature works well with the existing JSF features
–  POSTback based navigation: <h:command{Button,Link}>
–  GET based navigation: <h:{button,link}>
§  Navigation rules
–  Was one level
–  Now is a stack
–  “return” case was tricky
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I42
My plan for your time investment
§  How is JSF still relevant?
§  Big Ticket Features: in Context
–  1055 Stateless Views: Context: Performance
–  1090 HTML5 Friendly Markup: Context: Markup Evolution
–  730 Flows and 1142 Resource Library Contracts:
Context: Multi-tenancy and Modularity
§  Other features: Context free
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I43
Other Features
•  Medium Sized
•  Small Sized
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I44
Medium Sized Features
1.  1042 ViewActions
2.  869 CSRF protection
3.  949 ClientWindow
4.  802 File Upload
5.  763 CDI injection of JSF artifacts
6.  599 Programmatic Composite Component creation
7.  594, 703 FacesComponent enhancetments
8.  479 UIData implements Collection
9.  1001 Composite and Java components in the same library
10.  533 Programmatic faces-config
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I45
1042 ViewActions
§  JSF 2.0 introduced <f:metadata>
–  Use with <f:viewParam>
§  JSF 2.2 introduces <f:viewAction>
–  Use inside of <f:metadata>
–  Use along side of <f:viewParam>
§  Like a button that clicks itself
–  Can cause navigation
–  Can choose the lifecycle phase
§  UIViewAction component sits behind <f:viewAction> tag.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I46
869 Cross Site Request Forgery Protection
§  What is Cross Site Request Forgery
(CSRF, pronounced SEE-surf)?
–  http://en.wikipedia.org/wiki/Cross-site_request_forgery
–  Trick the browser into sending requests that the user did not actually intend
to initiate
JSF Is Not Just for POSTback Anymore
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I47
869 Cross Site Request Forgery Protection
§  How does JSF protect your app against this attack?
1.  It already does and always has!
POSTback is a virture. JSF 2.2 just makes encryption of the view state on
by default
2.  New <protected-views> section in faces-config
§  View Token
–  When rendering a non-POSTback link or button
§  Referer [sic] and Origin headers
JSF Is Not Just for POSTback Anymore
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I48
949 ClientWindow
§  JSF finally has framework level support for the many different ways a
UIComponent tree can be rooted
–  Browser tab
–  Browser window
–  Browser pop-up
–  Portlet
–  …
§  New class javax.faces.lifecycle.ClientWindow
–  A client window is always associated with exactly one UIViewRoot instance
at a time, but may display many different UIViewRoots during its lifetime.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I49
949 ClientWindow
§  FacesServlet now must call Lifecycle.attachWindow()
§  Lifecycle.attachWindow()
–  Takes no action unless feature is enabled
–  Looks for incoming client window
–  Creates one if not present
–  Stores it on the ExternalContext
How does it work?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I50
802 File Upload Component
§  For the benefit of Apache Tomcat users, JSF has always chosen to lag
one Servlet version behind the Java EE umbrella spec in which it is
included
Why so long?
Included
JSF
Version
Included
Servlet
Version
Minimum Servlet
Version for
Included JSF
J2EE 1.4 1.1 2.4 2.3
Java EE 5 1.2 2.5 2.4
Java EE 6 2.0 3.0 2.5
Java EE 7 2.2 3.1 3.0
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I51
§  Final spec has “Ajax” and non-Ajax support
§  “Ajax” can be XHR level 2 or hidden IFRAME
<h:inputFile id="file"
value="#{fileUploadBean.uploadedFile}">
<f:validator validatorId="FileValidator" />
</h:inputFile>
802 File Upload Component
Usage
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I52
@ManagedBean
@RequestScoped
public class FileUploadBean {
private Part uploadedFile; // getter/setter
public String getFileText() {
String text = "";
if (null != uploadedFile) { try {
InputStream is = uploadedFile.getInputStream();
text = new Scanner( is ).useDelimiter("A").next();
} catch (IOException ex) {}
}
return text;
}
}
802 File Upload Component
Usage
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I53
@FacesValidator(value="FileValidator")
public class FileValidator implements Validator {
@Override public void validate(FacesContext context,
UIComponent component, Object value) throws ValidatorException {
Part file = (Part) value;
try {
InputStream is = file.getInputStream();
text = new Scanner( is ).useDelimiter("A").next();
} catch (Exception ex) { throw new ValidatorException(“”, ex); }
if (!text.contains("JSR-344")) {
throw new ValidatorException(new FacesMessage("Invalid file”);
}
}
 
802 File Upload Component
Usage
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I54
763 CDI Injection of JSF Artifacts
§  All Common Annotation and CDI Annotations must work in
–  ELResolvers
–  Factories
–  JSF singletons (ResourceHandler, StateManager, etc)
–  ActionListeners
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I55
599 Programmatic Component Creation
§  Application.createComponent()
–  Used to create UIComponent instances given component-family, etc
§  ViewDeclarationLanguage.createComponent()
–  Used to create UIComponent instances given tag library URI, tag name,
and optional attributes
–  Equivalent to using the tag in a page
–  Designed for use with composite components
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I56
594, 703 FacesComponent enhancements
§  @FacesComponent added in JSF 2.0
–  Allows declaring a UIComponent to the runtime
§  JSF 2.2 adds new attributes (with sensible defaults)
–  createTag causes a facelet tag handler to automatically be created
–  namespace declares the tag library namespace in which the tag handler
will reside
–  tagName declares the tag name
–  value now has a default behavior
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I57
479 UIData supports Collection
§  Prior to JSF 2.2, UIData only supported
–  Arrays
–  java.util.List
–  java.sql.ResultSet
–  javax.servlet.jsp.jstl.sql.Result
§  JSF 2.2 adds
–  java.util.Collection
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I58
1001 Composite and Regular Components
§  Prior to JSF 2.2, was not possible to have both kinds of components in
the same tag library
§  Now it is.
Both in the same tag library
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I59
533 Programmatic faces-config
§  New class
javax.faces.application.ApplicationConfigurationPopulator
§  Is a java.util.ServiceLoader service
§  Has a populateApplicationConfiguration() method
–  Gets passed an “empty” DOM Document
–  You can populate it as if it were a regular faces-config.xml file.
–  It gets put in with the rest of the discovered faces-config files.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I60
Other Features
•  Medium Sized
•  Small Sized
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I61
Small Sized Features
§  1142 “reset button” API
§  766 Events from the Flash
§  1134 “role” passthrough attribute
§  1050 Ajax delay
§  1085 httpOnly cookie support
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I62
Comments to
@edburns
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I63
The preceding was intended to outline our general product direction. It was
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.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I64

More Related Content

What's hot

Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015
Edward Burns
 
Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshot Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshot
David Delabassee
 
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
Edward Burns
 
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
David Delabassee
 
Best Practices for JSF, Gameduell 2013
Best Practices for JSF, Gameduell 2013Best Practices for JSF, Gameduell 2013
Best Practices for JSF, Gameduell 2013
Edward Burns
 
JSF 2.2
JSF 2.2JSF 2.2
JSF 2.2
Edward Burns
 
CON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To YouCON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To You
Edward Burns
 
Seven Points for Applying Java EE 7
Seven Points for Applying Java EE 7Seven Points for Applying Java EE 7
Seven Points for Applying Java EE 7Hirofumi Iwasaki
 
Newfeaturesincontext 130911052709-phpapp01
Newfeaturesincontext 130911052709-phpapp01Newfeaturesincontext 130911052709-phpapp01
Newfeaturesincontext 130911052709-phpapp01
Frank Rodriguez
 
Move from J2EE to Java EE
Move from J2EE to Java EEMove from J2EE to Java EE
Move from J2EE to Java EE
Hirofumi Iwasaki
 
Java EE 6 Adoption in One of the World’s Largest Online Financial Systems
Java EE 6 Adoption in One of the World’s Largest Online Financial SystemsJava EE 6 Adoption in One of the World’s Largest Online Financial Systems
Java EE 6 Adoption in One of the World’s Largest Online Financial Systems
Arshal Ameen
 
Down-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EEDown-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EE
Reza Rahman
 
JavaOne - 10 Tips for Java EE 7 with PrimeFaces
JavaOne - 10 Tips for Java EE 7 with PrimeFacesJavaOne - 10 Tips for Java EE 7 with PrimeFaces
JavaOne - 10 Tips for Java EE 7 with PrimeFaces
Mert Çalışkan
 
2015 JavaOne LAD JSF 2.3 & MVC 1.0
2015 JavaOne LAD JSF 2.3 & MVC 1.02015 JavaOne LAD JSF 2.3 & MVC 1.0
2015 JavaOne LAD JSF 2.3 & MVC 1.0
mnriem
 
JavaScript Frameworks and Java EE – A Great Match
JavaScript Frameworks and Java EE – A Great MatchJavaScript Frameworks and Java EE – A Great Match
JavaScript Frameworks and Java EE – A Great Match
Reza Rahman
 
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
Chris Muir
 
Whats Next for JCA?
Whats Next for JCA?Whats Next for JCA?
Whats Next for JCA?
Fred Rowe
 
Have You Seen Java EE Lately?
Have You Seen Java EE Lately?Have You Seen Java EE Lately?
Have You Seen Java EE Lately?
Reza Rahman
 
How to Thrive on REST/WebSocket-Based Microservices
How to Thrive on REST/WebSocket-Based MicroservicesHow to Thrive on REST/WebSocket-Based Microservices
How to Thrive on REST/WebSocket-Based Microservices
Pavel Bucek
 

What's hot (19)

Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015
 
Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshot Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshot
 
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
 
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
 
Best Practices for JSF, Gameduell 2013
Best Practices for JSF, Gameduell 2013Best Practices for JSF, Gameduell 2013
Best Practices for JSF, Gameduell 2013
 
JSF 2.2
JSF 2.2JSF 2.2
JSF 2.2
 
CON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To YouCON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To You
 
Seven Points for Applying Java EE 7
Seven Points for Applying Java EE 7Seven Points for Applying Java EE 7
Seven Points for Applying Java EE 7
 
Newfeaturesincontext 130911052709-phpapp01
Newfeaturesincontext 130911052709-phpapp01Newfeaturesincontext 130911052709-phpapp01
Newfeaturesincontext 130911052709-phpapp01
 
Move from J2EE to Java EE
Move from J2EE to Java EEMove from J2EE to Java EE
Move from J2EE to Java EE
 
Java EE 6 Adoption in One of the World’s Largest Online Financial Systems
Java EE 6 Adoption in One of the World’s Largest Online Financial SystemsJava EE 6 Adoption in One of the World’s Largest Online Financial Systems
Java EE 6 Adoption in One of the World’s Largest Online Financial Systems
 
Down-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EEDown-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EE
 
JavaOne - 10 Tips for Java EE 7 with PrimeFaces
JavaOne - 10 Tips for Java EE 7 with PrimeFacesJavaOne - 10 Tips for Java EE 7 with PrimeFaces
JavaOne - 10 Tips for Java EE 7 with PrimeFaces
 
2015 JavaOne LAD JSF 2.3 & MVC 1.0
2015 JavaOne LAD JSF 2.3 & MVC 1.02015 JavaOne LAD JSF 2.3 & MVC 1.0
2015 JavaOne LAD JSF 2.3 & MVC 1.0
 
JavaScript Frameworks and Java EE – A Great Match
JavaScript Frameworks and Java EE – A Great MatchJavaScript Frameworks and Java EE – A Great Match
JavaScript Frameworks and Java EE – A Great Match
 
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
 
Whats Next for JCA?
Whats Next for JCA?Whats Next for JCA?
Whats Next for JCA?
 
Have You Seen Java EE Lately?
Have You Seen Java EE Lately?Have You Seen Java EE Lately?
Have You Seen Java EE Lately?
 
How to Thrive on REST/WebSocket-Based Microservices
How to Thrive on REST/WebSocket-Based MicroservicesHow to Thrive on REST/WebSocket-Based Microservices
How to Thrive on REST/WebSocket-Based Microservices
 

Similar to JSF 2.2 Input Output JavaLand 2015

JSF 2.2 Status at DOAG 2011
JSF 2.2 Status at DOAG 2011JSF 2.2 Status at DOAG 2011
JSF 2.2 Status at DOAG 2011Edward Burns
 
Ebr the key_to_online_application_upgrade at amis25
Ebr the key_to_online_application_upgrade at amis25Ebr the key_to_online_application_upgrade at amis25
Ebr the key_to_online_application_upgrade at amis25
Getting value from IoT, Integration and Data Analytics
 
Oracle JET overview
Oracle JET overviewOracle JET overview
Oracle JET overview
Steven Davelaar
 
JavaOne2015報告会 in Okinawa
JavaOne2015報告会 in OkinawaJavaOne2015報告会 in Okinawa
JavaOne2015報告会 in Okinawa
Takashi Ito
 
2015 UJUG, JSF 2.3 portion
2015 UJUG, JSF 2.3 portion2015 UJUG, JSF 2.3 portion
2015 UJUG, JSF 2.3 portion
mnriem
 
OOW15 - Building, Deploying, and Managing Smartphone Apps for Oracle E-Busine...
OOW15 - Building, Deploying, and Managing Smartphone Apps for Oracle E-Busine...OOW15 - Building, Deploying, and Managing Smartphone Apps for Oracle E-Busine...
OOW15 - Building, Deploying, and Managing Smartphone Apps for Oracle E-Busine...
vasuballa
 
Climb Out of Your Monitoring Silo – Enable Real End-to-End Visibility for You...
Climb Out of Your Monitoring Silo – Enable Real End-to-End Visibility for You...Climb Out of Your Monitoring Silo – Enable Real End-to-End Visibility for You...
Climb Out of Your Monitoring Silo – Enable Real End-to-End Visibility for You...
SL Corporation
 
Oracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with LessOracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with Less
Ed Burns
 
JDK versions and OpenJDK
JDK versions and OpenJDKJDK versions and OpenJDK
JDK versions and OpenJDK
Wolfgang Weigend
 
Lightning Workshop London
Lightning Workshop LondonLightning Workshop London
Lightning Workshop London
Keir Bowden
 
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Consuming Java EE in Desktop, Web, and Mobile Frontends
Consuming Java EE in Desktop, Web, and Mobile FrontendsConsuming Java EE in Desktop, Web, and Mobile Frontends
Consuming Java EE in Desktop, Web, and Mobile FrontendsGeertjan Wielenga
 
JDK 10 Java Module System
JDK 10 Java Module SystemJDK 10 Java Module System
JDK 10 Java Module System
Wolfgang Weigend
 
Nonblocking Database Access in Helidon SE
Nonblocking Database Access in Helidon SENonblocking Database Access in Helidon SE
Nonblocking Database Access in Helidon SE
Dmitry Kornilov
 
Using Visualforce in Salesforce1
Using Visualforce in Salesforce1Using Visualforce in Salesforce1
Using Visualforce in Salesforce1
Salesforce Developers
 
Primavera integration possibilities technical overview ppt
Primavera integration possibilities   technical overview pptPrimavera integration possibilities   technical overview ppt
Primavera integration possibilities technical overview pptp6academy
 
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan WielengaCoding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
JAXLondon_Conference
 

Similar to JSF 2.2 Input Output JavaLand 2015 (20)

JSF 2.2 Status at DOAG 2011
JSF 2.2 Status at DOAG 2011JSF 2.2 Status at DOAG 2011
JSF 2.2 Status at DOAG 2011
 
Ebr the key_to_online_application_upgrade at amis25
Ebr the key_to_online_application_upgrade at amis25Ebr the key_to_online_application_upgrade at amis25
Ebr the key_to_online_application_upgrade at amis25
 
Oracle JET overview
Oracle JET overviewOracle JET overview
Oracle JET overview
 
JavaOne2015報告会 in Okinawa
JavaOne2015報告会 in OkinawaJavaOne2015報告会 in Okinawa
JavaOne2015報告会 in Okinawa
 
2015 UJUG, JSF 2.3 portion
2015 UJUG, JSF 2.3 portion2015 UJUG, JSF 2.3 portion
2015 UJUG, JSF 2.3 portion
 
OOW15 - Building, Deploying, and Managing Smartphone Apps for Oracle E-Busine...
OOW15 - Building, Deploying, and Managing Smartphone Apps for Oracle E-Busine...OOW15 - Building, Deploying, and Managing Smartphone Apps for Oracle E-Busine...
OOW15 - Building, Deploying, and Managing Smartphone Apps for Oracle E-Busine...
 
Climb Out of Your Monitoring Silo – Enable Real End-to-End Visibility for You...
Climb Out of Your Monitoring Silo – Enable Real End-to-End Visibility for You...Climb Out of Your Monitoring Silo – Enable Real End-to-End Visibility for You...
Climb Out of Your Monitoring Silo – Enable Real End-to-End Visibility for You...
 
Resume & CV
Resume & CVResume & CV
Resume & CV
 
Oracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with LessOracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with Less
 
JavaCro'15 - Web UI best practice integration with Java EE 7 - Peter Lehto
JavaCro'15 - Web UI best practice integration with Java EE 7 - Peter LehtoJavaCro'15 - Web UI best practice integration with Java EE 7 - Peter Lehto
JavaCro'15 - Web UI best practice integration with Java EE 7 - Peter Lehto
 
JDK versions and OpenJDK
JDK versions and OpenJDKJDK versions and OpenJDK
JDK versions and OpenJDK
 
Lightning Workshop London
Lightning Workshop LondonLightning Workshop London
Lightning Workshop London
 
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
 
Consuming Java EE in Desktop, Web, and Mobile Frontends
Consuming Java EE in Desktop, Web, and Mobile FrontendsConsuming Java EE in Desktop, Web, and Mobile Frontends
Consuming Java EE in Desktop, Web, and Mobile Frontends
 
JDK 10 Java Module System
JDK 10 Java Module SystemJDK 10 Java Module System
JDK 10 Java Module System
 
Nonblocking Database Access in Helidon SE
Nonblocking Database Access in Helidon SENonblocking Database Access in Helidon SE
Nonblocking Database Access in Helidon SE
 
Using Visualforce in Salesforce1
Using Visualforce in Salesforce1Using Visualforce in Salesforce1
Using Visualforce in Salesforce1
 
Gangadhar_Challa_Profile
Gangadhar_Challa_ProfileGangadhar_Challa_Profile
Gangadhar_Challa_Profile
 
Primavera integration possibilities technical overview ppt
Primavera integration possibilities   technical overview pptPrimavera integration possibilities   technical overview ppt
Primavera integration possibilities technical overview ppt
 
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan WielengaCoding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
 

More from Edward Burns

DevTalks Romania: Prepare for Jakarta EE 11
DevTalks Romania: Prepare for Jakarta EE 11DevTalks Romania: Prepare for Jakarta EE 11
DevTalks Romania: Prepare for Jakarta EE 11
Edward Burns
 
Developer Career Masterplan
Developer Career MasterplanDeveloper Career Masterplan
Developer Career Masterplan
Edward Burns
 
Jakarta EE 11 Status Update​
Jakarta EE 11 Status Update​Jakarta EE 11 Status Update​
Jakarta EE 11 Status Update​
Edward Burns
 
Sponsored Session: Please touch that dial!
Sponsored Session: Please touch that dial!Sponsored Session: Please touch that dial!
Sponsored Session: Please touch that dial!
Edward Burns
 
How modernizing enterprise applications gives you a competitive advantage
How modernizing enterprise applications gives you a competitive advantageHow modernizing enterprise applications gives you a competitive advantage
How modernizing enterprise applications gives you a competitive advantage
Edward Burns
 
Wie Azure Jakarta EE Nutzt
Wie Azure Jakarta EE NutztWie Azure Jakarta EE Nutzt
Wie Azure Jakarta EE Nutzt
Edward Burns
 
Practical lessons from customers performing digital transformation with Azure
Practical lessons from customers performing digital transformation with AzurePractical lessons from customers performing digital transformation with Azure
Practical lessons from customers performing digital transformation with Azure
Edward Burns
 
wls-azure-devnexus-2022.pdf
wls-azure-devnexus-2022.pdfwls-azure-devnexus-2022.pdf
wls-azure-devnexus-2022.pdf
Edward Burns
 
Jakarta EE und Microprofile sind bei Azure zu Hause
Jakarta EE und Microprofile sind bei Azure zu HauseJakarta EE und Microprofile sind bei Azure zu Hause
Jakarta EE und Microprofile sind bei Azure zu Hause
Edward Burns
 
Java on Your Terms with Azure
Java on Your Terms with AzureJava on Your Terms with Azure
Java on Your Terms with Azure
Edward Burns
 
Wars I’ve Seen From Java EE to Spring and more, Azure has you covered
Wars I’ve SeenFrom Java EE to Spring and more, Azure has you coveredWars I’ve SeenFrom Java EE to Spring and more, Azure has you covered
Wars I’ve Seen From Java EE to Spring and more, Azure has you covered
Edward Burns
 
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
Edward Burns
 
Programming Language Platform Growth: Table Stakes or Deal Makes?
Programming Language Platform Growth: Table Stakes or Deal Makes?Programming Language Platform Growth: Table Stakes or Deal Makes?
Programming Language Platform Growth: Table Stakes or Deal Makes?
Edward Burns
 
Programming Language Platform Growth: Table Stakes or Deal Makes?
Programming Language Platform Growth: Table Stakes or Deal Makes?Programming Language Platform Growth: Table Stakes or Deal Makes?
Programming Language Platform Growth: Table Stakes or Deal Makes?
Edward Burns
 
Building a Serverless State Service for the Cloud
Building a Serverless State Service for the CloudBuilding a Serverless State Service for the Cloud
Building a Serverless State Service for the Cloud
Edward Burns
 
JSF 2.3 Adopt-a-JSR 10 Minute Infodeck
JSF 2.3 Adopt-a-JSR 10 Minute InfodeckJSF 2.3 Adopt-a-JSR 10 Minute Infodeck
JSF 2.3 Adopt-a-JSR 10 Minute Infodeck
Edward Burns
 
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute InfodeckServlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Edward Burns
 
JavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth SlidesJavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth Slides
Edward Burns
 
jsf2-composite-components
jsf2-composite-componentsjsf2-composite-components
jsf2-composite-componentsEdward Burns
 
Kids computer-programming
Kids computer-programmingKids computer-programming
Kids computer-programming
Edward Burns
 

More from Edward Burns (20)

DevTalks Romania: Prepare for Jakarta EE 11
DevTalks Romania: Prepare for Jakarta EE 11DevTalks Romania: Prepare for Jakarta EE 11
DevTalks Romania: Prepare for Jakarta EE 11
 
Developer Career Masterplan
Developer Career MasterplanDeveloper Career Masterplan
Developer Career Masterplan
 
Jakarta EE 11 Status Update​
Jakarta EE 11 Status Update​Jakarta EE 11 Status Update​
Jakarta EE 11 Status Update​
 
Sponsored Session: Please touch that dial!
Sponsored Session: Please touch that dial!Sponsored Session: Please touch that dial!
Sponsored Session: Please touch that dial!
 
How modernizing enterprise applications gives you a competitive advantage
How modernizing enterprise applications gives you a competitive advantageHow modernizing enterprise applications gives you a competitive advantage
How modernizing enterprise applications gives you a competitive advantage
 
Wie Azure Jakarta EE Nutzt
Wie Azure Jakarta EE NutztWie Azure Jakarta EE Nutzt
Wie Azure Jakarta EE Nutzt
 
Practical lessons from customers performing digital transformation with Azure
Practical lessons from customers performing digital transformation with AzurePractical lessons from customers performing digital transformation with Azure
Practical lessons from customers performing digital transformation with Azure
 
wls-azure-devnexus-2022.pdf
wls-azure-devnexus-2022.pdfwls-azure-devnexus-2022.pdf
wls-azure-devnexus-2022.pdf
 
Jakarta EE und Microprofile sind bei Azure zu Hause
Jakarta EE und Microprofile sind bei Azure zu HauseJakarta EE und Microprofile sind bei Azure zu Hause
Jakarta EE und Microprofile sind bei Azure zu Hause
 
Java on Your Terms with Azure
Java on Your Terms with AzureJava on Your Terms with Azure
Java on Your Terms with Azure
 
Wars I’ve Seen From Java EE to Spring and more, Azure has you covered
Wars I’ve SeenFrom Java EE to Spring and more, Azure has you coveredWars I’ve SeenFrom Java EE to Spring and more, Azure has you covered
Wars I’ve Seen From Java EE to Spring and more, Azure has you covered
 
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
 
Programming Language Platform Growth: Table Stakes or Deal Makes?
Programming Language Platform Growth: Table Stakes or Deal Makes?Programming Language Platform Growth: Table Stakes or Deal Makes?
Programming Language Platform Growth: Table Stakes or Deal Makes?
 
Programming Language Platform Growth: Table Stakes or Deal Makes?
Programming Language Platform Growth: Table Stakes or Deal Makes?Programming Language Platform Growth: Table Stakes or Deal Makes?
Programming Language Platform Growth: Table Stakes or Deal Makes?
 
Building a Serverless State Service for the Cloud
Building a Serverless State Service for the CloudBuilding a Serverless State Service for the Cloud
Building a Serverless State Service for the Cloud
 
JSF 2.3 Adopt-a-JSR 10 Minute Infodeck
JSF 2.3 Adopt-a-JSR 10 Minute InfodeckJSF 2.3 Adopt-a-JSR 10 Minute Infodeck
JSF 2.3 Adopt-a-JSR 10 Minute Infodeck
 
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute InfodeckServlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
 
JavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth SlidesJavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth Slides
 
jsf2-composite-components
jsf2-composite-componentsjsf2-composite-components
jsf2-composite-components
 
Kids computer-programming
Kids computer-programmingKids computer-programming
Kids computer-programming
 

Recently uploaded

How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Jay Das
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 

Recently uploaded (20)

How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 

JSF 2.2 Input Output JavaLand 2015

  • 1. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I1 JSF 2.2 Input/Output Edward Burns @edburns http://slideshare.net/edburns/ Consulting Member of Staff, Oracle
  • 2. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I2 My plan for your time investment §  How is JSF still relevant? §  JSF 2.3 Plans §  JSF 2.2 Big Ticket Features: in Context –  1055 Stateless Views: Context: Performance –  1090 HTML5 Friendly Markup: Context: Markup Evolution –  730 Flows and 1142 Resource Library Contracts: Context: Multi-tenancy and Modularity
  • 3. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I3 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.
  • 4. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I4 §  JSR 127 –  JSF 1.0 11 March 2004 –  JSF 1.1 27 May 2004 §  JSR 252 –  JSF 1.2 11 May 2006 –  JSF 1.2 Maintenance Release 1 19 December 2006 –  JSF 1.2 Maintenance Release 2 13 June 2008 –  JSF 1.2 Maintenance Release 3 25 August 2008 Where is JSF in its Lifecycle? JSR Timeline §  JSR 314 –  JSF 2.0 1 July 2009 –  JSF 2.1 16 July 2010 –  JSF 2.1 Maintenance Release 2 22 November 2010 §  JSR 344 –  Started 14 April 2011 –  Final June 2013 http://bit.ly/ JavaEE7WrapsUp §  JSR 372 §  Started 22 Sep 2014 §  Final CY 2016
  • 5. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I5 WE STILL NEED WEB APPS THAT ARE QUICK TO BUILD,MAINTAINABLE, LOCALIZABLE, ACCESSIBLE, SECURE, DEVICE INDEPENDENT, GOOD LOOKING, AND ARE FUN TO USE How Can JSF Still Be Relevant? Abstractions Endure
  • 6. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I6 What About the MVC JSR? §  Facelets §  Scopes –  Flash –  View Scope Alignment between JSF and MVC M
  • 7. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I7 § Tie up the loose ends –  Specification clarifications –  CDI alignment §  Ease of use e.g. @Inject FacesContext §  @Inject into Validators, Converters, etc. –  HtmlInputHidden is ClientBehaviorHolder § Small scale new features § Subject to Spec Lead oversight –  JSON ajax component rendering –  Stateless enhancements –  GET enhancements –  Adopt-a-JSR support JSF 2.3 in Java EE 8 Two feature drivers, each with their own agenda M
  • 8. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I8 JSF 2.3 Small Scale New Features §  End of the line for non-CDI managed beans –  Redefine meaning of @javax.faces.bean.ManagedBean to be CDI bean –  Redefine corresponding XML syntax to be CDI bean §  Ajax method invocation –  A Faces request –  Not specific to a view –  Is specific to a ClientWindow –  Returns results in JSON §  Multi-component validation M
  • 9. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I9 My plan for your time investment §  How is JSF still relevant? §  JSF 2.3 New Plans §  Big Ticket Features: in Context –  1055 Stateless Views: Context: Performance –  1090 HTML5 Friendly Markup: Context: Markup Evolution –  730 Flows and 1142 Resource Library Contracts: Context: Multi-tenancy and Modularity
  • 10. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I10 JSF 2.2 Big Ticket Features in Context Issue numbers relative to JSF JIRA http://jsf-spec.java.net/issues/
  • 11. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I11 New to JSF? §  JSF 2.0 was a blockbuster release –  Facelets –  Composite Components –  Ajax –  Resource Libraries 2.0 Big Ticket Feature Review
  • 12. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I12 1055 Stateless JSF §  Kinds of state in a JSF app –  UIComponent state –  Model tier state –  Persistence tier state What is state?
  • 13. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I13 1055 Stateless JSF §  Kinds of state in a JSF app –  UIComponent state –  Model tier state –  Persistence tier state What is state?
  • 14. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I14 1055 Stateless JSF §  Kinds of state in a JSF app –  UIComponent state –  Model tier state –  Persistence tier state §  Context: Stateless is important mostly as performance concern –  See http://bit.ly/LeonardoJsfPerformance Leonardo Uribe’s paper –  Much can be done in the way you use JSF to reduce statefulness What is state?
  • 15. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I15 1055 Stateless JSF §  Leverage existing API §  Biggest gain for smallest change –  Expose existing UIComponent transient property on f:view <f:view transient=“true”> –  Spec changes in Restore View Phase, ResponseStateManager §  Be advised –  Must be on outer-most <f:view> in Facelets inclusion –  View scoped managed beans will not work if the view is marked stateless JSF 2.2 approach to stateless
  • 16. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I16 1055 Stateless JSF §  Automatic state management is a key value-add of JSF –  Differentiates it from RESTful §  Pros –  Can be lazy with your UI, Why is this important?
  • 17. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I17 1090 HTML5 Friendly Markup §  This is a JSF page The best part of Wicket comes to JSF <!DOCTYPE html>! <html xmlns="http://www.w3.org/1999/xhtml"! xmlns:myNS="http://xmlns.jcp.org/jsf”>! <form myNS:id="form">! <input name="textField" type="text" myNS:value="#{bean.text1}" />! <input type="submit" myNS:id="submitButton" value="submit" /> ! <p>submitted text: #{bean.text1}.</p>! </form>! </html>! !
  • 18. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I18 1090 HTML5 Friendly Markup §  JSF Views are written in a View Declaration Language (VDL). §  The standard Facelet VDL is an XML application with two kinds of elements –  HTML Markup –  JSF Components §  HTML Markup is passed through straight to the browser §  JSF Components take some action on the server, during the lifecycle Let’s get back to basics
  • 19. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I19 1090 HTML5 Friendly Markup §  Before JSF 2.2 –  JSF tags hide complexity of underlying HTML+script+css+images –  JSF “Renderer”: §  encode: markup to browser §  decode: name=value from browser <html>… <my:colorPicker value=“#{colorBean.color2}” /> <my:calendar value=“#{calendarBean.date1}” /> </html> §  Context: Missing feature in browser? Write a JSF component. Let the elegance of HTML shine through
  • 20. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I20 1090 HTML5 Friendly Markup §  With JSF 2.2 –  Pure HTML+script+css+images in the JSF page –  JSF Renderer handles decode from browser §  Leverage the strength of the JSF lifecycle §  Leverage the expressiveness of HTML5 <html>… <input type=“color” jsf:value=“#{colorBean.color2}”/> <input type=“date” jsf:value=“#{calendarBean.date1}” /> </html> §  Context: New feature in browser? Use “pass through elements” Let the elegance of HTML shine through
  • 21. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I21 1142 Resource Library Contracts 730 Faces Flows §  Allow composing a JSF app as a collection of modules –  Faces Flows modularize behavior –  Resource Library Contracts modularize appearance §  Well defined contract for each Modularity and Multi-tenant capability
  • 22. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I22 1142 Resource Library Contracts 730 Faces Flows §  Two new concepts in JSF 2.2 –  Resource Library Contract –  Faces Flows What’s going on here? Builds on facelets concepts Builds on navigation concepts
  • 23. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I23 Resource Library Contracts Facelets Review <ui:define name="headline"> Today's News </ui:define> <ui:define name="story"> Facelets is now a part of JSF 2.0... </ui:define> The Facelets Gazette Site Navigation ●Events ●Docs ●Forums About Contact Site Map _template.html template client greeting.html
  • 24. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I24 Resource Library Contracts Facelets Review The Facelets Gazette Site Navigation ●Events ●Docs ●Forums About Contact Site Map Template File name _template.html Insertion points Resources css classes, scripts, images
  • 25. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I25 Resource Library Contracts A Contract is Born • Declared Templates • Declared Insertion Points • Declared Resources contractA
  • 26. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I26 Resource Library Contracts Loading Conventions contractA • Declared Templates • Declared Insertion Points • Declared Resources contractB • Declared Templates • Declared Insertion Points • Declared Resources contractC • Declared Templates • Declared Insertion Points • Declared Resources <web-app-root>/contracts
  • 27. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I27 Resource Library Contracts Loading Conventions contractA • Declared Templates • Declared Insertion Points • Declared Resources contractB • Declared Templates • Declared Insertion Points • Declared Resources contractC • Declared Templates • Declared Insertion Points • Declared Resources <web-app-root>/contracts contractD • Declared Templates • Declared Insertion Points • Declared Resources contractE • Declared Templates • Declared Insertion Points • Declared Resources contractF • Declared Templates • Declared Insertion Points • Declared Resources JAR files in WEB-INF/lib
  • 28. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I28 Resource Library Contracts Loading Conventions contractA • Declared Templates • Declared Insertion Points • Declared Resources contractB • Declared Templates • Declared Insertion Points • Declared Resources contractC • Declared Templates • Declared Insertion Points • Declared Resources <web-app-root>/contracts contractD • Declared Templates • Declared Insertion Points • Declared Resources contractE • Declared Templates • Declared Insertion Points • Declared Resources contractF • Declared Templates • Declared Insertion Points • Declared Resources JAR files in WEB-INF/lib Set of available contracts
  • 29. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I29 Resource Library Contracts Loading Conventions contractA • Declared Templates • Declared Insertion Points • Declared Resources contractB • Declared Templates • Declared Insertion Points • Declared Resources contractC • Declared Templates • Declared Insertion Points • Declared Resources <web-app-root>/contracts contractD • Declared Templates • Declared Insertion Points • Declared Resources contractE • Declared Templates • Declared Insertion Points • Declared Resources contractF • Declared Templates • Declared Insertion Points • Declared Resources JAR files in WEB-INF/lib Set of available contracts Facelet 1 Facelet 3Facelet 2
  • 30. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I30 Resource Library Contracts Loading Configuration contractA • Declared Templates • Declared Insertion Points • Declared Resources contractB • Declared Templates • Declared Insertion Points • Declared Resources contractC • Declared Templates • Declared Insertion Points • Declared Resources <web-app-root>/contracts contractD • Declared Templates • Declared Insertion Points • Declared Resources contractE • Declared Templates • Declared Insertion Points • Declared Resources contractF • Declared Templates • Declared Insertion Points • Declared Resources JAR files in WEB-INF/lib Set of available contracts Facelet 1 Facelet 3Facelet 2 faces-config.xml
  • 31. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I31 Resource Library Contracts Loading Configuration contractA • Declared Templates • Declared Insertion Points • Declared Resources contractB • Declared Templates • Declared Insertion Points • Declared Resources contractC • Declared Templates • Declared Insertion Points • Declared Resources <web-app-root>/contracts contractD • Declared Templates • Declared Insertion Points • Declared Resources contractE • Declared Templates • Declared Insertion Points • Declared Resources contractF • Declared Templates • Declared Insertion Points • Declared Resources JAR files in WEB-INF/lib Set of available contracts Facelet 1 <f:view contracts="contractA"> ... Facelet 3Facelet 2 faces-config.xml
  • 32. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I32 Resource Library Contracts §  Resource Library Contract –  Convention §  Available contracts discovered at startup §  All of them are made available to the application §  Assumes there are no naming collisions –  Configuration §  faces-config.xml <resource-library-contracts> element –  Controls which parts of the app are allowed to use which contracts §  contracts attribute in <f:view> –  Declares that this view is only able to use these named contracts Modular Appearance
  • 33. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I33 Faces Flows Standards are for Standardizing, Not Innovating §  ADF Task Flows §  Spring Web Flow §  Apache MyFaces CODI Architectural Pedigree
  • 34. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I34 Flow Concepts §  Can be “called” from any place in the application §  Single entry point §  Input parameters and return values §  Well defined interface contract –  Internal implementation details hidden §  New flowScoped for flow local storage §  New @FlowScoped CDI annotation: automatic activation/passivation Hint: Think of a flow like a Java method
  • 35. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I35 Flow Navigation §  Navigation is no longer just between pages §  Navigation is now between flow “nodes” §  Information Hiding comes to JSF. Welcome to 1972! §  Multiple node types: –  View –  Method Call –  Switch –  Flow Call –  Flow Return
  • 36. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I36 Flow Navigation §  Flow represented at runtime by instance of javax.faces.flow.Flow §  JSF 2.2 authoring experience –  XML –  Builder
  • 37. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I37 730 Faces Flows 1142 Resource Library Contracts §  Two new concepts in JSF 2.2 –  Resource Library Contract –  Faces Flows §  Each builds on the packaging scheme in JSF 2.0 –  A special directory in the web app root §  /contracts §  /flows –  A special location in the Classpath §  /META-INF /contracts §  /META-INF/flows What’s going on here?
  • 38. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I38 730 Faces Flows 1142 Resource Library Contracts §  Two new concepts in JSF 2.2 –  Resource Library Contract –  Faces Flows §  Each builds on the packaging scheme in JSF 2.0 –  A special directory in the web app root §  /contracts §  /flows –  A special location in the Classpath §  /META-INF /contracts §  /META-INF/flows What’s going on here? Useful during development Useful during deployment } }
  • 39. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I39 Flow Definition §  Name of the flow §  Where does the flow start? §  Input values §  Optional initializer & finalizer
  • 40. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I40 Flow Definition
  • 41. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I41 730 Faces Flows Spec challenge §  Ensuring the feature works well with the existing JSF features –  POSTback based navigation: <h:command{Button,Link}> –  GET based navigation: <h:{button,link}> §  Navigation rules –  Was one level –  Now is a stack –  “return” case was tricky
  • 42. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I42 My plan for your time investment §  How is JSF still relevant? §  Big Ticket Features: in Context –  1055 Stateless Views: Context: Performance –  1090 HTML5 Friendly Markup: Context: Markup Evolution –  730 Flows and 1142 Resource Library Contracts: Context: Multi-tenancy and Modularity §  Other features: Context free
  • 43. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I43 Other Features •  Medium Sized •  Small Sized
  • 44. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I44 Medium Sized Features 1.  1042 ViewActions 2.  869 CSRF protection 3.  949 ClientWindow 4.  802 File Upload 5.  763 CDI injection of JSF artifacts 6.  599 Programmatic Composite Component creation 7.  594, 703 FacesComponent enhancetments 8.  479 UIData implements Collection 9.  1001 Composite and Java components in the same library 10.  533 Programmatic faces-config
  • 45. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I45 1042 ViewActions §  JSF 2.0 introduced <f:metadata> –  Use with <f:viewParam> §  JSF 2.2 introduces <f:viewAction> –  Use inside of <f:metadata> –  Use along side of <f:viewParam> §  Like a button that clicks itself –  Can cause navigation –  Can choose the lifecycle phase §  UIViewAction component sits behind <f:viewAction> tag.
  • 46. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I46 869 Cross Site Request Forgery Protection §  What is Cross Site Request Forgery (CSRF, pronounced SEE-surf)? –  http://en.wikipedia.org/wiki/Cross-site_request_forgery –  Trick the browser into sending requests that the user did not actually intend to initiate JSF Is Not Just for POSTback Anymore
  • 47. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I47 869 Cross Site Request Forgery Protection §  How does JSF protect your app against this attack? 1.  It already does and always has! POSTback is a virture. JSF 2.2 just makes encryption of the view state on by default 2.  New <protected-views> section in faces-config §  View Token –  When rendering a non-POSTback link or button §  Referer [sic] and Origin headers JSF Is Not Just for POSTback Anymore
  • 48. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I48 949 ClientWindow §  JSF finally has framework level support for the many different ways a UIComponent tree can be rooted –  Browser tab –  Browser window –  Browser pop-up –  Portlet –  … §  New class javax.faces.lifecycle.ClientWindow –  A client window is always associated with exactly one UIViewRoot instance at a time, but may display many different UIViewRoots during its lifetime.
  • 49. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I49 949 ClientWindow §  FacesServlet now must call Lifecycle.attachWindow() §  Lifecycle.attachWindow() –  Takes no action unless feature is enabled –  Looks for incoming client window –  Creates one if not present –  Stores it on the ExternalContext How does it work?
  • 50. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I50 802 File Upload Component §  For the benefit of Apache Tomcat users, JSF has always chosen to lag one Servlet version behind the Java EE umbrella spec in which it is included Why so long? Included JSF Version Included Servlet Version Minimum Servlet Version for Included JSF J2EE 1.4 1.1 2.4 2.3 Java EE 5 1.2 2.5 2.4 Java EE 6 2.0 3.0 2.5 Java EE 7 2.2 3.1 3.0
  • 51. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I51 §  Final spec has “Ajax” and non-Ajax support §  “Ajax” can be XHR level 2 or hidden IFRAME <h:inputFile id="file" value="#{fileUploadBean.uploadedFile}"> <f:validator validatorId="FileValidator" /> </h:inputFile> 802 File Upload Component Usage
  • 52. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I52 @ManagedBean @RequestScoped public class FileUploadBean { private Part uploadedFile; // getter/setter public String getFileText() { String text = ""; if (null != uploadedFile) { try { InputStream is = uploadedFile.getInputStream(); text = new Scanner( is ).useDelimiter("A").next(); } catch (IOException ex) {} } return text; } } 802 File Upload Component Usage
  • 53. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I53 @FacesValidator(value="FileValidator") public class FileValidator implements Validator { @Override public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { Part file = (Part) value; try { InputStream is = file.getInputStream(); text = new Scanner( is ).useDelimiter("A").next(); } catch (Exception ex) { throw new ValidatorException(“”, ex); } if (!text.contains("JSR-344")) { throw new ValidatorException(new FacesMessage("Invalid file”); } }   802 File Upload Component Usage
  • 54. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I54 763 CDI Injection of JSF Artifacts §  All Common Annotation and CDI Annotations must work in –  ELResolvers –  Factories –  JSF singletons (ResourceHandler, StateManager, etc) –  ActionListeners
  • 55. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I55 599 Programmatic Component Creation §  Application.createComponent() –  Used to create UIComponent instances given component-family, etc §  ViewDeclarationLanguage.createComponent() –  Used to create UIComponent instances given tag library URI, tag name, and optional attributes –  Equivalent to using the tag in a page –  Designed for use with composite components
  • 56. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I56 594, 703 FacesComponent enhancements §  @FacesComponent added in JSF 2.0 –  Allows declaring a UIComponent to the runtime §  JSF 2.2 adds new attributes (with sensible defaults) –  createTag causes a facelet tag handler to automatically be created –  namespace declares the tag library namespace in which the tag handler will reside –  tagName declares the tag name –  value now has a default behavior
  • 57. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I57 479 UIData supports Collection §  Prior to JSF 2.2, UIData only supported –  Arrays –  java.util.List –  java.sql.ResultSet –  javax.servlet.jsp.jstl.sql.Result §  JSF 2.2 adds –  java.util.Collection
  • 58. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I58 1001 Composite and Regular Components §  Prior to JSF 2.2, was not possible to have both kinds of components in the same tag library §  Now it is. Both in the same tag library
  • 59. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I59 533 Programmatic faces-config §  New class javax.faces.application.ApplicationConfigurationPopulator §  Is a java.util.ServiceLoader service §  Has a populateApplicationConfiguration() method –  Gets passed an “empty” DOM Document –  You can populate it as if it were a regular faces-config.xml file. –  It gets put in with the rest of the discovered faces-config files.
  • 60. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I60 Other Features •  Medium Sized •  Small Sized
  • 61. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I61 Small Sized Features §  1142 “reset button” API §  766 Events from the Flash §  1134 “role” passthrough attribute §  1050 Ajax delay §  1085 httpOnly cookie support
  • 62. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I62 Comments to @edburns
  • 63. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I63 The preceding was intended to outline our general product direction. It was 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.
  • 64. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I64