Working with clients in everyday projects I sometimes need to make a proposal for one or the other library to use. But what are the decision making points on this? What does "enterprise grade" really mean?
Even if I am not going to present a complete evaluation report about JSF libraries here, I will try to introduce my approach in finding enterprise-grade JSF component libraries for customers. And further on, I will try to have a more detailed look at three component libraries I choose to evaluate in customer situations quite often.
Definition: enterprise-grade
My first try was to find out about the definition of enterprise-grade. The wikipedia keeps silent about this. No article about this does exist. Ok. Some googling does return more results. Anyway, as silently allready expected,
you will not find a definition anywhere. In a 2008 TSS Discussion, Ed Burns talked about Enterprise Grade Ajax and JSF already. He defined it as follows:
[...] something that is robust, scalable, well tested, and industry proven.
General evaluation approach
Evaluation Criteria
If you compare the customers needs to Ed's keywords, you obviously find some missing parts. Resorted and completed it could lead to a list like the following:
- robustness
- scalability
- testability
- # of available components
- browser support
- development tools support
- professional support
- # of industry references
- size of the community
- software quality
- documentation (size/quality)
- # releases per year
- avrg time for bugfixing
- customizability
- licensing
- avalable since
This is still a very limited list and could be expanded, to the customers needs. But to me it seems as if this are the most interesting points to evaluate if you are looking for an enterprise-grade product. Having special platforms or environments in place, you could even think about defining categories (non-technical, technical, enterprise, strategic and so on..)
Candidates
Collecting the criteria is the first part. Next step is to identify the candidates to evaluate. Sometimes this is also called a shortlist. There are some pre evaluation suggestions around. To me it is most valuable to define some necessary and sufficient conditions and only discuss those libraries meeting the sufficient criteria. In most cases it should be perfect to work with up to five different libraries in the comparisson. For each of them you have to do the criteria evaluation.
Cost-utility analyses
If you have your criteria and degrees of fulfilment in place, you should do your analysis. There are some more or less common approaches in place to do this. A more general description could be found here. The german articel in the wikipedia is more complete and also defines some functions as guidelines.
Personal shortlist
Looking at the jsf-matrix again is a perfect starting point for building a shortlist. My personal shortlist is influenced by what I know from my customers and their requirements. Therefore I have chosen the following three:
- RichFaces
RichFaces is a component library for JSF and an advanced framework for easily integrating AJAX capabilities into business applications.
- Oracle ADF Faces
Oracle ADF Faces Components is a set of over a 150 Ajax-enabled JSF components that let you build a richer user interface for your Java EE applications. Oracle ADF Faces also includes many of the framework features most needed by JSF developers today.
- PrimeFaces
PrimeFaces is an open source component suite for Java Server Faces featuring 70+ Ajax powered rich set of JSF components. Additional TouchFaces module features a UI kit for developing mobile web applications.
Criteria fulfillment
Here are some examples derived from the product's websites and communities for selected criteria.
RichFaces | Oracle ADF Faces | PrimeFaces | |
# of available components | 100 | 150 | 70 |
development tools support | Jboss Tools | JDeveloper | none |
professional support | yes | yes | none |
size of the community (members forum) | 14.498 | 3600 | |
documentation (size/quality) | lots/ok | lots/ok | avrg/ok |
# releases per year | 3 - 4 | 1 | >6 |
avrg time for bugfixing/days | 60 | ||
customizability | skins | skins | skins |
licensing | LGPL | Commercial | Apache License |
avalable since | 2009 |
Conclusion
As you can imagine, it is not too easy to gather all those informations. In some cases it could be a solution to prepare a request for information and send it out to the vendors in order to have your questions answered.
Before you choose a component library it is best to have a very good understanding of what it is capable in general. Most notably you can only combine selected libraries with each other. Therefore, you should wisely take the component suite, best fitting your projects needs.
Hi Marcus, PrimeFaces has professional support as well. http://primefaces.prime.com.tr/en/support.html
ReplyDeleteHi Cagatay,
ReplyDeletethanks for updating this. This was brandnew at the time posting this. Will be taken into account at any further posts on this topic.
Best rgds
Markus
Hi Marcus,
ReplyDeleteThanks for hosting such helpful blog, I do find it quite informative and unbias which is what every developer community needs. Although this post is very useful, it is missing one of the top tier Ajax frameworks, ICEfaces. ICEfaces was open sourced in 2006 and apparently their community user base is approaching 100,000 registered users, 90,694 registered users to be exact. (You'll see this number posted at the bottom of their forums page http://www.icefaces.org/JForum/forums/list.page.
I won't compare the framework for you but being that ICEfaces has the largest open-source ajax framework community and fastest growing according to the numbers, I think other readers would either expect to see it in your Criteria fulfillment list above or they would find it quite useful to if compared.