We soon start development for a new web application and are currently evaluating/proposing the technology stack to use.
For the view layer, we have to choose between Primefaces, Icefaces 2 (since we definitely want JSF2) and Richfaces. Our basic requirements are look and feel, simplicity and ease of development, scalability and performance (most important).
Which view technology/framework would be most feasible to leverage. We would appreciate any inputs/expert opinion. Also, if there are any other recommended frameworks, please let us know.
Thanks and Regards
I've used both ICEfaces and PrimeFaces and prefer PrimeFaces for two main reasons: development efficiency and UI performance/responsiveness.
The dialog component illustrates both:
Compare this in PrimeFaces:
<p:dialog widgetVar="dialog"> [content] </p:dialog>
...
<a href="#" onClick="dialog.show()">Open dialog</a>
To this in ICEfaces:
<ice:panelPopup rendered="#{bean.dialogOpen}"> **dialog chrome** [content]
</ice:panelPopup>
<ice:commandLink action="#{bean.showDialog}">Open dialog</ice:commandLink>
In ICEfaces, you need a server-side round trip and a managed bean property + action listener to open a dialog. In PrimeFaces, thanks to "widgetVar", you can bind the component to a client-side variable accessible in jQuery and regular DHTML events.
Further, the PrimeFaces components handle many of the common cases with less code; for example, a dialog component includes the title bar and the "X" to close, while in ICEfaces you have to roll your own for that (or buy the EE with composite components).
Lastly, the "automatic AJAX" server-side DOM diff in ICEfaces can create performance issues server-side if your pages get big - most of the time you know what you want to refresh, and explicitly specifying update="id" on a component is more effective.
Try them all in a small POC, a few pages maybe and then decide for yourself. Also consider maturity, support available, resources available, enterprise features, etc. In my experience, A vs. B vs. C rarely produce good argument whether to go with one component library or another.
I've tried IceFaces and PrimeFaces and finally chose PrimeFaces due to zero-configuration start-up, simplicity with the use of components and the good great integration with JQuery. I only miss a good support for server-push in PrimeFaces while this is well supported in IceFaces.
I also liked the one-jar dependency in PrimeFaces while IceFaces needs, at least, three jar libraries to work.
Regards and good luck.
精彩评论