Monday, May 31, 2010

ICEFaces for next generation web application

Hi All, my name is Mohammed Meraj; I have more than 9 years of experience in JAVA-J2EE platform. I have been working on JSF for more than 3.5 years.

JSF is one of the fastest growing and stable UI component based framework and ICEFaces has contributed a lot to make JSF Component more rich and easy to use in complex projects. I had started using ICEFaces since 1.6.1 (2007) version.
I really appreciate the kind of improvement done in the ICEFaces by ICEsoft guys. Honestly when I had started using ICEFaces, it had lots of issues and struggle a lot (one fact could be due to new in JSF for me). But when you compare now, we can see a lot of differences in all respects whether its richness of UI components, performance efficient. Etc. most important thing is than even ICEFaces is open source, ICEsoft is constantly working to improve stable the ICEFaces component.

I will share my experience with ICEFaces and ICEsoft for only selected area which was challenging in our projects. Rest detail; we can find in

Ajax Based UI Components: IceFaces provides a rich web presentation environment for Java Server Faces (JSF) applications that enhances the standard JSF framework and lifecycle with AJAX-based interactive features. Recently ICEFaces have introduced composite components which have lot of real world rich component that can be easily fulfilling complex requirement.

For standard component please visit: owcase.iface

For composite component please visit: mposite-comps-showcase/showcase.iface

Direct-2-DOM (D2D): I like the most about ICEFaces is about D2D rendering. Let me explain a bit about Direct-2-DOM (D2D) rendering. ICEfaces employs a technique called 'Direct-2-DOM' rendering, or D2D for short, to achieve smooth incremental page updates to the browser. ICEfaces stores a copy of the DOM, which represents the browser presentation state in a tree structure, on the server. When the user interacts with the page, an Ajax call may be made to the server, resulting in a change to the application state, which in turn will cause the page to be re-rendered on the server. Once the page is re-rendered on the server, and before the response is sent back to the browser, ICEfaces differs the old and new DOM trees to create a DOM update, which comprises the essential changes to the page which need to be sent back to the browser. These DOM updates, when received by the browser, are then evaluated and the browser DOM is reconstructed and updated with the necessary changes.

The benefit of D2D in that when ever any field value changed the dependent field update automatically, we don’t need to explicitly refresh the dependent block this saves lot of code and complexity an other important benefit we get is optimized server to client data transfer, only changed data is transfered from server to client.

Concurrent DOM Views : ICEFaces also provide multi window concept (Concurrent DOM Views), where same screen can be access at same time. Let me explain a bit. In our project user can access same module more than once let say user wants open a screen to view some customer detail at the same time user also wants to create new customer detail, this could be easily possible with the help of Concurrent DOM Views concept of ICEFaces.

Preventing Double Submit: ICEFaces also handled one of the crucial and important requirement is preventing double submit. If this issue is not handled in any of the projects this could be serious issue from business perspective.

Ajax Push: For real time notification asynchronously for the application users.

Rich Themes: ICEFaces also provide rich and standard set of themes e.g. rime, xp and royale.

Great technical support: A lot of forum and experts are there to support you if you stuck any where.

Dont miss my next blog, on best practices and how to use JSF-ICEFaces in an optimized way from performance, scalability and maintainability perspective.