Achitecture Overview

Rcfaces works with Java 1.4 and higher. Currently the last version is compiled with Java 1.4.

JSF Enhancements

The aim of RC Faces is to offer a rich set of components that makes it easier to build rich and professional Web applications. 

To build those components, RCFaces extends the base JSF specifications to offer additional features :

  • An object-oriented JavaScript framework on the client side.
  • An AJAX engine.
  • The Resources servlet to load resources.
  • Application Version servlet to manage resources version.
  • Dynamics Content servlet to optimize resources.
  • Resources Bundle Client Servlet to enable internationalization on the client side.

The following diagram shows how the RC Faces features fit in the JSF application :

All servlets are described in part Settings: RC Faces servlets

Object-oriented and aspect-oriented JavaScript framework

The strength of RC Faces is its object-oriented JavaScript framework which makes use of aspect-oriented programming concepts (AOP). 

This framework creates a strong relationship between the HTML components and their JavaScript associated classes. 

A RC Faces component automatically loads all the required classes through the class inheritance and the aspects it implements. The use of AOP also reduces the size of generated JavaScript source code on the client side. For example, most components use functions such as getValue(), isDisabled(), isRequired(), isEditable(), setStyleClass() and more. These functions are declared as aspects of the components.

The JavaScript framework offers a symetrical API for components : client side API and server side API. Each component have the same methods and properties in JavaScript (client side) and in Java (server side). Whenever a JSF page is submitted, all the modified properties are synchronized automatically on the server side.

To enable fast rendering of the JSF pages, RCFaces is able to load all the JavaScript framework within a special hidden frame so that the browser does not need to reload the framework on each page refresh.

AJAX Engine

The AJAX engine is integrated in the RC Faces JavaScript API. Ajax is used by complex components and allows to minimize page refreshes for :
  • DataGrid pagination
  • DataGrid sorting
  • Datagrid  popups
  • Combo search results
  • Tree rendering
  • show boxes, expand bars and tabbed panes
  • show error messages
  • load image
  • progressbar animation
  • popups