JavaServer Faces é uma de especificação JEE que padroniza um framework MVC voltado para o desenvolvimento de aplicações Web. O seu surgimento foi um acontecimento natural da evolução do modelo de desenvolvimento de aplicativos web utilizado durante os últimos anos utilizando a especificação dos Servlet e JSP.
A grande vantagem prometida através do JSF é que a especificação seria utilizada como referência para propiciar o venerado “ambiente de desenvolvimento rápido”, tanto na camada visão, como no lado do servidor. A partir dela, as empresas responsáveis por fornecer IDE poderiam então ter um padrão sólido e bem definido para construir ferramentas nos estilos RAD como Delphi e Visual Basic voltadas especificamente para aplicativos web com java.
O JSF teve sua expressão na versão 1.1 quando implementado pela comunidade do Java Community Process – JCP, evidenciando maturidade e segurança. A versão atual é a 1.2 e já temos a previsão da versão 2.0 com inúmeras melhorias. Atualmente JSF é considerado por muitos como a última palavra em termos de desenvolvimento de aplicações web com java, resultado da experiência e maturidade adquiridas ao longo de sua evolução. Segue um resumo da especificação:
Características básicas:
* Arquitetura MVC padronizando a separação/funções que envolvem a construção de aplicações web.
* Permite que o desenvolvedor crie UIs através de um conjunto de componentes UIs pré-definidos;
* Modelo de programação dirigido através de eventos entre as camadas de visão e o servidor.
* Modelo de componentes que permita desenvolvedores/empresas independentes fornecerem componentes adicionais entre si de forma padronizada e reutilizável.
* Validação e conversão de dados.
* Internacionalização
* Manipulação de erros.
Livros
Para aqueles de que desejam aprender e entrar no mundo do desenvolvimento JSF, seguem abaixo as principais referências de livros sobre o assunto:
1. Core JavaServer Faces – Livro com conteúdo básico e fundamental indicado para aqueles que estão começando na tecnologia. O livro é muito bem estruturado, apresentando cronologicamente fundamentos, conceitos e recursos oferecidos pela tecnologia.
2. Mastering JavaServer Faces – Ótimo livro com conteúdo básico e fundamental e muito focado nas filosofias MVC com os conceitos que suportam a existência da tecnologia. Da mesma forma que o Core JSF, muito bem estruturado, apresentando todas as opções disponíveis na tecnologia e alguns exemplos de aplicações reais e um ótimo exemplo de conversão de aplicativos feitos em Struts 1.x em JSF.
3. JavaServer Faces in Action – Este livro foge um pouco da proposta padronizada pelas séries “In Action” que sempre foram conhecidas por ter livros de referências de projetos, sendo que na maioria dos casos não é recomendado para iniciantes. Este livro, no entanto, pode ser usado por aqueles que não possuem nenhum conhecimento do assunto, sendo que o mesmo traz um ótima introdução e overview da tecnologia suficiente para que mais tarde o leitor possa se aprofundar no conteúdo com facilidade. Atualmente é uma das principais referências do assunto.
Algo muito importante lembrar é que a tecnologia JSF foi concebida sobre outras especificações JEE dos componentes denominados Servlets e JSP. Isso significa que, antes de se aprofundar no JSF, é recomendável que o candidato tenha uma breve noção de servlets, jsp e suas vertentes. Para aqueles que não possuem essa base, eu recomendo o livro Use a cabeça Servlet e JSP, que contempla o conteúdo com altíssima qualidade.
E para aqueles que começarem a utilizar, segue um resumo básico das implementações, kit de componentes visuais/não-visuais existentes na atualidade:
Implementações
Myfaces – Implementação da Apache Software Fundation.
Mojarra – Implementação da Sun Microsystem (RI).
ADF – Implementação da Oracle.
ICEFaces – Não é exatamente uma implementação, sendo uma extensão sobre alguma implementação alterando o comportamento padrão da mesma. Também possui vários componentes visuais.
Shale – Framework Web baseado em JSF com algumas mudanças.
Kit Componentes:
Apache Tomahawk – Componentes da Apache Software Fundation.
JBoss Ajax4JSF – Componentes que acrescentam funcionalidades AJAX nos componentes padrão da especificação implementado pela JBoss.
JBoss RichFaces – Excelentes componentes da JBoss (Mais usados atualmente).
Yahoo for JSF – Componentes visuais diversos da Yahoo.
DynaFaces – Componentes que acrescentam funcionalidades AJAX nos componentes padrão da especificação implementado pela da SUN.
Jenia Faces – Vários componentes diferenciados.
Web Galileo Faces – Vários componentes diferenciados.
Mojarra UI – A implementação da SUN tem vários componentes extras interessantes.
RestFaces – Componente que acrescenta funcionalidade de utilizar JSF com envio do submit com HTTP GET e seus detalhes.
GMaps4JSF – Componentes da Google integrando o GoogleMaps com o modelo de JSF.
O melhor de tudo é que você pode usar todos no mesmo projeto, muito embora não seja necessário.
PrimeFaces – Kit de componentes visuais para especificação do JSF. Ele está dividido em 3 módulos básicos:
1. Componentes UI – módulo com componentes RIA. Baseado no Yahoo UI Library, controlando todo a geração pesada de JavaScript e amarrações com o lado do servidor.
2. Optimus – módulo que providencia uma série de facilidades em soluções para JSF. Ele remove a grande sobrecarga de manipulação de arquivos XML, providenciando anotações baseados em container IOC Guice Framework.
3. FacesTrace – módulo com o objetivo de ser utilizado como apoio de desenvolvimento.
Woodstock é mais uma opção de kit de componentes visuais GUI para aplicativos web baseados em funcionalidades AJAX.
OpenFaces é mais um kit de componentes JSF open-source baseados em AJAX com uma série de recursos interessantes que podem ser usados em aplicativos web.
JSF Sourceforge.net – diversos componentes visuais e não-visuais disponíveis para JSF. ChartCreator, acegi-jsf, client-validators, excel-creator, htmpainel, on-load etc…
Dicas
Eu sempre estou acompanhando os blogs de java da galera pela web e atualmente encontramos uma série deles com um pessoal de alto nível!!! Nestas surfadas, acabei agrupando algumas dicas fundamentais para o desenvolvimento utilizando JSF. As primeiras são do Blog do Rafael Ponte que apresenta um conjunto de dicas e usabilidades gerais interessantes:
4.Entendendo Redirect X Forward
5.Controlando Nomeação dos GUI
6.Controle do Estado – Cliente X Server
8. Os 10 maus hábitos que devem ser evitados em JSF.
As próximas são do Blog do Balusc, que contém uma série de dicas de usabilidades gerais avançadas:
1.Passing action parameters from JSF to backing beans
2.Passing GET parameters from JSF to backing beans
3.Passing component attributes from JSF to backing beans
4.Passing objects from request to request
5.Passing new hidden values to backing beans
6.Communication between managed beans
7.Injecting managed beans in each other
8.Accessing another managed bean
9.Returning current managed bean instance of self
10.Lookup the managed bean name inside the backing bean
11.Accessing the FacesContext inside HttpServlet or Filter
Para qualquer dúvida ou ajuda de qualquer coisa relacionada com JSF, existe um grupo brasileiro que contém inúmeras pessoas e fóruns disponíveis a dar todo o auxilio possível. Por hoje é isso, galera…até a próxima oportunidade.