segunda-feira, 2 de março de 2009

Trabalha com JSF? Que implementação de JavaServer Faces você está utilizando em seu projeto?

Esses dias fiz essa pergunta a um amigo e ele, todo orgulhoso, me respondeu: 

- Richfaces! 
O que ele não sabia é que, na verdade, ele utilizara JSF RI em seu projeto. 
A maioria dos desenvolvedores que estão iniciando com JSF não sabe é que JavaServer Faces é uma especificação feita pelo pessoal da JCP e que existem várias implementações, assim como a Mojarra(JSF RI), Myfaces, ADF Faces e etc. E vários pacotes de componentes, assim como o Richfaces, Tomahawk, IceFaces e etc. 
É comum a confusão entre o que é uma implementação JSF e um pacote de componentes JSF. Como existe uma enorme quantidade de componentes disseminados pela internet, assim confundem-se em achar que todos são implementações JSF, é aí que está o engano! 
As implementações JSF nos equipam com componentes básicos e simples somente, e isso favorece a grande quantidade de pacotes de componentes. Pacotes de componentes são adicionados aos projetos, pois aplicações comerciais exigem muitos outros componentes visuais para compor uma interface rica. 
Já um pacote de componentes é um conjunto com múltiplos componentes visuais ou não, que em sua maioria são componentes visualmente mais abstrusos e ricos, que funcionam aplicados sobre alguma das implementação JSF. Alguns são proprietários e outros Livres, são escritos e desenvolvidos por várias empresas e atentem a várias utilidades gerais e específicas. 
No obstante, as implementações também são desenvolvidas por várias empresas, em geral fabricantes como Oracle, Sun ou Apache. Cada um dos fabricantes alega que sua implementação tem menos bugs ou tem um nível de resposta mais rápida.
O importante é que como todas as versões são escritas em cima da mesma especificação (JavaServer Faces) podemos mudar de implementação (fabricante) que a aplicação escrita terá um comportamento igual.