Jakarta Faces 4.0

The goal of this release is to start addressing a major concern that Faces is dragging along too much weight. This will be done by removing deprecated things. We also intend to continue modernizing by moving more things to CDI. Next to these big ticket items, we plan to add a small amount of features and refine the API.

More specifically: 

Removing deprecated things

* Removing JSP support as a VDL (deprecated since 2.0) - [FACES #1546] ✅

* Removing the native managed beans (deprecated since 2.3) - [FACES #1547] ✅

* Removing references to the native EL (deprecated since 1.2) - [FACES #1548] ✅

* Default "Fakes Faces 2.2"-mode (defaulting to the current version instead) ✅

* Rename "jsf" everywhere to "faces" [FACES #1552] ✅

Continue re-basing on CDI

* CDI events 

* Internal artefacts as CDI beans

* Additional artefacts injectable


* Extensionless views by default [FACES #1508] ✅

* New scope ClientWindowScoped  [FACES #1509] ✅

* Allow redirect via Annotation on action [FACES #1554] ✅

* New lifecycle for REST/REST-like actions [FACES #1580]

* First class support for creating views in Java [FACES #1581] ✅

Extra Features (when time allows, otherwise move to 4.1)

* Simplified API for setting FacesMessages

* Stateless views as global option

* Annotations for various things such as components (replaces/is alternative for bulky taglib registrations)


API enhancements

* StateHelper - Allow a Supplier as defaultValue

* PhaseListener - default methods

* Renderer -  generic/parameterized

* Remove duplicate SessionMap annotation

* API to register custom behavior for a composite


New deprecations

* Full State Saving

The JDK version required will be aligned with Jakarta EE 10.

4.0 issues completed

4.0 issues open



Release Date
Release Type
Major release (API breakage)
This release is part of Jakarta 10
Name Date Description
M1 2021/04/11 Initial milestone with most deprecated things removed
M2 2021/05/11 Second milestone with the action/rest lifecycle present.