SlideShare a Scribd company logo
2015 JavaOne LAD JSF 2.3 & MVC 1.0
2015 JavaOne LAD JSF 2.3 & MVC 1.0
Pick	
  Your	
  Java	
  EE	
  Front	
  End	
  
JavaServer	
  Faces	
  or	
  Model-­‐View-­‐Controller	
  
Manfred	
  Riem	
  
Principal	
  Member	
  of	
  Staff	
  
@mnriem	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
Safe	
  Harbor	
  Statement	
  
The	
  following	
  is	
  intended	
  to	
  outline	
  our	
  general	
  product	
  direcQon.	
  It	
  is	
  intended	
  for	
  
informaQon	
  purposes	
  only,	
  and	
  may	
  not	
  be	
  incorporated	
  into	
  any	
  contract.	
  It	
  is	
  not	
  a	
  
commitment	
  to	
  deliver	
  any	
  material,	
  code,	
  or	
  funcQonality,	
  and	
  should	
  not	
  be	
  relied	
  upon	
  
in	
  making	
  purchasing	
  decisions.	
  The	
  development,	
  release,	
  and	
  Qming	
  of	
  any	
  features	
  or	
  
funcQonality	
  described	
  for	
  Oracle’s	
  products	
  remains	
  at	
  the	
  sole	
  discreQon	
  of	
  Oracle.	
  
4	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
Program	
  Agenda	
  
What	
  is	
  currently	
  available?	
  
JSF	
  2.3	
  
MVC	
  1.0	
  
How	
  to	
  contribute	
  
Closing	
  remarks	
  
1	
  
2	
  
3	
  
4	
  
5	
  
5	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
Program	
  Agenda	
  
What	
  is	
  currently	
  available?	
  
JSF	
  2.3	
  
MVC	
  1.0	
  
How	
  to	
  contribute	
  
Closing	
  remarks	
  
1	
  
2	
  
3	
  
4	
  
5	
  
6	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
What	
  is	
  currently	
  available?	
  
•  Glassfish	
  4.1	
  
– Reference	
  implementaQon	
  of	
  JavaEE	
  7,	
  which	
  includes	
  JSF	
  2.2.	
  
•  WLS	
  12.2.1	
  
– Coming	
  soon	
  
•  Other	
  vendors	
  
– Some	
  have	
  already	
  released	
  
– Some	
  have	
  announced	
  when	
  they	
  are	
  going	
  to	
  be	
  available	
  
7	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
What	
  is	
  currently	
  available	
  (cont.)	
  ?	
  
•  JSF	
  2.2	
  
– Resource	
  library	
  contracts	
  
– Stateless	
  views	
  
– CSRF	
  protecQon	
  
– File	
  upload	
  
– Faces	
  flows	
  
8	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
   9	
  
<f:view	
  contracts=“#{contractBean.contract}”>	
  
	
  
	
  	
  <ui:composition	
  template=“/template.xhtml”>	
  
	
  
	
  	
  	
  	
  <ui:define	
  name=“content”>	
  
	
  	
  	
  	
  	
  	
  main	
  content	
  
	
  	
  	
  	
  </ui:define>	
  
	
  
	
  	
  	
  	
  <ui:define	
  name=“footer”>	
  
	
  	
  	
  	
  	
  	
  footer	
  info	
  
	
  	
  	
  	
  </ui:define>	
  
	
  
	
  	
  </ui:composition>	
  
	
  
</f:view>	
  
JSF	
  2.2	
  Resource	
  library	
  contracts	
  (using	
  HTML	
  page)	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
   10	
  
@SessionScoped	
  
@Named(“contractBean”}	
  
Public	
  class	
  ContractBean	
  {	
  
	
  
	
  	
  	
  private	
  String	
  contract	
  
	
  
	
  	
  	
  public	
  String	
  getContract()	
  {	
  
	
  	
  	
  	
  	
  this.contract	
  =	
  contract;	
  
	
  	
  	
  }	
  
}	
  
JSF	
  2.2	
  Resource	
  library	
  contracts	
  (Java	
  code)	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
JSF	
  2.2	
  Resource	
  library	
  contracts	
  (filesystem	
  layout)	
  
•  contracts	
  
– layout1	
  
•  css	
  
– layout.css	
  
•  header.xhtml	
  
– layout2	
  
•  template.xhtml	
  
11	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
   12	
  
<f:view	
  transient=“true”>	
  
	
  
	
  	
  <ui:composition	
  template=“/template.xhtml”>	
  
	
  
	
  	
  	
  	
  <ui:define	
  name=“content”>	
  
	
  	
  	
  	
  	
  	
  main	
  content	
  
	
  	
  	
  	
  </ui:define>	
  
	
  
	
  	
  	
  	
  <ui:define	
  name=“footer”>	
  
	
  	
  	
  	
  	
  	
  footer	
  info	
  
	
  	
  	
  	
  </ui:define>	
  
	
  
	
  	
  </ui:composition>	
  
	
  
