SlideShare a Scribd company logo
Java EE 8 Web Frameworks
A Look at JavaServer Faces vs MVC
Josh Juneau
About Me
• Member of JSF 2.3 (JSR 372) EG
• Member of JSR 378 (Portlet 3.0 Bridge) EG
• Developer/Analyst/DBA @ Fermilab
• Apress Author
• OTN/Java Magazine Contributor
• Member of CJUG
• Java EE Guardians
Agenda
• Overview of JavaServer Faces & Demo
• Overview of MVC & Demo
• Feature Comparison
• JSF 2.3 Feature Overview
• Java EE 8 Overall Status
MVC Architecture
• Model = Data
• View = UI
• Controller = Business Logic
JavaServer Faces Overview
JavaServer Faces technology establishes the standard
for building server-side user interfaces for Java EE.
• An API for representing UI components and managing
their state; handling events, server-side validation, and
data conversion; defining page navigation; supporting
internationalization and accessibility; and providing
extensibility for all these features
• JavaServer Faces (JSF) custom tag libraries for
expressing UI components within a view and for wiring
components to server-side objects
JavaServer Faces Overview
The well-defined programming model and tag libraries
significantly ease the burden of building and maintaining web
applications with server-side UIs. With minimal effort, you can:
• Drop components onto a page by adding component tags
• Wire component-generated events to server-side application
code
• Bind UI components on a page to server-side data
• Construct a UI with reusable and extensible components
• Save and restore UI state beyond the life of server requests
JSF Models
Data tier to work with entity classes (POJOs that
map to database tables) to work with the
underlying database from within a Java EE
application.
• EJBs…no…not J2EE!!!!
• JAX-RS
JSF Views
• Tree of Components
• Facelets or HTML
• Expression Language
• Mix with JSTL and other tab libraries, as needed
• Component Libraries
JSF Views
JSF Data Validation
• Bean Validation
• Faces Validator
JSF Controllers
• Business logic - FacesServlet
• CDI Scopes…No More JSF @ManagedBean
• SessionScoped, ApplicationScoped,
ViewScoped, RequestScoped,
ConversationScoped, FlowScoped,
Dependent, Singleton
• Contextual…State Managed Across Requests
JSF Typical Form Submit
Procedure
• User completes form entry by populating form
components.
• User clicks a commandButton, which invokes a
server-side method, and the CDI bean values
are submitted to FacesServlet for processing.
• Action method performs its work and then
returns control to FacesServlet for navigation.
JSF Lifecycle
• Restore View Phase
• Apply Request Values Phase
• Process Validations Phase
• Update Model Values Phase
• Invoke Application Phase
• Render Response Phase
JSF Lifecycle
JSF Ajax Support
• f:ajax for invoking server-side functionality
• Many third-party UI frameworks
JSF
JSF in Action!
JSR 371: MVC 1.0
https://ozark.java.net/
• Action-oriented framework layered on top of JAX-RS
• Manual controller logic…you control your own destiny!
• No UI Components
• You choose your front end technology
MVC 1.0
Models
Utilize entity classes for data, or store into CDI bean
Two ways to work with models:
• javax.mvc.Models class
• CDI-Based Models
MVC 1.0
Views
ViewEngine Used to Merge Model and View
• Utilize a number of different view technologies
• Ozark Ships with 3 Implementations
• Views reside within WEB-INF/views folder
MVC 1.0
Views
MVC 1.0
Validating Data
• Manual Validation
• Bean Validation
MVC 1.0
Controllers
• Controls the request-processing for an MVC
application.
• JAX-RS Implementation
• Class annotated with @Controller either at class level
or method level.
• Must be CDI Managed
• Possible to create hybrid classes (@Controller at
method level)
MVC 1.0
Controllers
• Four return types: String, void, Response, Viewable
• String: returns path to view
• void: requires @javax.mvc.View annotation
• Response: typical javax.ws.rs.core.Response, providing
access to the response
• Viewable: javax.mvc.Viewable containing information ab
the view and how to process
• Default response type text/html, but can be modified with
@Produces
MVC 1.0
Controllers
MVC 1.0
Views to Controllers - Parameters
Parameters handled via annotations in Controller:
• @PathParam: Used to extract path parameters
• @FormParam: Used to process fields from form
• @QueryParam: Used when parameters appended to
URL
• @BeanParam: Used to inject various request
parameters into a bean
MVC 1.0
Views - Redirecting Responses
• JAX-RS
return
Response.seeOther(URI.create(“redirectView”)).build()
• MVC
return “redirect:redirectView”
@RedirectScoped Annotation
• Bean will span at most two requests
• Must be Serializable
MVC 1.0
Exception Handling
• Can be applied via try/catch at method level or
globally
return Response.status(BAD_REQUEST).entity("error.jsp").build();
• ExceptionMapper class
MVC 1.0
Security
• Utilize ${mvc.csrf.name} and ${mvc.csrf.token} in
form
• javax.mvc.security.CsrfProtection property
• @CsrfValid Annotation at Method Level
MVC 1.0
MVC in Action!
JSF or MVC?
JSF MVC
• Component Based
• Controller Logic
Automates Processing
• Facelets
• Rapid Development
• Works well with REST
• Stateful…remains across
requests
• Action Based
• Layered on Top of JAX-RS
• Manual Validations/
Conversions
• Many Different View Options
• Fine Control Request/
Response
• Great fit for REST
• No State Across Requests
JSR 372: JSF 2.3
Not forgotten with Java EE 8
While scope of update is not very large, new features
and enhancements will help continue making JSF
relevant in today’s world.
Thanks to the OmniFaces folks for adding a number of
features to JSF.
JSF 2.3 in Java EE 8
• Two feature drivers: Oracle & Community
• Feature clean-up
• Small new feature set based upon community requests
• Mature standard for building Java EE applications
JSF 2.3 - Oracle Focus
Tie up loose ends:
• Specification clarifications
• CDI Alignment
• Others
Small Scale New Features:
• CDI Managed Beans Only
• Ajax Method Invocation
• Multi-component Validation
JSF 2.3 - Community Focus
• JSON Ajax Component Rendering
• Stateless enhancements
• GET Enhancements
• Push Support
JSF 2.3 New Features
(Implemented)
• Inject ViewMap
@ViewMap
@Inject
Map viewMap;
• Inject UiViewRoot
@Inject
UIViewRoot viewRoot;
• #1332 - Let CDI handle #{view}
• #1331 - Let CDI handle #{application}
• #1254 - contracts attribute too restrictive.
JSF 2.3 New Features
(Implemented - ctd)
• #1328 - Let CDI handle #{session} EL resolving
• #1325 - Let CDI handle #{applicationScope}
• #1311 - Let CDI handle #{facesContext} EL resolving
• #1323 - Support @Inject for the applicationMap
@ApplicationMap
@Inject
Map applicationMap;
• #1322 - Simplify #{externalContext} to use
ExternalContextProducer
JSF 2.3 New Features
(Implemented - ctd)
• #1309 - Support @Inject for ExternalContext
@Inject ExternalContext externalContext;
• #527 - Support @Inject for FacesContext
@Inject FacesContext facesContext;
• javax.faces.bean.ManagedProperty Replacement
JSF 2.3 New Features
(Implemented - ctd)
• #1396 - f:socket for SSE and WebSocket
http://jj-blogger.blogspot.com/2016/02/a-look-at-
upcoming-jsf-23-push-support.html
Learn More
What Is The CJUG?
Chicago Java Users Group is dedicated to the
helping you learn and network.
• Technology community second to none.
• Learn and contribute to Java / JVM ecosystem
• Mentorship and career opportunities
• Have fun and build cool things
Java EE Guardians
Join us and help move Java EE into the future!
Contact
Josh Juneau
- Java EE 7 Recipes
- Introducing Java EE 7
- JavaServer Faces: Introduction By Example
- Java 8 Recipes
Twitter: @javajuneau
Read On!

