Cleaning up Deprecated Stuff¶
Namespace and Naming Changes¶
In Jakarta EE 8.0, we have accomplished the changes of the maven artifactId from javaee to jakarta.
In Jakarta EE 9.0, the main work is applying new jakarta namespace in the code level. Almost all packages use jakarta instead of javax in Java source codes, and XML namespace use jakarta.ee to replace jcp.org in the XML schema definition. But there is an exception, Faces 3.0 still use the legacy jcp.org in the Faceslet views.
In Faces 4.0, it introduces the shorter URN(Uniform Resource Name)s to replace the original URIs.
| declaration | Jakarta EE 8/9 URIs | Jakarta EE 10 URNs |
|---|---|---|
| xmlns:faces | http://xmlns.jcp.org/jsf | jakarta.faces |
| xmlns:ui | http://xmlns.jcp.org/jsf/facelets | jakarta.faces.facelets |
| xmlns:f | http://xmlns.jcp.org/jsf/core | jakarta.faces.core |
| xmlns:h | http://xmlns.jcp.org/jsf/html | jakarta.faces.html |
| xmlns:p | http://xmlns.jcp.org/jsf/passthrough | jakarta.faces.passthrough |
| xmlns:cc | http://xmlns.jcp.org/jsf/composite | jakarta.faces.composite |
| xmlns:myCompositeComponents | http://xmlns.jcp.org/jsf/composite/components | jakarta.faces.composite/components |
| xmlns:myComponents | http://xmlns.jcp.org/jsf/component | jakarta.faces.component |
| xmlns:c | http://xmlns.jcp.org/jsp/jstl/core | jakarta.tags.core |
| xmlns:fn | http://xmlns.jcp.org/jsp/jstl/function | jakarta.tags.functions |
Additionally, all JSF related naming are updated to use Faces, including(a copy from BalusC's blog):
jsf.jsJavaScript file was renamed tofaces.jswindow.jsfJavaScript global variable was renamed towindow.facesjsf/ClientSideSecretKeyJNDI variable was renamed tofaces/ClientSideSecretKeyjsf/FlashSecretKeyJNDI variable was renamed tofaces/FlashSecretKeyxmlns:jsfdefault XML namespace prefix for passthrough elements was renamed toxmlns:facesResourceHandler.JSF_SCRIPT_LIBRARY_NAMEconstant was renamed toFACES_SCRIPT_LIBRARY_NAMEResourceHandler.JSF_SCRIPT_RESOURCE_NAMEconstant was renamed toFACES_SCRIPT_RESOURCE_NAME
The specification name is also updated to Jakarta Faces in Faces 4.0 which was named Jakarta Server Faces in Jakarta EE 8/9, and Java Server Faces(aka JSF) in Java EE 8 and previous versions.
In the post, I used word
JSFfor the legacy versions before 3.0.
Removal of JSP as View¶
JSP is a standalone specification for building Java web applications, it mainly acts as the view role in the traditional MVC frameworks. Nowadays there are still a lot of applications that use it to build web UIs.
JSP works as a view technology in the early JSF 1.x. Since JSF 2.0, Facelets becomes the default view engine.
In Faces 4.0, JSP is physically removed.
Better CDI Alignment¶
Since JSF 2.2, new CDI compatible scopes eg. FlowScope and ViewScope are added, CDI was suggested to replace the JSF built-in injection provider. In Faces 4.0, you have to use CDI specific ApplicationScoped, SessionScoped, RequestScoped annotations to replace the legacy ones in old JSF.
Removal of MethodBinding and ValueBinding¶
Faces 4.0 removes the legacy MethodBinding and ValueBinding API which will confuse developers when devloping components, and switch to use Jakarta EL as built-in expressing language engine.
Removal of Deprecated APIs¶
Some long-existed deprecated APIs are removed in Faces 4.0, including:
PreJsf2ExceptionHandlerFactoryclass was just completely removed as that never proved to be useful- The constant
CURRENT_COMPONENTandCURRENT_COMPOSITE_COMPONENTwas removed fromUIComponentclass, use newUIComponent.getCurrentComponentinstead StateManagerwas removed.ResourceResolverwas removed and replaced withResourceHandler