Happy Birthday, Ajax4jsf!
A progress report
Aug. 22, 2007 08:15 AM
The Road to Ajax4jsf
First, we'll look at the technological situation preceding the birth of Ajax4jsf. In doing this, we'll look at the "jsf" piece, then the "Ajax" piece, and finally the "4" piece.
JavaServer Faces is a standard component-based user interface framework for building Java-based Web applications - with the emphasis on component-based. It's now about three-years old. In the past year, interest in JSF has dramatically increased. At Exadel, we've seen one example of this with users of our IDE. Exadel provides an Eclipse plug-in for visual and source development that includes support for JSF, Struts, and Hibernate. In the past year, roughly 90% of all downloads of the plug-in were for JSF development.
It's not surprising that JSF has become so prominent. First, it's a standard, developed through the Java Community Process, and a part of Java EE 5. Second, and more important, it brings component-based development to the Web. As a developer, you design the application from reusable user interface components - those of you with Swing or ASP.NET experience should be familiar with this approach. These UI components, also known as controls, can be as simple as a submit button and as sophisticated as special trees, tables, and menus. A quick search on the Internet will provide abundant evidence as to why JSF is the best technology to use today for building Web applications.
Combining AJAX and JSF
Highlights on the Road to Ajax4jsf
To summarize the lead-up to Ajax4jsf, keep in mind these main points:
- JSF is a standard component-based framework for building Web-based applications.
- AJAX is a technique to make Web applications fast, rich, and more interactive.
- JSF and AJAX are a perfect match because of the JSF component approach (adding AJAX functionality through additional standard JSF components that provide AJAX features).
Now that the scene is set, we can move on to the actual birth of Ajax4jsf.
Ajax4jsf framework was created and designed by Alexander Smirnov. In early 2005, he was looking to add a "hot" new technology along with the associated experience to his resume. About the same time, the concept of AJAX was being introduced by Jesse James Garrett, and JSF was starting to pick up steam. Alexander figured why not just merge the two, so it would be easy to have AJAX functionality within a JSF application. He figured this would be an excellent addition to his resume. He started the project on sourcforge.net and called it Telamon (taken from the Shakespeare play Anthony and Cleopatra). And, Ajax4jsf was born.
Alexander Smirnov Joins Exadel
In the fall of that same year, Alexander joined Exadel and continued to develop the framework. Alexander's goal was to create a tool that was easy to use and that could be used with any existing JSF component library. His understanding of the JSF framework and AJAX technology allowed him to architect and design a framework that today is used by thousands of people.
Visual Component Platform
The first version of what would become Ajax4jsf was released in March 2006. It wasn't yet a standalone thing. Rather, it was part of a product called Exadel Visual Component Platform (now known as Exadel RichFaces). The initial idea was to build components based on Alexander's framework and package them with the framework. RichFaces consists of sophisticated, ready-to-use JSF AJAX components. Underneath these components, Ajax4jsf provided the foundation.
Ajax4jsf Splits Off
In late April, based on customer feedback, we realized that our customers wanted more flexibility and control in adding AJAX functionality to JSF applications. Customers liked RichFaces components, but having direct access to Ajax4jsf would give them even more muscle in developing rich JSF applications. Responding to this feedback, we decided to move Ajax4jsf outside of RichFaces and make it a standalone open source project. The project was moved to the Java.net site, an incubator for open source projects sponsored by Sun. After setting up the project and getting approval from Sun, the project was launched at the http://ajax4jsf.dev.java.net Website as an open source project sponsored by Exadel.
Popularity of Ajax4jsf
On being spun off, Ajax4jsf started to become popular. People were pleasantly surprised at how easy it was to add AJAX functionality to the standard JSF components in their applications with an open source product. They didn't have to redo or re-create anything just because they wanted to add AJAX. As word spread, traffic on the Ajajx4jsf site has been increasing each month and traffic on the mailing list has increased as well. Ajax4jsf has made Java.net's "Top Ranked" lists more than once. Ajax4jsf has appeared in the Top 10 projects lists for mail traffic, accesses, and CVS commits numerous times. The number of articles, Internet resources, and blog entries where people talk about Ajax4jsf has also grown significantly.
However, with popularity comes some vulnerability. As more and more people have started using Ajax4jsf, a significant number have put Ajax4jsf into production applications. Ajax4jsf has been put through many different usage scenarios, configurations, and environments, so, of course, bugs have surfaced. Many people have taken advantage of the mailing list to submit reports and ask a variety of questions about using the product. Alexander Smirnov and the rest of the Ajax4jsf team were somewhat stretched at first between fixing user-submitted bugs and introducing new features. It was not always easy to satisfy a growing open source community. While critical bugs had to be fixed first, other bugs had to be fixed later.
Nevertheless, having people report bugs and tell us how we can improve Ajax4jsf is what has made it such an excellent piece of software. I believe no QA department would be able to put Ajax4jsf through as many test cases as the users did by simply using it in their applications. This has made Ajax4jf a rock-solid product that can be used in many production environments.
Ajax4jsf's Current Feature Set
Over its year of existence, the feature set for Ajax4jsf has grown a lot. It now boasts 18 JSF components that can be used to add AJAX functionality to a JSF application. The most commonly used component is , a general component that can be associated with any JSF component to invoke an AJAX request. In addition to its component library, Ajax4jsf is also a framework that provides the following capabilities:
Driving the Evolution of Ajax4jsf
- Write your own custom rich components with built-in AJAX support
- Package resources with the application's Java classes
- Easily generate images on-the-fly
- Create a modern rich user interface look-and-feel with skins-based technology
- Test components, actions, listeners, and pages as you are creating them
Throughout the evolution of the feature set for Ajax4jsf, a few principles have been key. First, most of the changes and improvements that we make to the project are user-driven. Users request a particular functionality, and the project team implements it. It's that simple. Another important guiding principle for this project is to allow Ajax4jsf to be used with any other custom JSF component library. We don't want someone to start using Ajax4jsf and then not be able to use anything else. Ajax4jsf should be usable with any JSF implementation and any custom JSF component library.
Ajax4jsf will continue to be driven by its key principles, but there is the possibility of a big change in the near future for Ajax4jsf. Right now, the JSF Expert Group is eyeing adding AJAX functionally in JSF 2.0 using the Ajax4jsf approach. This new JSF version might surface some time toward the end of 2008.
The Right Time
At the end of this story, the obvious question to ask is: Why was Ajax4jsf so successful? Ajax4jsf is indeed an excellent framework, powerful and easy to use, but excellence doesn't always lead to success. In this case, Ajax4jsf arrived at the perfect time when the right strands of technology were developing in the right way. So, Ajax4jsf was born when it was needed the most. When there is a need to be filled and a product comes along that exactly fills that need, it's going to be used.
Postscript: Ajax4jsf Becomes JBoss Ajax4jsf!
Just before Ajax4jsf was about to celebrate its first birthday, Ajax4jsf was "reborn." Exadel formed a strategic partnership with Red Hat on March 5, 2007. All of the products that had been developed by Exadel were moved under Red Hat as open source (if they weren't open source already). Ajax4jsf is now JBoss Ajax4jsf although Exadel's programmers continue to work with Red Hat and JBoss in its development. With all of this support, Ajax4jsf is now on track to celebrate many more birthdays! Find out more from the JBoss Ajax4jsf home page: