Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
JavaOne 2014 BOF4241 What's Next for JSF?
What’s 
Next 
for 
JSF? 
BOF4241 
Edward 
Burns 
Manfred 
Riem 
Java 
Community 
Process 
SpecificaGon 
Leads 
Java 
EE 
PlaJorm 
group 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
|
Safe 
Harbor 
Statement 
The 
following 
is 
intended 
to 
outline 
our 
general 
product 
direcGon. 
It 
is 
intended 
for 
informaGon 
purposes 
only, 
and 
may 
not 
be 
incorporated 
into 
any 
contract. 
It 
is 
not 
a 
commitment 
to 
deliver 
any 
material, 
code, 
or 
funcGonality, 
and 
should 
not 
be 
relied 
upon 
in 
making 
purchasing 
decisions. 
The 
development, 
release, 
and 
Gming 
of 
any 
features 
or 
funcGonality 
described 
for 
Oracle’s 
products 
remains 
at 
the 
sole 
discreGon 
of 
Oracle. 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
M
My 
Plan 
for 
Your 
Time 
Investment 
UI 
trends 
What 
does 
this 
mean 
for 
JSF? 
What 
about 
Java 
EE 
8? 
Preserving 
your 
investment 
in 
JSF 
Q&A 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
1 
2 
3 
4 
5 
E
My 
Plan 
for 
Your 
Time 
Investment 
UI 
trends 
What 
does 
this 
mean 
for 
JSF? 
What 
about 
Java 
EE 
8? 
Preserving 
your 
investment 
in 
JSF 
Q&A 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
1 
2 
3 
4 
5 
E
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
E
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Mobile 
First 
Web 
Design 
• Mobile 
is 
now 
more 
important 
than 
desktop 
• What 
kind 
of 
app? 
– Mobile 
Web 
– NaGve 
App 
(Android, 
iOS, 
Windows) 
• Lots 
of 
help 
out 
there 
– twi`er 
bootstrap 
and 
its 
enablers 
E
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
E 
DEPARTMENT 
OF 
STATE
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
E
MEAN 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
E
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
• MongoDB 
• ExpressJS 
• AngularJS 
• Node.js 
E
Oracle’s 
Answer: 
Project 
Avatar 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
E
What 
Does 
All 
This 
Mean 
for 
JSF? 
• Mobile 
– Use 
a 
mobile 
opGmized 
JSF 
component 
library 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
• State 
– Design 
for 
statelessness 
• JavaScript 
– SGll 
held 
at 
arm’s 
length 
– A 
component 
level 
concern 
E
What 
Does 
All 
This 
Mean 
for 
JSF? 
What 
about 
the 
MVC 
JSR? 
UI 
Component 
Oriented 
MVC 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
M
What 
Does 
All 
This 
Mean 
for 
JSF? 
What 
about 
the 
MVC 
JSR? 
AcAon 
Oriented 
MVC 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
M
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
What 
About 
the 
MVC 
JSR? 
Alignment 
between 
JSF 
and 
MVC 
• Facelets 
• Scopes 
– Flow 
– Flash 
– View 
Scope 
M
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
• Tie 
up 
the 
loose 
ends 
– SpecificaGon 
clarificaGons 
– 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
JSF 
2.3 
Small 
Scale 
New 
Features 
• End 
of 
the 
line 
for 
non-­‐CDI 
managed 
beans 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
– Redefine 
meaning 
of 
@javax.faces.bean.ManagedBean 
to 
be 
CDI 
bean 
– Redefine 
corresponding 
XML 
syntax 
to 
be 
CDI 
bean 
• Ajax 
method 
invocaGon 
– A 
Faces 
request 
– Not 
specific 
to 
a 
view 
– Is 
specific 
to 
a 
ClientWindow 
– Returns 
results 
in 
JSON 
• MulG-­‐component 
validaGon 
M
Community 
Corner 
JSF 
Expert 
Group 
Members 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
– Ian 
Hlavats, 
Tarantula 
ConsulGng 
– Kito 
Mann, 
Virtua 
E
Preserving 
Your 
Investment 
In 
JSF 
JSF 
2.2 
New 
Feature 
Recap 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
|
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
JSF 
2.2 
Big 
Ticket 
Features 
• Markup 
EvoluGon 
– 1090 
HTML5 
Friendly 
Markup 
• MulG-­‐tenancy 
and 
Modularity 
– 730 
Flows 
– 1142 
Resource 
Library 
Contracts
1090 
HTML5 
Friendly 
Markup 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
The 
best 
part 
of 
Wicket 
comes 
to 
JSF 
• This 
is 
a 
JSF 
page 
<!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>! 
!
1090 
HTML5 
Friendly 
Markup 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Let 
the 
elegance 
of 
HTML 
shine 
through 
• 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.
1090 
HTML5 
Friendly 
Markup 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Let 
the 
elegance 
of 
HTML 
shine 
through 
• 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”
1142 
Resource 
Library 
Contracts 
730 
Faces 
Flows 
Modularity and Multi-tenant capability 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
• Allow 
composing 
a 
JSF 
app 
as 
a 
collecGon 
of 
modules 
– Faces 
Flows 
modularize 
behavior 
– Resource 
Library 
Contracts 
modularize 
appearance 
• Well 
defined 
contract 
for 
each
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Resource 
Library 
Contracts 
A 
Contract 
is 
Born 
contractA 
• Declared Templates 
• Declared Insertion Points 
• Declared Resources
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Resource 
Library 
Contracts 
Loading 
ConvenGons 
<web-app-root>/contracts 
contractA 
contractB 
• Declared Templates 
• Declared Insertion contractC 
Points 
• Declared Resources 
• Declared Templates 
• Declared Insertion Points 
• Declared Resources 
• Declared Templates 
• Declared Insertion Points 
• Declared Resources
JAR files in WEB-INF/lib 
contractE 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Resource 
Library 
Contracts 
Loading 
ConvenGons 
<web-app-root>/contracts 
contractA 
contractB 
• Declared Templates 
• Declared Insertion contractC 
Points 
• Declared Resources 
• Declared Templates 
• Declared Insertion Points 
• Declared Resources 
• Declared Templates 
• Declared Insertion Points 
• Declared Resources 
contractD 
• Declared Templates 
• Declared Insertion contractF 
Points 
• Declared Resources 
• Declared Templates 
• Declared Insertion Points 
• Declared Resources 
• Declared Templates 
• Declared Insertion Points 
• Declared Resources
<web-app-root>/contracts 
contractB 
contractC 
JAR files in WEB-INF/lib 
faces-config.xml 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Resource 
Library 
Contracts 
Loading 
ConfiguraGon 
contractA 
• Declared Templates 
• Declared Insertion Points 
• Declared Resources 
• Declared Templates 
• Declared Insertion Points 
• Declared Resources 
• Declared Templates 
• Declared Insertion Points 
• Declared Resources 
contractD 
contractE 
• Declared Templates 
• Declared Insertion contractF 
Points 
• Declared Resources 
• Declared Templates 
• Declared Insertion Points 
• Declared Resources 
• Declared Templates 
• Declared Insertion Points 
• Declared Resources 
Set of available contracts 
Facelet 1 
<f:view contracts="contractA"> 
... 
Facelet 2 Facelet 3
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Flow 
NavigaGon 
• NavigaGon 
is 
no 
longer 
just 
between 
pages 
• NavigaGon 
is 
now 
between 
flow 
“nodes” 
• InformaGon 
Hiding 
comes 
to 
JSF. 
Welcome 
to 
1972! 
• MulGple 
node 
types: 
– View 
– Method 
Call 
– Switch 
– Flow 
Call 
– Flow 
Return
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Flow 
DefiniGon 
• Name 
of 
the 
flow 
• Where 
does 
the 
flow 
start? 
• Input 
values 
• OpGonal 
iniGalizer 
& 
finalizer
Safe 
Harbor 
Statement 
The 
preceding 
is 
intended 
to 
outline 
our 
general 
product 
direcGon. 
It 
is 
intended 
for 
informaGon 
purposes 
only, 
and 
may 
not 
be 
incorporated 
into 
any 
contract. 
It 
is 
not 
a 
commitment 
to 
deliver 
any 
material, 
code, 
or 
funcGonality, 
and 
should 
not 
be 
relied 
upon 
in 
making 
purchasing 
decisions. 
The 
development, 
release, 
and 
Gming 
of 
any 
features 
or 
funcGonality 
described 
for 
Oracle’s 
products 
remains 
at 
the 
sole 
discreGon 
of 
Oracle. 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
|
JavaOne 2014 BOF4241 What's Next for JSF?

More Related Content

JavaOne 2014 BOF4241 What's Next for JSF?

  • 2. What’s Next for JSF? BOF4241 Edward Burns Manfred Riem Java Community Process SpecificaGon Leads Java EE PlaJorm group Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 3. Safe Harbor Statement The following is intended to outline our general product direcGon. It is intended for informaGon purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or funcGonality, and should not be relied upon in making purchasing decisions. The development, release, and Gming of any features or funcGonality described for Oracle’s products remains at the sole discreGon of Oracle. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | M
  • 4. My Plan for Your Time Investment UI trends What does this mean for JSF? What about Java EE 8? Preserving your investment in JSF Q&A Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | 1 2 3 4 5 E
  • 5. My Plan for Your Time Investment UI trends What does this mean for JSF? What about Java EE 8? Preserving your investment in JSF Q&A Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | 1 2 3 4 5 E
  • 6. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | E
  • 7. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Mobile First Web Design • Mobile is now more important than desktop • What kind of app? – Mobile Web – NaGve App (Android, iOS, Windows) • Lots of help out there – twi`er bootstrap and its enablers E
  • 8. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | E DEPARTMENT OF STATE
  • 9. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | E
  • 10. MEAN Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | E
  • 11. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • MongoDB • ExpressJS • AngularJS • Node.js E
  • 12. Oracle’s Answer: Project Avatar Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | E
  • 13. What Does All This Mean for JSF? • Mobile – Use a mobile opGmized JSF component library Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • State – Design for statelessness • JavaScript – SGll held at arm’s length – A component level concern E
  • 14. What Does All This Mean for JSF? What about the MVC JSR? UI Component Oriented MVC Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | M
  • 15. What Does All This Mean for JSF? What about the MVC JSR? AcAon Oriented MVC Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | M
  • 16. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | What About the MVC JSR? Alignment between JSF and MVC • Facelets • Scopes – Flow – Flash – View Scope M
  • 17. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • Tie up the loose ends – SpecificaGon clarificaGons – 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
  • 18. JSF 2.3 Small Scale New Features • End of the line for non-­‐CDI managed beans Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | – Redefine meaning of @javax.faces.bean.ManagedBean to be CDI bean – Redefine corresponding XML syntax to be CDI bean • Ajax method invocaGon – A Faces request – Not specific to a view – Is specific to a ClientWindow – Returns results in JSON • MulG-­‐component validaGon M
  • 19. Community Corner JSF Expert Group Members Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | – Ian Hlavats, Tarantula ConsulGng – Kito Mann, Virtua E
  • 20. Preserving Your Investment In JSF JSF 2.2 New Feature Recap Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 21. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | JSF 2.2 Big Ticket Features • Markup EvoluGon – 1090 HTML5 Friendly Markup • MulG-­‐tenancy and Modularity – 730 Flows – 1142 Resource Library Contracts
  • 22. 1090 HTML5 Friendly Markup Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | The best part of Wicket comes to JSF • This is a JSF page <!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>! !
  • 23. 1090 HTML5 Friendly Markup Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Let the elegance of HTML shine through • 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.
  • 24. 1090 HTML5 Friendly Markup Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Let the elegance of HTML shine through • 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”
  • 25. 1142 Resource Library Contracts 730 Faces Flows Modularity and Multi-tenant capability Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • Allow composing a JSF app as a collecGon of modules – Faces Flows modularize behavior – Resource Library Contracts modularize appearance • Well defined contract for each
  • 26. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Resource Library Contracts A Contract is Born contractA • Declared Templates • Declared Insertion Points • Declared Resources
  • 27. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Resource Library Contracts Loading ConvenGons <web-app-root>/contracts contractA contractB • Declared Templates • Declared Insertion contractC Points • Declared Resources • Declared Templates • Declared Insertion Points • Declared Resources • Declared Templates • Declared Insertion Points • Declared Resources
  • 28. JAR files in WEB-INF/lib contractE Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Resource Library Contracts Loading ConvenGons <web-app-root>/contracts contractA contractB • Declared Templates • Declared Insertion contractC Points • Declared Resources • Declared Templates • Declared Insertion Points • Declared Resources • Declared Templates • Declared Insertion Points • Declared Resources contractD • Declared Templates • Declared Insertion contractF Points • Declared Resources • Declared Templates • Declared Insertion Points • Declared Resources • Declared Templates • Declared Insertion Points • Declared Resources
  • 29. <web-app-root>/contracts contractB contractC JAR files in WEB-INF/lib faces-config.xml Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Resource Library Contracts Loading ConfiguraGon contractA • Declared Templates • Declared Insertion Points • Declared Resources • Declared Templates • Declared Insertion Points • Declared Resources • Declared Templates • Declared Insertion Points • Declared Resources contractD contractE • Declared Templates • Declared Insertion contractF Points • Declared Resources • Declared Templates • Declared Insertion Points • Declared Resources • Declared Templates • Declared Insertion Points • Declared Resources Set of available contracts Facelet 1 <f:view contracts="contractA"> ... Facelet 2 Facelet 3
  • 30. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Flow NavigaGon • NavigaGon is no longer just between pages • NavigaGon is now between flow “nodes” • InformaGon Hiding comes to JSF. Welcome to 1972! • MulGple node types: – View – Method Call – Switch – Flow Call – Flow Return
  • 31. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Flow DefiniGon • Name of the flow • Where does the flow start? • Input values • OpGonal iniGalizer & finalizer
  • 32. Safe Harbor Statement The preceding is intended to outline our general product direcGon. It is intended for informaGon purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or funcGonality, and should not be relied upon in making purchasing decisions. The development, release, and Gming of any features or funcGonality described for Oracle’s products remains at the sole discreGon of Oracle. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |