Home Classroom ICEfaces ICEfaces – Part 1

ICEfaces – Part 1


Introducing ICEfaces!

In this article, I am going to introduce ICEfaces and why you should start learning it.

ICEfaces is a product from ICEsoft Technologies Inc., and the official website is http://www.icefaces.org

ICEfaces is open source and it is licensed under the Mozilla Public License 1.1 (MPL).



ICEfaces is an integrated Ajax Java application framework that enables Java EE Ajax application developers to easily create and deploy thin-client rich Internet applications (RIA) in pure Java.

ICEfaces applications are JavaServer Faces (JSF) applications. I would say that most significant difference with ICEfaces and pure JSF application is the integration of Ajax.

Since ICEfaces applications are based on JSF, having a general knowledge about JSF is essential.

If you know JSF well, then you can learn ICEfaces very easily.

When it comes to Ajax, you know that JavaScript plays the main role. With ICEfaces, you do not have to do any JavaScript related development. Therefore ICEfaces enables you to develop rich internet applications using pure Java. Main advantage is that you can concentrate more on business logic.

I believe you also have an idea about RIA. Rich Internet applications (RIAs) are web applications similar to desktop applications. There was an article about RIA in April 2009 issue of diGIT magazine.


ICEfaces Architecture

Main goal of ICEfaces is to hide complexities in developing Ajax applications. As mentioned in ICEfaces web site, the key to the ICEfaces architecture is a server-centric application model, where all application logic is developed in pure Java, and executes in a standard Java application server runtime environment.

Since ICEfaces is based on JSF, it offers component based architecture for developing user interfaces.

Also note that ICEfaces requests and responses follow the standard JSF Application Lifecycle.

There are three core elements to the ICEfaces architecture.

1. ICEfaces Framework

2. Ajax Bridge

3. ICEfaces Component Suite


The ICEfaces framework extends the JSF framework by introducing a new way to render the page. In standard JSF, render phase causes a full page refresh in the browser.

With ICEfaces framework, the page is rendered to a server side DOM (Document Object Model). Only incremental changes to the DOM are sent to the browser. This incremental update result in a seamless, smooth update of the browser page.

For example, suppose there is a text box and a button in a page. When a user initially requests the page, ICEfaces creates a server side DOM and sends the entire DOM to the browser. You write the application logic to accept the name from text box when the button is pressed and you display a label below the text box greeting the user. When a user enters a name and clicks on the button, ICEfaces only sends the new label to the browser using an algorithm to identify the changed elements in the DOM.

The Ajax Bridge coordinates communication between the client browser and the server application. As it name suggests, all requests and responses are Ajax based. The Bridge is responsible for applying incremental changes to browser DOM. The Bridge is also responsible for detecting user interaction with the browser, and delivering user events back to the application.

ICEfaces Component Suite provides the components to develop the user interface. Each ICEfaces component has an attribute for using partial submit, which enables automatics event generation over the Ajax Bridge based on user interaction.


Ajax Push

Ajax Push is a great feature in ICEfaces. Ajax Push refers to the technique of updating user interface based on server side events.

This is very useful for collaborative features as every user can be instantly aware of each others actions.

ICEfaces framework provides a pure Java API for enabling Ajax Push.


Benefits of using ICEfaces

  • Over 50+ auto Ajax components.
  • Easy Ajax
  • Ajax Push
  • Open Source
  • Based on Java Standards. (JavaServer Faces)
  • Compatibility with wide range of Java Application Servers. (Tomcat, Websphere Application Server, GlassFish etc.)
  • Support for IDE Tools. (Eclipse, Netbeans)
  • Easy styling with CSS
  • Security and many more.



My main goal of this article was to introduce ICEfaces framework. I am a Java Developer and I have more than one year experience with ICEfaces.

ICEfaces is very powerful and there are lot of things to learn.

Please make sure to visit http://www.icefaces.org/ for more information. All the information in this article are obtained from the ICEfaces web site.

In the next issue, I will explain how to create a simple project using Eclipse IDE. I will also explain how to install the ICEfaces tool integration for Eclipse.






Isuru Perera is a senior software engineer at wso2. He is a graduate at Informatics Institute of Technology (IIT), Sri Lanka where he completed his BSc Honours Software Engineering course offered by University of Westminster, United Kingdom. LinkedIn Profile: http://www.linkedin.com/in/chrishantha


Leave a Reply