</f:view>	
  
JSF	
  2.2	
  Stateless	
  Views	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
JSF	
  2.2	
  Stateless	
  Views	
  (cont.)	
  
•  A	
  view	
  is	
  considered	
  stateless	
  if	
  the	
  transient	
  adribute	
  is	
  set	
  to	
  true,	
  
however:	
  
– Stateless	
  means	
  that	
  NO	
  view	
  state	
  will	
  be	
  kept	
  
– CDI	
  /	
  JSF	
  managed	
  beans	
  can	
  sQll	
  exist	
  
– View	
  scoped	
  beans	
  acts	
  like	
  Request	
  scoped	
  beans	
  
13	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
JSF	
  2.2	
  Faces	
  Flows	
  
•  A	
  flow	
  is	
  a	
  collecQon	
  of	
  resources	
  that	
  represent	
  a	
  specific	
  flow	
  of	
  pages,	
  it	
  
can	
  contain	
  or	
  use:	
  
– HTML	
  files	
  
– CSS	
  files	
  
– Java	
  Beans	
  
– Resource	
  Library	
  contracts	
  
14	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
   15	
  
<f:view>	
  
	
  
	
  	
  <h:form	
  enctype=“multipart/form-­‐data”>	
  
	
  	
  
	
  <h:inputFile	
  value=“#{fileUploadBean.uploadedFile}”>	
  
	
  </h:inputFile>	
  
	
  
	
  <h:commandButton	
  value=“Submit”/>	
  
	
  
	
  	
  </h:form>	
  
	
  
</f:view>	
  
	
  
JSF	
  2.2	
  File	
  Upload	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
   16	
  
@RequestScoped	
  
@Named(“fileUploadBean”}	
  
Public	
  class	
  FileUploadBean	
  {	
  
	
  	
  
	
  	
  	
  	
  private	
  Part	
  uploadedFile;	
  
	
  
	
  	
  	
  	
  public	
  Part	
  getUploadedFile()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  uploadedFile;	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  void	
  setUploadedFile(Part	
  uploadedFile)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  this.uploadedFile	
  =	
  uploadedFile;	
  
	
  	
  	
  	
  }	
  
}	
  
JSF	
  2.2	
  File	
  Upload	
  (Java	
  code)	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
Program	
  Agenda	
  
What	
  is	
  currently	
  available?	
  
JSF	
  2.3	
  
MVC	
  1.0	
  
How	
  to	
  contribute	
  
QuesQons	
  and	
  Answers	
  
1	
  
2	
  
3	
  
4	
  
5	
  
17	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
What	
  is	
  on	
  the	
  table	
  for	
  JSF	
  2.3?	
  
•  Tie	
  up	
  the	
  loose	
  ends	
  
– SpecificaQon	
  clarificaQons	
  
– CDI	
  alignment	
  
•  Ease	
  of	
  use	
  e.g.	
  @Inject	
  FacesContext	
  
•  @Inject	
  into	
  Validators,	
  Converters,	
  etc.	
  
– HtmlInputHidden	
  is	
  
ClientBehaviorHolder	
  
•  Small	
  scale	
  new	
  features	
  
•  JSON	
  ajax	
  component	
  rendering	
  
•  Stateless	
  enhancements	
  
•  GET	
  enhancements	
  
•  Adopt-­‐a-­‐JSR	
  
18	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
   19	
  
@FacesConverter(forClass	
  =	
  InjectConverterItem.class,	
  managed	
  =	
  true)	
  
public	
  class	
  InjectConverter	
  implements	
  Converter	
  {	
  
	
  
	
  	
  	
  	
  public	
  InjectConverter()	
  {	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  @Override	
  
	
  	
  	
  	
  public	
  Object	
  getAsObject(FacesContext	
  context,	
  UIComponent	
  component,	
  String	
  value)	
  	
  	
  	
  	
  
	
  	
  	
  	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  value;	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  @Override	
  
	
  	
  	
  	
  public	
  String	
  getAsString(FacesContext	
  context,	
  UIComponent	
  component,	
  Object	
  value)	
  	
  
	
  	
  	
  	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  value.toString();	
  
	
  	
  	
  	
  }	
  
}	
  
JSF	
  2.3	
  Converter	
  injecQon	
  (CDI	
  managed	
  converter)	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
   20	
  
@FacesValidator(value	
  =	
  "injectValidator",	
  isDefault	
  =	
  false,	
  managed	
  =	
  true)	
  
