Qual implementação JSF você usa?

Essa é uma frequente pergunta que venho recebendo de amigos e lendo na lista de discussão do JavaSF, eu a ouço (leio) de várias formas, porém a mais comum é algo do tipo:

“Qual a implementação JSF você usa? Richfaces? Tomahawk? MyFaces? IceFaces? Qual?”

É notório que entre iniciantes há uma confusão entre o que é uma implementação JSF e um conjunto de componentes JSF. Quando se começa a ler sobre JavaServer Faces você se perde pela enorme quantidade de componentes espalhados pela web, e logo confunde-se em achar que todos são implementações JSF, é aí que está o engano!

O que é necessário entender é que JSF é uma especificação criada pelo pessoal da JCP e que existem várias implementações da mesma.
Em contra partida um conjunto de componentes é um pacote com diversos componentes visuais ou não, que em sua maioria são componentes mais complexos e ricos, visualmente falando, que rodam em cima de alguma implementação JSF, estes componentes são desenvolvidos por várias empresas, existem de vários tipos e sabores, de utilidade especifica e outros de utilidade gerais, alguns são open source e outros são proprietários.

Implementações JSF

Assim como qualquer outra especificação como JPA, EJB3, JSP etc, é de se esperar que cada fabricante ou big player tenha a sua própria implementação da especificação JSF, cada fabricante implementa como bem quiser, alguns fabricantes afirmam que sua versão possui menos bugs, ou é mais rápida, ou possui menos dependências, entre outros detalhes.. no final sabemos que podemos trocar de fabricante (implementação) que nossa aplicação deverá rodar do mesmo jeito (ao menos em teoria, rss). Hoje já encontramos várias implementações do JSF, entre elas nós podemos destacar:

  • Mojarra que é a implementação da SUN (GlassFish), também (mais) conhecida como JSF RI.
  • Myfaces como a implementação open source da Apache
  • ADF Faces da Oracle
  • A implementação da BEA (já vem embutido WebLogic)
  • A implementação da IBM (já vem embutido WebSphere)
  • Backbase
  • NetAdvantage

Como podem ver existem várias implementações e com certeza devem existir ainda mais, porém a implementação mais utilizada hoje em dia para JSF 1.2 é sem dúvida a Mojarra. Para se ter idéia o pessoal da JBoss por exemplo que não possui sua própria implementação JSF 1.2 utilizam a versão Mojarra no seu servidor de aplicações.

É interessante notar que alguns fabricantes além de lançarem sua própria implementação JSF eles também desenvolvem o seu próprio conjunto de componentes para distribuírem ou venderem juntamente com a implementação, um exemplo disso é o ADF Faces, o Backbase e o NetAdvantage. Se não me engano a IBM e a BEA também possuem seus próprios conjuntos de componentes.

Conjuntos de componentes JSF

As implementações JSF por si só nos fornecem apenas componentes básicos e simples, que para a maioria dos sistemas corporativos não são suficientes. Logo sempre há a necessidade de inserirmos algum conjunto de componentes em nossos projetos, seja pela quantidade e/ou qualidade dos componentes, por serem 100% AJAX, ou simplesmente para não perdermos tempo reinventando a roda e implementando componentes já existentes e testados.

Estes conjuntos de componentes são essenciais para o desenvolvimento dos sistemas, sem eles seria muito mais difícil desenvolver aplicações com uma interface rica para o usuário. Depois do lançamento do JSF 1.2 juntamente com a especificação JEE 5.0, o número de componentes e conjuntos de componentes cresceram absurdamente, você se perde e entra em dúvidas ao tentar decidir qual conjunto de componentes utilizar no seu novo projeto.

A quantidade de componentes é tão grande e tão rica que sempre acabamos fazendo um “mix” destes componentes para obtermos uma GUI mais rica. Como todos estes componentes seguem a especificação JSF é de se esperar -ao menos em teoria- que eles funcionem juntos sem maiores problemas.

Listar todos os conjuntos de componentes JSF e falar um pouco de cada aqui seria complicado, este post iria ficar maior do que o necessário, então para quem deseja conhecer a maioria dos componentes pode ir em JSF Matrix , lá vocês encontraram uma lista (matriz) com os conjuntos de componentes mais conhecidos, com detalhes de cada um e um link para a homepage de cada.

Respondendo a pergunta..

Depende. Cada projeto necessita de certos componentes, algumas vezes um único conjunto de componentes resolve, outras vezes é necessário fazer um “mix” para obter a GUI desejada.

Mas assim como a maioria dos desenvolvedores eu tenho as minhas preferências, e sempre que posso tento usá-las. Minhas preferências são:

Mojarra + JBoss Richfaces + MyFaces Tomahawk/SandBox

Acredito que com este “mix” eu consiga desenvolver uma excelente GUI na maioria dos casos. Caso necessite de mais algum componente que não seja fornecido por este “combo” acima eu vou em busca desse bendito componente e insiro no projeto.

