ICEfaces gets open sourced
As far as JSF Ajax frameworks are concerned, there seems to be two major players: Ajax4jsf and ICEfaces. I don't know that either one is a true open source project (where developers are from multiple companies), but Spring isn't either, so I don't know that it actually matters. I think it interesting that both products don't seem to care about capitalization, but I digress.
Today, ICEsoft announced they've open-sourced ICEfaces. Was this inspired by Java going GPL?1 I doubt it, these things take time and it's likely that ICEsoft had this one in the cooker for quite a while. I do think it's interesting that the major JSF component vendors (Oracle, Exadel and now ICEsoft) have all open-sourced their products. Must be a tough market out there.
Apparently, ICEfaces works with Facelets, so it should work with AppFuse and Equinox. Looking through ICEfaces documentation and sample apps, they seem to be missing a straight-forward "here's how to integrate it into your existing application" guide. They do show how to modify your web.xml, but there doesn't seem to be a short, concise guide to what configuration settings you need to add to your faces-config.xml. I was somewhat motivated to write such a guide this morning, but lost motivation quickly as I realized it might be quite the effort. If someone wants to create the Maven bundles for ICEfaces, I'll try to carve out some time later this week to write up instructions for integrating ICEfaces into Equinox and AppFuse.
Unfortunately, integrating ICEfaces into your project is only the beginning. The hard part is choosing which is a better Ajax toolkit: ADF Faces/Trinidad, Ajax4jsf or ICEfaces? Trinidad and ICEfaces seem to be more about components, whereas Ajax4jsf is more about Ajaxifying regular ol' JSF components. So I think Ajax4jsf still remains, and ICEfaces looks like a better out-of-the-box component library than Trinidad. I guess time will tell.
Update: I forgot to mention Infragistics NetAdvantage as a JSF Ajax framework. OpenLogic decided to use Infragistics in the project I started for them. I was able to get it working in AppFuse fairly easily, but it's kinda ugly from a setup standpoint. They require you to copy a bunch of static files (images, stylesheets and scripts) into your project. Yech.
[1] Stephen O'Grady has an excellent writeup on this: And Sun Said, Set My Java Free: The Open Source Q&A.
In terms of modifying faces-config.xml for ICEfaces, really nothing is required by the developer. The ICEfaces .jar files contain the appropriate faces-config.xml settings that install the ICEfaces factory and ViewHandler. We can provide an article on icefaces.org that explains the extension points.
There is optional configuration in faces-config.xml that you will likely want to make use of, however. ICEfaces provides RenderManagers that can be set up through dependency injection. The various RenderManagers allow you to schedule Ajax Push in a scalable fashion (using a bounded number of threads to handle arbitrarily many clients).
Note that ICEfaces does heavily emphasize Ajaxifying regular ol' JSF components -- the ICEfaces RenderKit provides "Direct-to-DOM" implementations of the standard JSF components. In this way, you can turn a standard JSF application into an Ajax application simply by adding icefaces.jar. (No code or page changes whatsoever.) Such applications will not benefit from Ajax Push (because there is no standard JSF API for initiating a render outside of a request) but they will benefit from incremental page update. This quality of ICEfaces is particularly interesting when combined with the component templating capabilities of Facelets because it allows new Ajax components to be created from component templates that are oblivious to Ajax.
Posted by Ted Goddard on November 14, 2006 at 09:58 PM MST #
Posted by Matt Raible on November 14, 2006 at 10:03 PM MST #
Posted by stephen o'grady on November 15, 2006 at 04:45 AM MST #
Posted by Kito D. Mann on November 15, 2006 at 12:38 PM MST #
Posted by Alan Lewis on January 04, 2007 at 11:56 AM MST #
Posted by Thai Dang Vu on March 26, 2007 at 10:27 AM MDT #
Posted by Hendrik Beck on July 23, 2007 at 10:53 AM MDT #
Posted by Scott Ryan on November 02, 2007 at 12:47 AM MDT #