public	
  class	
  InjectValidator	
  implements	
  Validator	
  {	
  
	
  
	
  	
  	
  	
  public	
  InjectValidator()	
  {	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  @Override	
  
	
  	
  	
  	
  public	
  void	
  validate(FacesContext	
  context,	
  UIComponent	
  component,	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Object	
  value)	
  throws	
  ValidatorException	
  {	
  
	
  	
  	
  	
  }	
  
}	
  
	
  
JSF	
  2.3	
  Validator	
  injecQon	
  (CDI	
  managed	
  converter)	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
   21	
  
@Named(value	
  =	
  "injectSessionMapBean")	
  
@ApplicationScoped	
  
public	
  class	
  InjectSessionMap2Bean	
  implements	
  Serializable	
  {	
  
	
  
	
  	
  	
  	
  @Inject	
  
	
  	
  	
  	
  @SessionMap	
  
	
  	
  	
  	
  private	
  Map<String,	
  Object>	
  sessionMap;	
  
	
  
	
  	
  	
  	
  public	
  String	
  getValue()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  sessionMap.put("key",	
  "value");	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  sessionMap.toString();	
  
	
  	
  	
  	
  }	
  
}	
  
	
  
JSF	
  2.3	
  Session	
  Map	
  injecQon	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
   22	
  
@Named(value="injectFacesContextBean")	
  
@RequestScoped	
  
public	
  class	
  InjectFacesContextBean	
  {	
  
	
  
	
  	
  	
  	
  @Inject	
  
	
  	
  	
  	
  FacesContext	
  context;	
  
	
  
	
  	
  	
  	
  public	
  String	
  getValue()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  context.toString();	
  
	
  	
  	
  	
  }	
  
}	
  
	
  
JSF	
  2.3	
  Faces	
  Context	
  injecQon	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
JSF	
  2.3	
  Other	
  EG	
  contribuQons	
  
•  Support	
  for	
  more	
  data	
  types	
  on	
  ui:repeat	
  and	
  h:dataTable	
  
•  @FacesDataModel	
  allow	
  generic	
  types	
  
•  Your	
  contribuQon?	
  
Some	
  done,	
  some	
  in	
  progress	
  
23	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
Program	
  Agenda	
  
What	
  is	
  currently	
  available?	
  
JSF	
  2.3	
  
MVC	
  1.0	
  
How	
  to	
  contribute	
  
Closing	
  remarks	
  
1	
  
2	
  
3	
  
4	
  
5	
  
24	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
Where	
  are	
  we	
  at?	
  
•  The	
  first	
  Early	
  Dran	
  has	
  been	
  published	
  
•  Our	
  first	
  Milestone	
  release	
  is	
  available	
  
•  Our	
  road	
  map	
  is	
  aligning	
  with	
  the	
  JavaEE	
  8	
  roadmap	
  
•  We	
  are	
  requiring	
  JAX-­‐RS	
  as	
  we	
  build	
  on	
  top	
  of	
  it	
  
•  We	
  are	
  requiring	
  Java	
  8	
  
•  We	
  have	
  integrated	
  mulQple	
  contribuQons	
  from:	
  
– our	
  EG	
  members	
  	
  
– external	
  contributors	
  
	
  
25	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
   26	
  
@Path("book")	
  
public	
  class	
  BookController	
  {	
  
	
  	
  	
  	
  	
  
	
  	
  	
  	
  @Inject	
  
	
  	
  	
  	
  private	
  Catalog	
  catalog;	
  
	
  
	
  	
  	
  	
  @Inject	
  
	
  	
  	
  	
  private	
  Models	
  models;	
  
	
  
	
  	
  	
  	
  @GET	
  
	
  	
  	
  	
  @Controller	
  
	
  	
  	
  	
  @Produces("text/html")	
  
	
  	
  	
  	
  @Path("view1/{id}")	
  
	
  	
  	
  	
  public	
  String	
  view1(@PathParam("id")	
  String	
  id)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  models.put("book",	
  catalog.getBook(id));	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  "book.xhtml";	
  
	
  	
  	
  	
  }	
  
}	
  
	
  
MVC	
  1.0	
  Controller	
  example	
  (Controller	
  code)	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
   27	
  
public	
  class	
  Book	
  {	
  
	
  
	
  	
  	
  	
  private	
  String	
  title;	
  
	
  
	
  	
  	
  	
  public	
  String	
  getTitle()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  title;	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  void	
  setTitle(String	
  title)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  this.title	
  =	
  title;	
  
	
  	
  	
  	
  }	
  
}	
  
MVC	
  1.0	
  Controller	
  example	
  (Book	
  class)	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
   28	
  
<html	
  xmlns:h=http://xmlns.jcp.org/jsf/html>	
  
...	
  	
  
	
  
	
  	
  <h1>Book	
  information</h1>	
  
	
  	
  <p>#{book.title}</p>	
  
	
  
	
  
...	
  
</html>	
  
	
  	
  	
  
MVC	
  1.0	
  Controller	
  example	
  (HTML	
  page)	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
Standard	
  ViewEngines	
  
•  JSP	
  
•  Facelets	
  
29	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
ViewEngine	
  contribuQons,	
  supported	
  by	
  community	
  
•  AsciiDoc	
  
•  Freemarker	
  
•  Handlebars	
  
•  JSR	
  223	
  
– Groovy	
  
– Nashorn	
  
•  Mustache	
  
•  Thymeleaf	
  