Enfim, o importante é desenvolver a GUI desejada e que certamente agrade ao cliente, não importando qual conjunto de componentes e/ou implementação JSF você necessite utilizar.

That’s all folks!

Tagged with: , , , ,
Posted in Java, JEE, JSF
18 comments on “Qual implementação JSF você usa?
  1. Ivan Carlos says:

    Meus parabéns Rafael, mais um post de qualidade, valeu… A propósito eu uso: JBoss Richfaces(Ajax4J) + MyFaces Tomahawk/SandBox vc já sabia.

  2. Jullierme Barros says:

    Ponte se eu tivesse lido um texto como esse quando iniciei meus estudos JSF teria me livrado de grandes dores de cabeça…. até começar a entender tantos nomes especificações e componentes srsrs….

    Quanto aos componentes, bom eu estou estudando JBoss Seam, e confesso que estou entusiasmado com o framework

    Meu conjunto eh Mojara (enquanto não sai o WebBeans)+ JBoss Richfaces – Ajax4jsf – Seam e se precisar o chartCreator.

    Parabéns pelo excelente post!

    Abraço!

  3. Esse post serve como referência para os iniciantes e as pessoas que estiverem com dúvidas sobre qual implementação e conjunto de componentes utilizar.

    Boa! :)

  4. Naskar says:

    To Ask Ponte!

    Só faltou os “porques” de tais implementações :P

    Diz Ponte.!

  5. Emanoel Tadeu says:

    Excelente post. Deveria ser a primeira leitura por todos que iniciam os estudos em jsf.

  6. Daniel Nascimento says:

    Nossa! Eu, como iniciante no mundo JSF, não poderia ter encontrado melhor lugar pra começar! Perfeito! Se o mundo do desenvolvimento fosse uma composição de posts desse tipo ninguém iria perder tanto tempo pesquisando!

  7. Raquel Carsi says:

    Muito Bom!

    RichFaces, Ajax4jsf, Tomahawk

  8. Francisco Rafael says:

    Parabéns brother mais um post com muitissíma qualidade como todos os outros. Estou aprendendo cada vez mais com seus post…valew…

  9. sombriks says:

    tá add nos favoritos que indicarei aos que me perguntarem.

  10. Jose Berardo says:

    Uma sugestão para um outro post seria fazer uma apanhado de componentes interessantes, com screenshot e descrição, talvez deixando aberto para contribuições das pessoas.

  11. Marcos Urata says:

    Rafael, parabéns pelo ótimo post.

    Estou começando a estudar JSF e fiquei apenas com uma dúvida neste teu post.

    O JBoss RichFaces não é uma implementação da especificação do JSF?

    Se for, então eu não entendi o que vc quis dizer no trecho abaixo:

    “…Para se ter idéia o pessoal da JBoss por exemplo que não possui sua própria implementação JSF 1.2 …”

    Valeu e parabéns pelo blog

  12. Rafael Ponte says:

    Oi Marcos,

    Obrigado!

    Sim, Richfaces não é uma implementação da especificação. A JBoss não possui sua própria implementação, ela se utiliza do Mojarra (implementação RI da Sun), contudo a JBoss tem seu próprio conjunto de componentes, no caso é o Richfaces.

    Lendo o restante do paragrafo eu comentei isso:
    “Para se ter idéia o pessoal da JBoss por exemplo que não possui sua própria implementação JSF 1.2 utilizam a versão Mojarra no seu servidor de aplicações.”

    Valeu.

  13. Raphael says:

    Parabéns pelo Post cara!
    Me ajudou mto!
    Obrigado!

  14. Cláudio Xavier says:

    Rafel,
    Parabéns por esse post e por todo seu trabalho.
    Até hoje não encontrei nenhuma informação tão rica e completa como as postadas por você. Seus post´s tem me ajudado muito. Obrigado!

  15. Masami says:

    Valew kra!
    excelente o post, vou começar meus estudos em jsf e esse post tirou a maioria das minhas duvidas.

6 Pings/Trackbacks for "Qual implementação JSF você usa?"
  1. [...] Richfaces/Ajax4jsf, para falar a verdade ele é o melhor conjunto de componentes ricos para JSF que na minha opinião e na opinião de muitos outros desenvolvedores da lista de discussão JavaSF. Ele é bem estável, [...]

  2. [...] é de conhecimento da maioria que JSF sozinho [apenas a implementação] não nos fornece os recursos necessários para desenvolver médias ou grandes aplicações webs de [...]

  3. [...] não seria diferente. Acredito que em primeiro lugar é importante entender o que é JSF e qual a diferença entre uma implementação e um conjunto de [...]

  4. [...] ao menos é como eu o chamo!) e só acontece quando trabalhamos com JSF e Ajax – independente do conjunto de componentes – mais especificamente após tentarmos repintar (ou rerenderizar, como você queira chamar) um [...]

  5. [...] post “Qual implementação JSF você usa” do Rafael Ponte é uma boa leitura sobre o [...]

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>