Tuesday, 11 December 2007

ICEfaces: Solving the Ajax Matrix of Pain for JavaEE

ICEfaces and the Matrix of Pain

ICEfaces: Solving the Ajax the Matrix of Pain for JavaEE

 

One of the underlying objectives we had when we started the ICEfaces open source project was to create the most interoperable enterprise Ajax solution on the market. The matrix of pain that we are discussing here refers to the many configurations that we endeavor to test ICEfaces against.

As of our 1.6.2 release, ICEfaces is supported across nine different application servers, five integrated development environments (IDEs), five different browser platforms and five third party Java EE frameworks and portals. As far as we can tell the interoperability of ICEfaces far exceeds that of any other enterprise Ajax offering on the market today. Such interoperability however has come at a cost.

Supporting all of these platforms results in over 1,100 different permutations and combinations of technologies and tools that ICEfaces must be supported and tested against.  Granted some of these combinations are more or less likely to occur in actual practice, but for all practical purposes, our test matrix is quite substantial and growing with every new release. 

For every third party technology or tool we integrate with ICEfaces we have to plan on allocating the equivalent of a full or half-time engineer for the life of the integration.  Beyond the up front integration efforts, we need to provision support to the user community and forums with respect to the integration and we need to continue that support through any future releases of both ICEfaces and the third party technology or tool.  Every time a third party tool or technology releases a new version we have to retest and often re-integrate ICEfaces. 

Every time we undertake a new technology or tool integration, the number of possible configurations we need to test ICEfaces against can expand by 2-300 new configurations. In order to accommodate this level of complexity we invest heavily in our own test infrastructure.  With every release we are adding hundreds of new test cases to our automatic regression test suites, and new dedicated hardware to duplicate the most commonly deployed combinations of tools and technologies.

A practical consequence of this support cost is that we have to be very prudent and careful whenever we decide to take on the support obligations associated with integrating a new tool or technology.  Inherent with each adoption of a new technology or tool is an obligation to provide the ongoing support for it.  Inconsistent and intermittent support for previously integrated platforms is detrimental to the community and can easily damage company credibility and impact the adoption of the platform.  Users often commit considerable investment in time and energy to learn a particular technology and develop applications around the ecosystem it reportedly supports.  Enterprises looking to make this kind of investment must have confidence that the company behind a particular open source solution has the wherewithal, the intent, and the required infrastructure needed to support third party tools and technologies.  They need to know that the ecosystem they are investing in is going to be around for a while and continue to grow.

I believe we have achieved our objective of delivering the best and most interoperable enterprise Ajax solution to the market, and remain committed to keeping it that way.  Over the upcoming weeks we will be soliciting input from our community with respect to our future 2.0 release of ICEfaces.  Of particular interest will be feedback with respect to which tools, applications, and technologies we need to consider for future integrations.  I encourage you to let us know your thoughts so that ICEfaces is better positioned to meet the evolving needs of its growing community.

 

Brian McKinney  

Technorati Tags:

Posted by brian.mckinney at 12:13 PM in Entries by Brian McKinney

Monday, 10 December 2007

Ajax with Spring Web Flow and ICEfaces at TheSpringExperience


TheSpringExperience is on this week, and we're pleased to say that we will be presenting Transparent Ajax with Spring Web Flow and ICEfaces at the conference. One of the main points of the talk is that obtaining Ajax features in Spring Web Flow 2.0 applications is automatic when you include the ICEfaces libraries, but we will also explain how the new scopes introduced by Spring Web Flow are suitable for Ajax applications, and will give a bit of background on how Spring Web Flow and ICEfaces are integrated together. (Spring Web Flow actually exists outside of JavaServer Faces, so this introduced a few interesting challenges.)

To try out Spring Web Flow 2.0 with ICEfaces pre-1.7 now, you will need the latest code from the respective subversion repositories:

  • svn checkout http://anonsvn.icefaces.org/repo/icefaces/trunk/icefaces/
  • svn checkout https://springframework.svn.sourceforge.net/svnroot/springframework/spring-webflow/trunk
Then, in the trunk/spring-webflow-samples directory, add an external link to the pre-configured ICEfaces demo:
  • svn propset svn:externals "icefaces-swf-booking http://anonsvn.icefaces.org/repo/projects/icefaces-swf-booking" .
  • svn update
Build Spring Web Flow with "ant" in the "build-spring-webflow" directory and build ICEfaces with "ant" in the "icefaces" directory. Then, in the "icefaces-swf-booking" directory, copy the following from "icefaces/lib" into "icefaces-swf-booking/lib/global":
  • icefaces.jar
  • icefaces-comps.jar
  • icefaces-facelets.jar
  • jsf-api-1.2.jar
  • jsf-impl-1.2.jar
"ant" completes the build and you can copy the new .war file to your servlet container (Tomcat, for these particular instructions; omit the JSF libraries for GlassFish).

The integration of these two frameworks is preliminary, so there are a few points worth noting. Spring Web Flow resource loading (for CSS and JavaScript files) is not yet integrated with ICEfaces. (The demo makes use of direct URLs into the web application in place of this.) The Spring Web Flow custom components for client-side validation are not yet supported (it seemed best to avoid JavaScript conflicts for the first pass). Also, we didn't have a chance to add any Ajax Push features to the demo; most interesting is whether Ajax Push should be represented as a "flow" within Spring Web Flow.

Please try it out and let us know what you think; we're very excited to have the powerful application abstractions of Spring Web Flow combined with the transparency of ICEfaces. I'll be available at the conference to answer any questions you might have.

Technorati Tags:

Posted by ted.goddard at 5:35 PM in Entries by Ted Goddard

« December »
SMTWTFS
      1
2345678
9101112131415
16171819202122
23242526272829
3031