Icefaces is a great(best?) JSF library. Its great mostly becouse it make AJAX easy to use. Its so easy that you even should not know about AJAX at all.
Its good for most business application.
If your primary skills are JAVA, your markup language is HTML, and you must use AJAX in every place in you application, ICEFACES is the best choice.
If you need "PUSH" capabilities, ICEFACES will do it in simple but efficient way.
You want create your components? No problemo with ICEFACES.
Icefaces comes with number of components. But its real value is AJAX engine. Every component you will create will be AJAX enabled. Cool!
ICEFACES supports facelets. So its easy to reuse you html code.