More Related Content

PDF
Java EE 8 Recipes
PPTX
JSF 2.3: Integration with Front-End Frameworks
PDF
JavaOne 2011: Migrating Spring Applications to Java EE 6
PPTX
Next stop: Spring 4
PDF
Spring Framework
PDF
Java spring framework
PPTX
Java EE 8 Update
ODP
Introduction to Spring Framework and Spring IoC
Java EE 8 Recipes
JSF 2.3: Integration with Front-End Frameworks
JavaOne 2011: Migrating Spring Applications to Java EE 6
Next stop: Spring 4
Spring Framework
Java spring framework
Java EE 8 Update
Introduction to Spring Framework and Spring IoC

What's hot (20)

PDF
Spring MVC Framework
PDF
Spring Framework - Core
PDF
Spring framework
PDF
Spring 4 on Java 8 by Juergen Hoeller
PDF
50 New Features of Java EE 7 in 50 minutes
PDF
Spring 3 MVC CodeMash 2009
PPTX
Spring Framework
PPTX
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
PPT
Java EE Introduction
PPTX
Java EE vs Spring Framework
PPTX
Introduction to Spring Framework
PDF
Java EE 8: On the Horizon
PDF
Java EE 7 - Overview and Status
ODP
Spring Portlet MVC
PDF
Lecture 10 - Java Server Faces (JSF)
PPTX
Spring MVC framework
PPTX
Introduction to Spring Framework
PPT
JSF basics
PPTX
Spring Framework Rohit
PDF
스프링 프레임워크
Spring MVC Framework
Spring Framework - Core
Spring framework
Spring 4 on Java 8 by Juergen Hoeller
50 New Features of Java EE 7 in 50 minutes
Spring 3 MVC CodeMash 2009
Spring Framework
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java EE Introduction
Java EE vs Spring Framework
Introduction to Spring Framework
Java EE 8: On the Horizon
Java EE 7 - Overview and Status
Spring Portlet MVC
Lecture 10 - Java Server Faces (JSF)
Spring MVC framework
Introduction to Spring Framework
JSF basics
Spring Framework Rohit
스프링 프레임워크
Ad

Similar to Java EE 8 Web Frameworks: A Look at JSF vs MVC (20)

PPTX
PPTX
Spring mvc
PDF
Overview of Java EE 6 by Roberto Chinnici at SFJUG
PDF
MVC 1.0 als alternative Webtechnologie
PDF
Utilizing JSF Front Ends with Microservices
PPTX
Java EE8 - by Kito Mann
PDF
Asp.net mvc basic introduction
PDF
Contextual Dependency Injection for Apachecon 2010
PPTX
Mvc fundamental
PDF
Glassfish JEE Server Administration - JEE Introduction
PPTX
Introduction to j2 ee frameworks
PPTX
Introduction to ASP.Net MVC
PDF
AAI 1713-Introduction to Java EE 7
PDF
AAI-1713 Introduction to Java EE 7
PDF
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
PPTX
MVC 6 - the new unified Web programming model
PPTX
MERN_Stack_Project_Tracking_System.pptx.
PPTX
MVC + ORM (with project implementation)
PPTX
Getting started with MVC 5 and Visual Studio 2013
PPTX
Engineering the Java Web Application (MVC)
Spring mvc
Overview of Java EE 6 by Roberto Chinnici at SFJUG
MVC 1.0 als alternative Webtechnologie
Utilizing JSF Front Ends with Microservices
Java EE8 - by Kito Mann
Asp.net mvc basic introduction
Contextual Dependency Injection for Apachecon 2010
Mvc fundamental
Glassfish JEE Server Administration - JEE Introduction
Introduction to j2 ee frameworks
Introduction to ASP.Net MVC
AAI 1713-Introduction to Java EE 7
AAI-1713 Introduction to Java EE 7
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
MVC 6 - the new unified Web programming model
MERN_Stack_Project_Tracking_System.pptx.
MVC + ORM (with project implementation)
Getting started with MVC 5 and Visual Studio 2013
Engineering the Java Web Application (MVC)
Ad

More from Josh Juneau (8)

PDF
Migrating to Jakarta EE 10
PDF
Jakarta EE Recipes
PDF
Jakarta EE and MicroProfile Tech Talk
PDF
Jakarta EE and MicroProfile - EclipseCon 2020
PPTX
Jakarta EE 8: Overview of Features
PDF
Lightweight Java EE with MicroProfile
PDF
Java EE 7 Recipes
PDF
Java EE 7 Recipes for Concurrency - JavaOne 2014
Migrating to Jakarta EE 10
Jakarta EE Recipes
Jakarta EE and MicroProfile Tech Talk
Jakarta EE and MicroProfile - EclipseCon 2020
Jakarta EE 8: Overview of Features
Lightweight Java EE with MicroProfile
Java EE 7 Recipes
Java EE 7 Recipes for Concurrency - JavaOne 2014

Recently uploaded (20)

PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
AI in Product Development-omnex systems
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PPT
Introduction Database Management System for Course Database
PDF
System and Network Administration Chapter 2
PDF
top salesforce developer skills in 2025.pdf
PPTX
Introduction to Artificial Intelligence
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PPTX
ai tools demonstartion for schools and inter college
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
Digital Strategies for Manufacturing Companies
PTS Company Brochure 2025 (1).pdf.......
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
VVF-Customer-Presentation2025-Ver1.9.pptx
Navsoft: AI-Powered Business Solutions & Custom Software Development
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
AI in Product Development-omnex systems
Odoo Companies in India – Driving Business Transformation.pdf
How Creative Agencies Leverage Project Management Software.pdf
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Introduction Database Management System for Course Database
System and Network Administration Chapter 2
top salesforce developer skills in 2025.pdf
Introduction to Artificial Intelligence
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
ai tools demonstartion for schools and inter college
2025 Textile ERP Trends: SAP, Odoo & Oracle
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Digital Strategies for Manufacturing Companies

Java EE 8 Web Frameworks: A Look at JSF vs MVC

  • 1. Java EE 8 Web Frameworks A Look at JavaServer Faces vs MVC Josh Juneau
  • 2. About Me • Member of JSF 2.3 (JSR 372) EG • Member of JSR 378 (Portlet 3.0 Bridge) EG • Developer/Analyst/DBA @ Fermilab • Apress Author • OTN/Java Magazine Contributor • Member of CJUG • Java EE Guardians
  • 3. Agenda • Overview of JavaServer Faces & Demo • Overview of MVC & Demo • Feature Comparison • JSF 2.3 Feature Overview • Java EE 8 Overall Status
  • 4. MVC Architecture • Model = Data • View = UI • Controller = Business Logic
  • 5. JavaServer Faces Overview JavaServer Faces technology establishes the standard for building server-side user interfaces for Java EE. • An API for representing UI components and managing their state; handling events, server-side validation, and data conversion; defining page navigation; supporting internationalization and accessibility; and providing extensibility for all these features • JavaServer Faces (JSF) custom tag libraries for expressing UI components within a view and for wiring components to server-side objects
  • 6. JavaServer Faces Overview The well-defined programming model and tag libraries significantly ease the burden of building and maintaining web applications with server-side UIs. With minimal effort, you can: • Drop components onto a page by adding component tags • Wire component-generated events to server-side application code • Bind UI components on a page to server-side data • Construct a UI with reusable and extensible components • Save and restore UI state beyond the life of server requests
  • 7. JSF Models Data tier to work with entity classes (POJOs that map to database tables) to work with the underlying database from within a Java EE application. • EJBs…no…not J2EE!!!! • JAX-RS
  • 8. JSF Views • Tree of Components • Facelets or HTML • Expression Language • Mix with JSTL and other tab libraries, as needed • Component Libraries
  • 10. JSF Data Validation • Bean Validation • Faces Validator
  • 11. JSF Controllers • Business logic - FacesServlet • CDI Scopes…No More JSF @ManagedBean • SessionScoped, ApplicationScoped, ViewScoped, RequestScoped, ConversationScoped, FlowScoped, Dependent, Singleton • Contextual…State Managed Across Requests
  • 12. JSF Typical Form Submit Procedure • User completes form entry by populating form components. • User clicks a commandButton, which invokes a server-side method, and the CDI bean values are submitted to FacesServlet for processing. • Action method performs its work and then returns control to FacesServlet for navigation.
  • 13. JSF Lifecycle • Restore View Phase • Apply Request Values Phase • Process Validations Phase • Update Model Values Phase • Invoke Application Phase • Render Response Phase
  • 15. JSF Ajax Support • f:ajax for invoking server-side functionality • Many third-party UI frameworks
  • 17. JSR 371: MVC 1.0 https://ozark.java.net/ • Action-oriented framework layered on top of JAX-RS • Manual controller logic…you control your own destiny! • No UI Components • You choose your front end technology
  • 18. MVC 1.0 Models Utilize entity classes for data, or store into CDI bean Two ways to work with models: • javax.mvc.Models class • CDI-Based Models
  • 19. MVC 1.0 Views ViewEngine Used to Merge Model and View • Utilize a number of different view technologies • Ozark Ships with 3 Implementations • Views reside within WEB-INF/views folder
  • 21. MVC 1.0 Validating Data • Manual Validation • Bean Validation
  • 22. MVC 1.0 Controllers • Controls the request-processing for an MVC application. • JAX-RS Implementation • Class annotated with @Controller either at class level or method level. • Must be CDI Managed • Possible to create hybrid classes (@Controller at method level)
  • 23. MVC 1.0 Controllers • Four return types: String, void, Response, Viewable • String: returns path to view • void: requires @javax.mvc.View annotation • Response: typical javax.ws.rs.core.Response, providing access to the response • Viewable: javax.mvc.Viewable containing information ab the view and how to process • Default response type text/html, but can be modified with @Produces
  • 25. MVC 1.0 Views to Controllers - Parameters Parameters handled via annotations in Controller: • @PathParam: Used to extract path parameters • @FormParam: Used to process fields from form • @QueryParam: Used when parameters appended to URL • @BeanParam: Used to inject various request parameters into a bean
  • 26. MVC 1.0 Views - Redirecting Responses • JAX-RS return Response.seeOther(URI.create(“redirectView”)).build() • MVC return “redirect:redirectView” @RedirectScoped Annotation • Bean will span at most two requests • Must be Serializable
  • 27. MVC 1.0 Exception Handling • Can be applied via try/catch at method level or globally return Response.status(BAD_REQUEST).entity("error.jsp").build(); • ExceptionMapper class
  • 28. MVC 1.0 Security • Utilize ${mvc.csrf.name} and ${mvc.csrf.token} in form • javax.mvc.security.CsrfProtection property • @CsrfValid Annotation at Method Level
  • 29. MVC 1.0 MVC in Action!
  • 30. JSF or MVC? JSF MVC • Component Based • Controller Logic Automates Processing • Facelets • Rapid Development • Works well with REST • Stateful…remains across requests • Action Based • Layered on Top of JAX-RS • Manual Validations/ Conversions • Many Different View Options • Fine Control Request/ Response • Great fit for REST • No State Across Requests
  • 31. JSR 372: JSF 2.3 Not forgotten with Java EE 8 While scope of update is not very large, new features and enhancements will help continue making JSF relevant in today’s world. Thanks to the OmniFaces folks for adding a number of features to JSF.
  • 32. JSF 2.3 in Java EE 8 • Two feature drivers: Oracle & Community • Feature clean-up • Small new feature set based upon community requests • Mature standard for building Java EE applications
  • 33. JSF 2.3 - Oracle Focus Tie up loose ends: • Specification clarifications • CDI Alignment • Others Small Scale New Features: • CDI Managed Beans Only • Ajax Method Invocation • Multi-component Validation
  • 34. JSF 2.3 - Community Focus • JSON Ajax Component Rendering • Stateless enhancements • GET Enhancements • Push Support
  • 35. JSF 2.3 New Features (Implemented) • Inject ViewMap @ViewMap @Inject Map viewMap; • Inject UiViewRoot @Inject UIViewRoot viewRoot; • #1332 - Let CDI handle #{view} • #1331 - Let CDI handle #{application} • #1254 - contracts attribute too restrictive.
  • 36. JSF 2.3 New Features (Implemented - ctd) • #1328 - Let CDI handle #{session} EL resolving • #1325 - Let CDI handle #{applicationScope} • #1311 - Let CDI handle #{facesContext} EL resolving • #1323 - Support @Inject for the applicationMap @ApplicationMap @Inject Map applicationMap; • #1322 - Simplify #{externalContext} to use ExternalContextProducer
  • 37. JSF 2.3 New Features (Implemented - ctd) • #1309 - Support @Inject for ExternalContext @Inject ExternalContext externalContext; • #527 - Support @Inject for FacesContext @Inject FacesContext facesContext; • javax.faces.bean.ManagedProperty Replacement
  • 38. JSF 2.3 New Features (Implemented - ctd) • #1396 - f:socket for SSE and WebSocket http://jj-blogger.blogspot.com/2016/02/a-look-at- upcoming-jsf-23-push-support.html
  • 40. What Is The CJUG? Chicago Java Users Group is dedicated to the helping you learn and network. • Technology community second to none. • Learn and contribute to Java / JVM ecosystem • Mentorship and career opportunities • Have fun and build cool things
  • 41. Java EE Guardians Join us and help move Java EE into the future!
  • 42. Contact Josh Juneau - Java EE 7 Recipes - Introducing Java EE 7 - JavaServer Faces: Introduction By Example - Java 8 Recipes Twitter: @javajuneau