O que esperar do JSF 2.0

O lançamento

Acaba de ser lançado a Reference Implementation (RI) Beta do JSF2.0. Com o nome de Mojarra, continuando com o mesmo nome da versão 1.2 da implementação da Sun,  a nova especificação está trazendo diversas melhorias e acertos em relação as versões anteriores, nesta versão realmente há muitas features interessantes e que alavancará a produtividade no desenvolvimento com JavaServer Faces.

As features

Entre as diversas features e melhorias, existem algumas que eu gostaria de destacar:

  • Um novo ciclo de vidas no lado cliente (browser), ou seja, agora será bem mais fácil integrar e criar componentes com frameworks e APIs javascript como ExtJS ou Yahoo API, quem sabe em breve não vejamos um Ext4JSF por aí? Além do mais será mais rápido e prático implementar interfaces do tipo “on a single page interface web application“, já que todo o processamento da interface gráfica ficará no lado cliente!
  • Escopos de conversação, finalmente!! Feature esta que realmente fazia (faz?) falta ao se desenvolver com JSF, atualmente somos obrigados a se utilizar de frameworks ou componentes como Myfaces Tomahawk, JBoss Seam, Spring Annotation entre outros.
  • Agora teremos “Zero Configuration“, ou seja, esqueça faces-config.xml, esqueça web.xml !! Provavelmente configuraremos tudo por annotations.
  • Outra feature necessária e que também fazia uma falta em tanto é a Exception Handler, agora depois de um erro lançado poderemos encaminhar o usuário para uma página de erro.
  • Annotations, e muitas annotations para declarar artefatos como managed bean, componentes, regras de navegação etc.
  • Suporte a templating, algo próximo no estilo do Facelets.
  • Suporte a submissão com método HTTP GET, ou seja, bookmarking.
  • Agora com AJAX nativo no ciclo de vida. A incompatibilidade entre os conjuntos de componentes será absurdamente menor, já que a falta de uma especificação AJAX para JSF era um dos maiores causadores de tanta incompatibilidade!
  • Acessar recursos JSF através de REST, wow!
  • Agora será possível executar uma ação (método?) ao carregar uma página.
  • Salvar e recuperar parcialmente estados da árvore de componentes (Isso vai trazer uma melhoria significativa à perfomance).

Como podem ver, são inúmeras melhorias significativas -na minha opiniao- para esta nova versão, e provavelmente surjam outras já que a especificação está ainda em rascunho. No site da JCP há as demais features e melhorias sobre esta versão.

Concluindo

Uma das maiores dúvidas em relação a esta versão é a tal da retrocompatibilidade, eu particularmente acredito que a versão 2.0 do JSF será compatível com as versões anteriores (ao menos com a JSF1.2) pois há o envolvimento de Big Players na especificação e encarar as versões anteriores como legados descontinuados é algo radical demais para o mercado, porém é quase que certo que será necessário abrir mão da compatibilidade em algum ponto para aproveitar os recursos da nova versão.

Enfim, JSF2.0 está vindo com tudo. Enquanto aguardamos a versão final já podemos brincar com a versão beta do Mojarra para JSF2.0.

Não era mais uma receita de bolo JSF!

É incrível como depois do post Utilizando AJAX com JSF de maneira eficiente muitos desenvolvedores tem utilizado o exemplo básico do post -que nada mais era do que uma prova de conceito- como receita de bolo para criar aplicações sérias. Talvez eu não tenha sido claro, mas o intuito do post não era demonstrar um passo-a-passo de como desenvolver uma aplicação com alguns conjuntos de componentes, mas sim passar o conceito de como aproveitar melhor os recursos oferecidos pela tecnologia para criar aplicações mais ricas e leves.

Eu tentei ao máximo deixar claro que não eram os componentes X, Y ou Z que me forneciam recursos para implementar o conceito, como está bem claro nos trechos do post abaixo:

Utilizar um conjunto de componentes ricos e um framework AJAX. (Neste caso eu optei pelo Richfaces/Ajax4jsf por ser bastante simples de usar e integrar, por ser estável e por ser bastante utilizado na comunidade, contudo, qualquer outro conjunto de componentes AJAX poderia ser utilizado, como Trinidad ou mesmo o IceFaces);

E este,

Eu não me prendi a utilização dos frameworks ou conjuntos de componentes utilizados pois este não era o intuito do post, isso é algo simples e acredito que a maioria dos leitores não tenham dificuldades em relação a isso. Além do mais é possível implementar isso não somente com o Richfaces/Ajax4jsf, mas com qualquer outro framework ou conjuntos de componentes AJAX, por exemplo, […]

Não é necessário utilizar Richfaces/Ajax4jsf, Tomahawk e Facelets para aproveitar os recursos da tecnologia de forma eficiente, você poderá conseguir isso com qualquer outro framework ou conjunto de componentes que te permitam unir AJAX e JSF de maneira prática, sejam eles Trinidad, JBoss Seam, IceFaces, Ajax4jsf, ADF Faces e/ou JSFTemplating.

Mais claro que isso é impossível.. porém ainda não acabou, um fato engraçado é que alguns desenvolvedores chegaram a se queixar de que eu fui muito radical ao dizer para desenvolverem toda uma aplicação em uma única página. Eu em nenhum momento disse ou mesmo insinuei isto, o que eu disse foi:

A idéia principal tem por objetivo evitar escrever muitas páginas para representar cada view (tela), diminuindo assim o número de páginas no projeto, o número de regras de navegação no faces-config.xml, diminuindo o overhead no servidor e no cliente a cada refresh de página, […]

Vocês não precisam e provavelmente não deveriam implementar suas aplicações seguindo o exemplo do post, ele é básico, ele serve como referência, possui uma implementação simples e não se preocupa com alguns requisitos não funcionais como a paginação sob demanda ou quais os objetos que deveriam permanecer entre as requisições. Além do mais o exemplo é um CRUD, e não uma interface com o usuário mais complexa no sistema.

Entendam uma vez por todas que não existe uma arquitetura de referência ou receita de bolo para desenvolver sistemas, cada sistema possui suas necessidades e peculiaridades, e estas devem ser estudadas e analisadas para se chegar a uma solução plausível.

O importante é que vocês compreendam o conceito, seus prós e contras e principalmente onde e quando utiliza-lo. Não se prendam ao framework ou conjunto de componentes, a maioria deles hoje em dia te fornecem os recursos necessários para implementar a idéia sem muitas dificuldades.

Enfim, estudem, entendam, aprimorem, façam testes e implementem o conceito onde for necessário, com os componentes e frameworks cabíveis e sempre com bom senso.

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,