•  Velocity	
  
30	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
Enabling	
  ViewEngine	
  extensions	
  
•  Maven	
  users	
  include	
  the	
  extension	
  dependency	
  
– E.g.	
  for	
  Velocity	
  
•  	
  <dependency>	
  
	
  <groupId>com.oracle.ozark.ext</groupId>	
  
	
  <arQfactId>ozark-­‐velocity</arQfactId>	
  
	
  <version>x.y.z</version>	
  
	
  <scope>compile</scope>	
  
</dependency>	
  
•  Use	
  the	
  correct	
  extension	
  for	
  the	
  enabled	
  view	
  engine	
  
– E.g.	
  for	
  Velocity	
  
•  Velocity	
  have	
  a	
  .vm	
  extension	
  
•  Non-­‐maven	
  users	
  have	
  to	
  include	
  the	
  JARs	
  manually	
  
31	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
Program	
  Agenda	
  
What	
  is	
  currently	
  available?	
  
JSF	
  2.3	
  
MVC	
  1.0	
  
How	
  to	
  contribute	
  
Closing	
  remarks	
  
1	
  
2	
  
3	
  
4	
  
5	
  
32	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
How	
  to	
  contribute	
  to	
  JSF	
  2.3	
  
•  Join	
  the	
  users@jsf-­‐spec.java.net	
  mailing	
  list	
  and	
  comment	
  
•  ParQcipate	
  in	
  the	
  Adopt-­‐a-­‐JSR	
  program	
  (JUGs)	
  
•  	
  Test	
  out	
  milestones	
  /	
  snapshots	
  from	
  the	
  RI	
  website	
  	
  
