Limpando a árvore de componentes no JSF 2.2

Um dos posts no meu blog que mais ajudou desenvolvedores foi o post sobre Limpando a árvore de componentes, pois nele discutimos como os componentes são trabalhados durante o ciclo de vida, o que evita vários problemas no dia a dia.

As técnicas para limpar a árvore que ensinei funcionam até hoje, no entanto, para nossa sorte, o expert group resolveu adicionar a funcionalidade na API e componentes no JSF 2.2. A partir de agora, a limpeza da árvore ficou mais simples e até mais performática na última versão do faces! Então o melhor a se fazer é tirar proveito desse novo recursos em nossas aplicações!

Para conhecer as mudanças na tag f:ajax e os novos métodos na API do JSF, você pode ler o post no blog dos instrutores da TriadWorks, limpando formulários e componentes no JSF 2.2, onde apresentamos todos os detalhes que você precisa saber para usar este novo recursos!

Comentários sobre o 1º Juazeiro do Norte JavaDay

No último sábado, 31 de Maio, participei do 1º Juazeiro do Norte JavaDay, evento este que ocorreu na FJN com o apoio do CEJUG. Como eu havia comentado antes, o evento contou com 4 (quatro) palestrantes falando uma manhã inteira sobre tendências e tecnologias Java. O auditório estava lotado e o pessoal estava bem interessado nas palestras.

Fora o evento ter sido muito bacana eu também gostei da cidade e da receptividade do povo de lá, como o Sidney, o Leonardo e o Carlos, houveram outros, porém não me recordo dos nomes, no entanto gostaria de agradecê-los pela paciência, apoio e boa vontade oferecidos durante nossa estadia em Juazeiro.

Algumas fotos do evento abaixo para recordar:

E os slides apresentados no evento,

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!