Jakarta Faces, formerly Jakarta Server Faces and JavaServer Faces (JSF) is a
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
specification for building
component
Component may refer to:
In engineering, science, and technology Generic systems
*System components, an entity with discrete structure, such as an assembly or software module, within a system considered at a particular level of analysis
* Lumped e ...
-based
user interface
In the industrial design field of human–computer interaction, a user interface (UI) is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine fro ...
s for
web application
A web application (or web app) is application software that is created with web technologies and runs via a web browser. Web applications emerged during the late 1990s and allowed for the server to dynamically build a response to the request, ...
s. It was formalized as a standard through the
Java Community Process
The Java Community Process (JCP), established in 1998, is a formal mechanism that enables interested parties to develop standard technical specifications for Java technology. Becoming a member of the JCP requires solid knowledge of the Java program ...
as part of the
Java Platform, Enterprise Edition
Jakarta EE, formerly Java Platform, Enterprise Edition (Java EE) and Java 2 Platform, Enterprise Edition (J2EE), is a set of specifications, extending Java SE with specifications for enterprise features such as distributed computing and web serv ...
. It is an
MVC web framework
A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build a ...
that simplifies the construction of
user interface
In the industrial design field of human–computer interaction, a user interface (UI) is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine fro ...
s (UI) for server-based applications by using reusable UI components in a page.
JSF 2.x uses
Facelets as its default templating system. Users of the software may also use
XUL or
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
. JSF 1.x uses
JavaServer Pages (JSP) as its default templating system.
History
In 2001, the original
Java Specification Request (JSR) for the technology that ultimately became JavaServer Faces proposed developing a package with the name
javax.servlet.ui
In June 2001, ''
JavaWorld'' would report on Amy Fowler's team's design of "the JavaServer Faces API" (also known as "Moonwalk") as "an application framework for creating Web-based user interfaces".
Developments
Facelets (which was designed specifically for Java Server Faces) was adopted as the official view technology for JSF 2.0. This eliminates the life-cycle conflicts that existed with JSP, forcing workarounds by Java developers.
The new JSF developments also provide wide accessibility to
Java annotation
In the Java computer programming language, an annotation is a form of syntactic metadata that can be added to Java source code. Class (computer programming), Classes, Method (computer programming), methods, Variable (computer science), variables ...
s such as
@ManagedBean
,
@ManagedProperty
and
@FacesComponent
that removes the need for
faces-config.xml,
in all cases except framework extension. Navigation is also simplified, removing the need for
faces-config.xml
navigation cases. Page transitions can be invoked simply by passing the name of the desired View or Facelet.
The addition of Partial State Saving and
Document Object Model (DOM) updates are part of the built-in standardized
AJAX
Ajax may refer to:
Greek mythology and tragedy
* Ajax the Great, a Greek mythological hero, son of King Telamon and Periboea
* Ajax the Lesser, a Greek mythological hero, son of Oileus, the king of Locris
* Ajax (play), ''Ajax'' (play), by the an ...
support.
The latest JSF release has built-in support for handling resources like images, CSS and Javascript, allowing artifacts to be included with component libraries, separated into JAR files, or simply co-located into a consistent place within the Web application. This includes logical naming and versioning of resources.
JSF 2.0 also includes a number of other changes like adding support for events, separate development, staging, and production modes, similar to
RAILS_ENV
in
Ruby on Rails, and significantly expanding the standard set of components.
Update history
* JSF 4.0 (2022-05-15) Major features: Deleted some deprecated things (native managed beans, native EL references), no extended view by default, added ClientWindowScoped
* JSF 3.0.0 (2020-10-28) Package name changed from Javax to Jakarta.
* JSF 2.3 (2019-09-10) The first release of the Jakarta Server Pages API for Jakarta EE.Neither the API nor the behavior has changed.
* JSF 2.3 (2017-03-28) – Major features: search Expressions, extensionless URLs, bean validation for complete classes, push communication using
WebSocket
WebSocket is a computer communications protocol, providing a full-duplex, simultaneous two-way communication channel over a single Transmission Control Protocol (TCP) connection. The WebSocket protocol was standardized by the Internet Engineering ...
, enhanced integration with CDI.
* JSF 2.2 (2013-05-21) – Introduced new concepts like stateless views, page flow and the ability to create portable resource contracts.
* JSF 2.1 (2010-11-22) – Maintenance release 2 of JSF 2.0. Only a very minor number of specification changes.
* JSF 2.0 (2009-07-01) – Major release for ease of use, enhanced functionality, and performance. Coincides with
Java EE
Jakarta EE, formerly Java Platform, Enterprise Edition (Java EE) and Java 2 Platform, Enterprise Edition (J2EE), is a set of specifications, extending Java SE with specifications for enterprise features such as distributed computing and web serv ...
6.
* JSF 1.2 (2006-05-11) – Many improvements to core systems and APIs. Coincides with
Java EE
Jakarta EE, formerly Java Platform, Enterprise Edition (Java EE) and Java 2 Platform, Enterprise Edition (J2EE), is a set of specifications, extending Java SE with specifications for enterprise features such as distributed computing and web serv ...
5. Initial adoption into Java EE.
* JSF 1.1 (2004-05-27) – Bug-fix release. No specification changes.
* JSF 1.0 (2004-03-11) – Initial specification released.
How it works
Based on a component-driven
UI design-model, JavaServer Faces uses XML files called view templates or
Facelets views. The
FacesServlet
processes requests, loads the appropriate view template, builds a component tree, processes events, and renders the response (typically in the HTML language) to the client. The state of UI components and other objects of scope interest is saved at the end of each request in a process called stateSaving (note: ''transient'' true), and restored upon next creation of that view. Either the client or the server side can save objects and states.
JSF and AJAX
JSF is often used together with
AJAX
Ajax may refer to:
Greek mythology and tragedy
* Ajax the Great, a Greek mythological hero, son of King Telamon and Periboea
* Ajax the Lesser, a Greek mythological hero, son of Oileus, the king of Locris
* Ajax (play), ''Ajax'' (play), by the an ...
, a
Rich Internet application development technique.
AJAX
Ajax may refer to:
Greek mythology and tragedy
* Ajax the Great, a Greek mythological hero, son of King Telamon and Periboea
* Ajax the Lesser, a Greek mythological hero, son of Oileus, the king of Locris
* Ajax (play), ''Ajax'' (play), by the an ...
is a combination of web development techniques and technologies that make it possible to create rich user interfaces. The user interface components in
Mojarra (the JSF
reference implementation
In the software development process, a reference implementation (or, less frequently, sample implementation or model implementation) is a program that implements all requirements from a corresponding specification. The reference implementation ...
) and
Apache MyFaces were originally developed for HTML only, and
AJAX
Ajax may refer to:
Greek mythology and tragedy
* Ajax the Great, a Greek mythological hero, son of King Telamon and Periboea
* Ajax the Lesser, a Greek mythological hero, son of Oileus, the king of Locris
* Ajax (play), ''Ajax'' (play), by the an ...
had to be added via JavaScript. This has changed, however:
Because JSF supports multiple output formats,
AJAX
Ajax may refer to:
Greek mythology and tragedy
* Ajax the Great, a Greek mythological hero, son of King Telamon and Periboea
* Ajax the Lesser, a Greek mythological hero, son of Oileus, the king of Locris
* Ajax (play), ''Ajax'' (play), by the an ...
-enabled components can easily be added to improve
user interface
In the industrial design field of human–computer interaction, a user interface (UI) is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine fro ...
s created with JSF. The JSF 2.0 specification provides built-in support for AJAX by standardizing the AJAX request lifecycle and providing simple development interfaces to AJAX events. The specification allows an event triggered by the client to go through validation, conversion, and method invocation, before returning the result to the browser via an XML DOM update.
JSF 2 includes support for
graceful degradation when
JavaScript
JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior.
Web browsers have ...
is disabled in the browser.
AJAX-enabled components and frameworks
The following companies and projects offer AJAX-based JSF frameworks or component libraries:
*
Apache MyFaces – The
Apache Foundation JSF implementation with AJAX components
*
Backbase ''Enterprise AJAX – JSF Edition'' –
AJAX framework
Ajax (also AJAX ; short for "asynchronous I/O, asynchronous JavaScript and XML") is a set of web development techniques that uses various web technologies on the client-side to create asynchronous web applications. With Ajax, web applications c ...
* BootsFaces ''Open source JSF Framework based on Bootstrap''
*
IBM Notes –
XPages
*
ICEfaces – open-source, Java JSF extension framework and
rich components, AJAX without JavaScript
*
JBoss ''
RichFaces'' (derived from and replaces ''
AJAX4jsf'') – AJAX-enabled JSF components for layout, file upload, forms, inputs and many other features. It reached its end-of-life in June 2016.
*
OmniFaces – open-source JSF utility library
OpenFaces– AJAX framework with JSF components
*
Oracle
An oracle is a person or thing considered to provide insight, wise counsel or prophetic predictions, most notably including precognition of the future, inspired by deities. If done through occultic means, it is a form of divination.
Descript ...
''ADF Faces Rich Client'' –
Oracle Application Development Framework
*
PrimeFaces – AJAX framework with JSF components
*
Sun
The Sun is the star at the centre of the Solar System. It is a massive, nearly perfect sphere of hot plasma, heated to incandescence by nuclear fusion reactions in its core, radiating the energy from its surface mainly as visible light a ...
Java BluePrints AJAX components
*
ZK – AJAX framework with JSF components
Criticisms
ThoughtWorks, 2014
In their January 2014 ''Technology Radar'' publication,
ThoughtWorks wrote:
Rebuttal
In February 2014, Çağatay Çivici (PrimeFaces Lead) responded to ThoughtWorks criticisms in a post titled ''JSF is not what you've been told anymore''. Çivici argues that improvements in JSF over the years offer many features that embrace modern web development, providing the option to write your own JavaScript, HTML, and CSS. Also regarding state, Çivici wrote:
DZone, 2014
In the article published November 2014 in the DZone website, titled "Why You Should Avoid JSF", Jens Schauder wrote:
TheServerSide, 2016
In February 2016, the enterprise Java community website ''TheServerSide'' published an article recommending against the use of JSF, whose use could compromise the quality of the final product. The article ellaborated on five reasons:
# Simple tasks become difficult;
# JSF lacks flexibility;
# The learning curve is steep;
# Incompatibility with standard Java technologies; and
# Primitive AJAX support.
References
External links
*
{{Authority control
Java enterprise platform
Java specification requests