(hdp://javaserverfaces.java.net)	
  and	
  file	
  issues	
  if	
  something	
  is	
  not	
  working	
  
•  Tweet,	
  blog,	
  socialize	
  to	
  raise	
  awareness	
  about	
  JSF	
  2.3	
  
•  Contribute	
  substanQal	
  code	
  
– Step	
  1	
  –	
  Write	
  the	
  code	
  
– Step	
  2	
  –	
  Sign	
  the	
  OCA	
  (Oracle	
  Contributor	
  Agreement)	
  
– Step	
  3	
  –	
  See	
  your	
  contribuQon	
  be	
  accepted	
  and	
  see	
  a	
  tweet	
  announcing	
  it!	
  
33	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
How	
  to	
  contribute	
  to	
  MVC	
  1.0	
  
•  Join	
  the	
  users@mvc-­‐spec.java.net	
  mailing	
  list	
  and	
  comment	
  
•  ParQcipate	
  in	
  the	
  Adopt-­‐a-­‐JSR	
  program	
  (JUGs)	
  
•  	
  Test	
  out	
  milestones	
  /	
  snapshots	
  from	
  the	
  RI	
  website	
  	
  
(hdp://ozark.java.net)	
  and	
  file	
  issues	
  if	
  something	
  is	
  not	
  working	
  
•  Tweet,	
  blog,	
  socialize	
  to	
  raise	
  awareness	
  about	
  MVC	
  1.0	
  
•  Contribute	
  substanQal	
  code	
  
– Step	
  1	
  –	
  Write	
  the	
  code	
  
– Step	
  2	
  –	
  Sign	
  the	
  OCA	
  (Oracle	
  Contributor	
  Agreement)	
  
– Step	
  3	
  –	
  See	
  your	
  contribuQon	
  be	
  accepted	
  and	
  see	
  a	
  tweet	
  announcing	
  it!	
  
34	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
Program	
  Agenda	
  
What	
  is	
  currently	
  available?	
  
JSF	
  2.3	
  
MVC	
  1.0	
  
How	
  to	
  contribute	
  
Closing	
  remarks	
  
1	
  
2	
  
3	
  
4	
  
5	
  
35	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
Closing	
  remarks	
  
•  Picking	
  JSF	
  or	
  MVC	
  is	
  a	
  mader	
  of	
  choice,	
  but	
  please	
  consider	
  this	
  
– JSF	
  	
  
•  Availability	
  of	
  JSF	
  component	
  frameworks	
  which	
  allow	
  you:	
  
– 	
  to	
  deliver	
  a	
  consistent	
  UI	
  across	
  department	
  
– 	
  foster	
  re-­‐use	
  of	
  components	
  
•  Complexity	
  of	
  rendering	
  is	
  hidden	
  from	
  the	
  user	
  
– MVC	
  	
  
•  Standardize	
  an	
  acQon/controller	
  based	
  approach	
  
•  Stays	
  out	
  of	
  your	
  way	
  with	
  respect	
  to	
  rendering	
  	
  
•  Lots	
  of	
  ViewEngines	
  available,	
  new	
  ones	
  easy	
  to	
  integrate	
  
•  JSF	
  and	
  MVC	
  are	
  complementary	
  to	
  each	
  other	
  and	
  they	
  can	
  co-­‐exist!	
  
36	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |	
  
Safe	
  Harbor	
  Statement	
  
The	
  preceding	
  is	
  intended	
  to	
  outline	
  our	
  general	
  product	
  direcQon.	
  It	
  is	
  intended	
  for	
  
informaQon	
  purposes	
  only,	
  and	
  may	
  not	
  be	
  incorporated	
  into	
  any	
  contract.	
  It	
  is	
  not	
  a	
  
commitment	
  to	
  deliver	
  any	
  material,	
  code,	
  or	
  funcQonality,	
  and	
  should	
  not	
  be	
  relied	
  upon	
  
in	
  making	
  purchasing	
  decisions.	
  The	
  development,	
  release,	
  and	
  Qming	
  of	
  any	
  features	
  or	
  
funcQonality	
  described	
  for	
  Oracle’s	
  products	
  remains	
  at	
  the	
  sole	
  discreQon	
  of	
  Oracle.	
  
37	
  
2015 JavaOne LAD JSF 2.3 & MVC 1.0

More Related Content

PPTX
JSF 2.2
PPTX
Best Practices for JSF, Gameduell 2013
PDF
Burns jsf-confess-2015
PPTX
JavaFX 2 Using the Spring Framework
PPTX
Java ee7 1hour
PPSX
Spring - Part 1 - IoC, Di and Beans
PDF
JSF 2.2 Input Output JavaLand 2015
PPT
GlassFish BOF
JSF 2.2
Best Practices for JSF, Gameduell 2013
Burns jsf-confess-2015
JavaFX 2 Using the Spring Framework
Java ee7 1hour
Spring - Part 1 - IoC, Di and Beans
JSF 2.2 Input Output JavaLand 2015
GlassFish BOF

What's hot (20)

ODP
Spring Portlet MVC
PDF
Spring Web Service, Spring JMS, Eclipse & Maven tutorials
PDF
Java EE 7 from an HTML5 Perspective, JavaLand 2015
PPTX
Java EE vs Spring Framework
PPT
Spring MVC
PPTX
Ed presents JSF 2.2 and WebSocket to Gameduell.
PDF
Java EE 8 Web Frameworks: A Look at JSF vs MVC
PPTX
Whats Next for JCA?
PPTX
JSR 236 Concurrency Utils for EE presentation for JavaOne 2013 (CON7948)
PPT
Java EE 6 & Spring: A Lover's Quarrel
PPTX
JavaOne - 10 Tips for Java EE 7 with PrimeFaces
PPSX
Spring - Part 3 - AOP
PPTX
Ed presents JSF 2.2 at a 2013 Gameduell Tech talk
PPT
Java EE and Spring Side-by-Side
PDF
Java EE 8: On the Horizon
PDF
Testdrive AngularJS with Spring 4
PDF
Java EE 7 and HTML5: Developing for the Cloud
PDF
50 New Features of Java EE 7 in 50 minutes
DOCX
Brouchure
PPTX
JavaFX 2 - A Java Developer's Guide (San Antonio JUG Version)
Spring Portlet MVC
Spring Web Service, Spring JMS, Eclipse & Maven tutorials
Java EE 7 from an HTML5 Perspective, JavaLand 2015
Java EE vs Spring Framework
Spring MVC
Ed presents JSF 2.2 and WebSocket to Gameduell.
Java EE 8 Web Frameworks: A Look at JSF vs MVC
Whats Next for JCA?
JSR 236 Concurrency Utils for EE presentation for JavaOne 2013 (CON7948)
Java EE 6 & Spring: A Lover's Quarrel
JavaOne - 10 Tips for Java EE 7 with PrimeFaces
Spring - Part 3 - AOP
Ed presents JSF 2.2 at a 2013 Gameduell Tech talk
Java EE and Spring Side-by-Side
Java EE 8: On the Horizon
Testdrive AngularJS with Spring 4
Java EE 7 and HTML5: Developing for the Cloud
50 New Features of Java EE 7 in 50 minutes
Brouchure
JavaFX 2 - A Java Developer's Guide (San Antonio JUG Version)
Ad

Viewers also liked (7)

PPTX
Decoupling shared code with state that needs to cleared in between uses
PDF
PDF What's new with JSF 2.0
PPT
What's new and exciting with JSF 2.0
PPT
JSF (ADF) Case Studies Presentation
PDF
JSF (ADF) Case Studies Paper
PPTX
Introduction to jsf 2
PPTX
Libraries Yes! Place-based Advocacy campaign
Decoupling shared code with state that needs to cleared in between uses
PDF What's new with JSF 2.0
What's new and exciting with JSF 2.0
JSF (ADF) Case Studies Presentation
JSF (ADF) Case Studies Paper
Introduction to jsf 2
Libraries Yes! Place-based Advocacy campaign
Ad

Similar to 2015 JavaOne LAD JSF 2.3 & MVC 1.0 (20)

PDF
JavaOne2015報告会 in Okinawa
PDF
Marcin Szałowicz - MySQL Workbench
PPTX
Apic dc api deep dive
PDF
MVC 1.0 / JSR 371
PDF
JDK 10 Java Module System
PPTX
Interactive Java Support to your tool -- The JShell API and Architecture
PDF
112815 java ee8_davidd
PDF
Spring Boot Loves K8s
PDF
Batch Applications for the Java Platform
PDF
OTN Tour 2013: What's new in java EE 7
PPTX
DevRock #01 What's new ASP.net 5
PPTX
DesktopApps.pptx
PDF
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
PDF
20160123 java one2015_feedback @ Osaka
PDF
JavaOne 2014 BOF4241 What's Next for JSF?
PDF
Newfeaturesincontext 130911052709-phpapp01
PDF
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
PPTX
JavaFX and JEE 7
PDF
What's new for Apache Flink's Table & SQL APIs?
PDF
Spring mvc
JavaOne2015報告会 in Okinawa
Marcin Szałowicz - MySQL Workbench
Apic dc api deep dive
MVC 1.0 / JSR 371
JDK 10 Java Module System
Interactive Java Support to your tool -- The JShell API and Architecture
112815 java ee8_davidd
Spring Boot Loves K8s
Batch Applications for the Java Platform
OTN Tour 2013: What's new in java EE 7
DevRock #01 What's new ASP.net 5
DesktopApps.pptx
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
20160123 java one2015_feedback @ Osaka
JavaOne 2014 BOF4241 What's Next for JSF?
Newfeaturesincontext 130911052709-phpapp01
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
JavaFX and JEE 7
What's new for Apache Flink's Table & SQL APIs?
Spring mvc

Recently uploaded (20)

PPTX
Big Data Technologies - Introduction.pptx
PDF
Approach and Philosophy of On baking technology
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
MYSQL Presentation for SQL database connectivity
PDF
MIND Revenue Release Quarter 2 2025 Press Release
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
Big Data Technologies - Introduction.pptx
Approach and Philosophy of On baking technology
Dropbox Q2 2025 Financial Results & Investor Presentation
Digital-Transformation-Roadmap-for-Companies.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
Encapsulation_ Review paper, used for researhc scholars
gpt5_lecture_notes_comprehensive_20250812015547.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
Review of recent advances in non-invasive hemoglobin estimation
MYSQL Presentation for SQL database connectivity
MIND Revenue Release Quarter 2 2025 Press Release
The AUB Centre for AI in Media Proposal.docx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Programs and apps: productivity, graphics, security and other tools
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Chapter 3 Spatial Domain Image Processing.pdf

2015 JavaOne LAD JSF 2.3 & MVC 1.0

  • 3. Pick  Your  Java  EE  Front  End   JavaServer  Faces  or  Model-­‐View-­‐Controller   Manfred  Riem   Principal  Member  of  Staff   @mnriem   Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  
  • 4. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   Safe  Harbor  Statement   The  following  is  intended  to  outline  our  general  product  direcQon.  It  is  intended  for   informaQon  purposes  only,  and  may  not  be  incorporated  into  any  contract.  It  is  not  a   commitment  to  deliver  any  material,  code,  or  funcQonality,  and  should  not  be  relied  upon   in  making  purchasing  decisions.  The  development,  release,  and  Qming  of  any  features  or   funcQonality  described  for  Oracle’s  products  remains  at  the  sole  discreQon  of  Oracle.   4  
  • 5. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   Program  Agenda   What  is  currently  available?   JSF  2.3   MVC  1.0   How  to  contribute   Closing  remarks   1   2   3   4   5   5  
  • 6. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   Program  Agenda   What  is  currently  available?   JSF  2.3   MVC  1.0   How  to  contribute   Closing  remarks   1   2   3   4   5   6  
  • 7. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   What  is  currently  available?   •  Glassfish  4.1   – Reference  implementaQon  of  JavaEE  7,  which  includes  JSF  2.2.   •  WLS  12.2.1   – Coming  soon   •  Other  vendors   – Some  have  already  released   – Some  have  announced  when  they  are  going  to  be  available   7  
  • 8. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   What  is  currently  available  (cont.)  ?   •  JSF  2.2   – Resource  library  contracts   – Stateless  views   – CSRF  protecQon   – File  upload   – Faces  flows   8  
  • 9. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   9   <f:view  contracts=“#{contractBean.contract}”>        <ui:composition  template=“/template.xhtml”>            <ui:define  name=“content”>              main  content          </ui:define>            <ui:define  name=“footer”>              footer  info          </ui:define>        </ui:composition>     </f:view>   JSF  2.2  Resource  library  contracts  (using  HTML  page)  
  • 10. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   10   @SessionScoped   @Named(“contractBean”}   Public  class  ContractBean  {          private  String  contract          public  String  getContract()  {            this.contract  =  contract;        }   }   JSF  2.2  Resource  library  contracts  (Java  code)  
  • 11. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   JSF  2.2  Resource  library  contracts  (filesystem  layout)   •  contracts   – layout1   •  css   – layout.css   •  header.xhtml   – layout2   •  template.xhtml   11  
  • 12. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   12   <f:view  transient=“true”>        <ui:composition  template=“/template.xhtml”>            <ui:define  name=“content”>              main  content          </ui:define>            <ui:define  name=“footer”>              footer  info          </ui:define>        </ui:composition>     </f:view>   JSF  2.2  Stateless  Views  
  • 13. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   JSF  2.2  Stateless  Views  (cont.)   •  A  view  is  considered  stateless  if  the  transient  adribute  is  set  to  true,   however:   – Stateless  means  that  NO  view  state  will  be  kept   – CDI  /  JSF  managed  beans  can  sQll  exist   – View  scoped  beans  acts  like  Request  scoped  beans   13  
  • 14. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   JSF  2.2  Faces  Flows   •  A  flow  is  a  collecQon  of  resources  that  represent  a  specific  flow  of  pages,  it   can  contain  or  use:   – HTML  files   – CSS  files   – Java  Beans   – Resource  Library  contracts   14  
  • 15. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   15   <f:view>        <h:form  enctype=“multipart/form-­‐data”>        <h:inputFile  value=“#{fileUploadBean.uploadedFile}”>    </h:inputFile>      <h:commandButton  value=“Submit”/>        </h:form>     </f:view>     JSF  2.2  File  Upload  
  • 16. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   16   @RequestScoped   @Named(“fileUploadBean”}   Public  class  FileUploadBean  {              private  Part  uploadedFile;            public  Part  getUploadedFile()  {                  return  uploadedFile;          }            public  void  setUploadedFile(Part  uploadedFile)  {                  this.uploadedFile  =  uploadedFile;          }   }   JSF  2.2  File  Upload  (Java  code)  
  • 17. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   Program  Agenda   What  is  currently  available?   JSF  2.3   MVC  1.0   How  to  contribute   QuesQons  and  Answers   1   2   3   4   5   17  
  • 18. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   What  is  on  the  table  for  JSF  2.3?   •  Tie  up  the  loose  ends   – SpecificaQon  clarificaQons   – CDI  alignment   •  Ease  of  use  e.g.  @Inject  FacesContext   •  @Inject  into  Validators,  Converters,  etc.   – HtmlInputHidden  is   ClientBehaviorHolder   •  Small  scale  new  features   •  JSON  ajax  component  rendering   •  Stateless  enhancements   •  GET  enhancements   •  Adopt-­‐a-­‐JSR   18  
  • 19. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   19   @FacesConverter(forClass  =  InjectConverterItem.class,  managed  =  true)   public  class  InjectConverter  implements  Converter  {            public  InjectConverter()  {          }            @Override          public  Object  getAsObject(FacesContext  context,  UIComponent  component,  String  value)                  {                  return  value;          }            @Override          public  String  getAsString(FacesContext  context,  UIComponent  component,  Object  value)            {                  return  value.toString();          }   }   JSF  2.3  Converter  injecQon  (CDI  managed  converter)  
  • 20. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   20   @FacesValidator(value  =  "injectValidator",  isDefault  =  false,  managed  =  true)   public  class  InjectValidator  implements  Validator  {            public  InjectValidator()  {          }            @Override          public  void  validate(FacesContext  context,  UIComponent  component,                            Object  value)  throws  ValidatorException  {          }   }     JSF  2.3  Validator  injecQon  (CDI  managed  converter)  
  • 21. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   21   @Named(value  =  "injectSessionMapBean")   @ApplicationScoped   public  class  InjectSessionMap2Bean  implements  Serializable  {            @Inject          @SessionMap          private  Map<String,  Object>  sessionMap;            public  String  getValue()  {                  sessionMap.put("key",  "value");                  return  sessionMap.toString();          }   }     JSF  2.3  Session  Map  injecQon  
  • 22. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   22   @Named(value="injectFacesContextBean")   @RequestScoped   public  class  InjectFacesContextBean  {            @Inject          FacesContext  context;            public  String  getValue()  {                  return  context.toString();          }   }     JSF  2.3  Faces  Context  injecQon  
  • 23. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   JSF  2.3  Other  EG  contribuQons   •  Support  for  more  data  types  on  ui:repeat  and  h:dataTable   •  @FacesDataModel  allow  generic  types   •  Your  contribuQon?   Some  done,  some  in  progress   23  
  • 24. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   Program  Agenda   What  is  currently  available?   JSF  2.3   MVC  1.0   How  to  contribute   Closing  remarks   1   2   3   4   5   24  
  • 25. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   Where  are  we  at?   •  The  first  Early  Dran  has  been  published   •  Our  first  Milestone  release  is  available   •  Our  road  map  is  aligning  with  the  JavaEE  8  roadmap   •  We  are  requiring  JAX-­‐RS  as  we  build  on  top  of  it   •  We  are  requiring  Java  8   •  We  have  integrated  mulQple  contribuQons  from:   – our  EG  members     – external  contributors     25  
  • 26. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   26   @Path("book")   public  class  BookController  {                    @Inject          private  Catalog  catalog;            @Inject          private  Models  models;            @GET          @Controller          @Produces("text/html")          @Path("view1/{id}")          public  String  view1(@PathParam("id")  String  id)  {                  models.put("book",  catalog.getBook(id));                  return  "book.xhtml";          }   }     MVC  1.0  Controller  example  (Controller  code)  
  • 27. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   27   public  class  Book  {            private  String  title;            public  String  getTitle()  {                  return  title;          }            public  void  setTitle(String  title)  {                  this.title  =  title;          }   }   MVC  1.0  Controller  example  (Book  class)  
  • 28. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   28   <html  xmlns:h=http://xmlns.jcp.org/jsf/html>   ...          <h1>Book  information</h1>      <p>#{book.title}</p>       ...   </html>         MVC  1.0  Controller  example  (HTML  page)  
  • 29. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   Standard  ViewEngines   •  JSP   •  Facelets   29  
  • 30. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   ViewEngine  contribuQons,  supported  by  community   •  AsciiDoc   •  Freemarker   •  Handlebars   •  JSR  223   – Groovy   – Nashorn   •  Mustache   •  Thymeleaf   •  Velocity   30  
  • 31. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   Enabling  ViewEngine  extensions   •  Maven  users  include  the  extension  dependency   – E.g.  for  Velocity   •   <dependency>    <groupId>com.oracle.ozark.ext</groupId>    <arQfactId>ozark-­‐velocity</arQfactId>    <version>x.y.z</version>    <scope>compile</scope>   </dependency>   •  Use  the  correct  extension  for  the  enabled  view  engine   – E.g.  for  Velocity   •  Velocity  have  a  .vm  extension   •  Non-­‐maven  users  have  to  include  the  JARs  manually   31  
  • 32. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   Program  Agenda   What  is  currently  available?   JSF  2.3   MVC  1.0   How  to  contribute   Closing  remarks   1   2   3   4   5   32  
  • 33. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   How  to  contribute  to  JSF  2.3   •  Join  the  users@jsf-­‐spec.java.net  mailing  list  and  comment   •  ParQcipate  in  the  Adopt-­‐a-­‐JSR  program  (JUGs)   •   Test  out  milestones  /  snapshots  from  the  RI  website     (hdp://javaserverfaces.java.net)  and  file  issues  if  something  is  not  working   •  Tweet,  blog,  socialize  to  raise  awareness  about  JSF  2.3   •  Contribute  substanQal  code   – Step  1  –  Write  the  code   – Step  2  –  Sign  the  OCA  (Oracle  Contributor  Agreement)   – Step  3  –  See  your  contribuQon  be  accepted  and  see  a  tweet  announcing  it!   33  
  • 34. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   How  to  contribute  to  MVC  1.0   •  Join  the  users@mvc-­‐spec.java.net  mailing  list  and  comment   •  ParQcipate  in  the  Adopt-­‐a-­‐JSR  program  (JUGs)   •   Test  out  milestones  /  snapshots  from  the  RI  website     (hdp://ozark.java.net)  and  file  issues  if  something  is  not  working   •  Tweet,  blog,  socialize  to  raise  awareness  about  MVC  1.0   •  Contribute  substanQal  code   – Step  1  –  Write  the  code   – Step  2  –  Sign  the  OCA  (Oracle  Contributor  Agreement)   – Step  3  –  See  your  contribuQon  be  accepted  and  see  a  tweet  announcing  it!   34  
  • 35. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   Program  Agenda   What  is  currently  available?   JSF  2.3   MVC  1.0   How  to  contribute   Closing  remarks   1   2   3   4   5   35  
  • 36. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   Closing  remarks   •  Picking  JSF  or  MVC  is  a  mader  of  choice,  but  please  consider  this   – JSF     •  Availability  of  JSF  component  frameworks  which  allow  you:   –   to  deliver  a  consistent  UI  across  department   –   foster  re-­‐use  of  components   •  Complexity  of  rendering  is  hidden  from  the  user   – MVC     •  Standardize  an  acQon/controller  based  approach   •  Stays  out  of  your  way  with  respect  to  rendering     •  Lots  of  ViewEngines  available,  new  ones  easy  to  integrate   •  JSF  and  MVC  are  complementary  to  each  other  and  they  can  co-­‐exist!   36  
  • 37. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   Safe  Harbor  Statement   The  preceding  is  intended  to  outline  our  general  product  direcQon.  It  is  intended  for   informaQon  purposes  only,  and  may  not  be  incorporated  into  any  contract.  It  is  not  a   commitment  to  deliver  any  material,  code,  or  funcQonality,  and  should  not  be  relied  upon   in  making  purchasing  decisions.  The  development,  release,  and  Qming  of  any  features  or   funcQonality  described  for  Oracle’s  products  remains  at  the  sole  discreQon  of  Oracle.   37