JSF 2 e PrimeFaces: Primeiros passos - Parte 1
Este é o primeiro de uma série de três artigos que apresentarão, em detalhes, a arquitetura de um poderoso framework no desenvolvimento de interfaces com o usuário em soluções Java para a web, o JavaServer Faces.
Artigos Java JSF 2 e PrimeFaces: Primeiros passos - Parte 1
JSF e o PrimeFaces - Parte 2
JSF e o PrimeFaces - Parte 3
Este é o primeiro de uma série de três artigos que apresentarão, em detalhes, a arquitetura de um poderoso framework no desenvolvimento de interfaces com o usuário em soluções Java para a web, o JavaServer Faces. A série abordará não apenas toda a API do JSF, mas também as particularidades da biblioteca PrimeFaces.
O principal intuito desta série é colaborar para a ampliação da bagagem técnica de desenvolvedores já atuantes em web, sem deixar de ser convidativa também para iniciantes, apresentando de uma forma didática e construtiva todos os conceitos fundamentais do framework e de seus componentes e especializações.
Dominar ou ao menos conhecer a essência das ferramentas disponíveis para o desenvolvimento de soluções web baseadas na plataforma Java continua sendo um grande diferencial para todo programador. Com esta série de artigos que se inicia a partir de agora, esperamos trazer ao leitor as principais características da especificação JSF, traduzidas em sua implementação mais popular, o PrimeFaces. Cada atividade desempenhada pelo framework será apresentada em detalhes, e o que esperamos é proporcionar ao leitor o entendimento de tudo aquilo que acontece com seu código em tempo de execução, munindo-o de recursos para utilizar o framework JavaServer Faces de maneira mais consciente e otimizada.
Iniciaremos, com este artigo, uma série sobre desenvolvimento web utilizando JSF. Passaremos pelos conceitos da especificação e navegaremos por sua implementação mais popular, o PrimeFaces, explorando alguns dos seus componentes e mostrando como é possível fazer uso da plataforma Java para desenvolver web sites ricos, atraentes e funcionais de maneira simples, organizada, legível e gerenciável.
A especificação Java Enterprise Edition (ou simplesmente Java EE) indica o JSF como framework preferencial para o desenvolvimento de toda a camada de interface com o usuário. A partir da versão 2.0 deste framework, chegou às mãos dos desenvolvedores o padrão Facelets, um poderoso substituto para as famosas páginas JSP (que são uma especialização da API de Servlets para criação de páginas web contendo chamadas a código Java), que estudaremos ao longo da série.
Para tornar mais fluido o estudo de uma API tão vasta como esta, desenvolveremos um web site de um grupo musical, contendo seções como agenda de shows, repertório e história do grupo e de seus integrantes.
Adotaremos a biblioteca PrimeFaces para construir esta aplicação. Além de ser a implementação mais completa do JSF e oferecer componentes mais atraentes e completos do que suas concorrentes, é também a biblioteca mais popular entre os desenvolvedores, de evolução constante e com rica fonte de consulta e estudo, além de um show case muito bem estruturado. Este show case, inclusive, é um recurso que colabora muito no aprendizado e no uso da biblioteca.
Para quem se interessar em pesquisar alternativas ao PrimeFaces, recomendamos que foquem principalmente em duas opções: o ICEfaces e o RichFaces. A referência para estas implementações pode ser encontrada na seção Links. Não deixe de conferir.
No primeiro artigo da série, tomaremos o cuidado de iniciar uma navegação calma e detalhada pelos conceitos fundamentais do JSF. São informações muito importantes, parcialmente ignoradas por muitos desenvolvedores mais novos devido à facilidade em encontrar respostas rápidas na web nos dias de hoje. O aprendizado sob demanda adotado pelas novas gerações, principalmente em virtude do ritmo frenético imposto pelas empresas de desenvolvimento, tem resultado na formação de profissionais orientados a cenários de uso, com baixo conforto nas tecnologias com as quais trabalham. É com olhos atentos a este fenômeno que decidimos iniciar pela base.
No segundo artigo, aplicaremos boa parte dos conceitos abordados nesta parte no desenvolvimento do portal para um grupo musical, introduzindo outros que não entrarão neste primeiro artigo por questão de espaço, como composites, templates e desenvolvimento de componentes customizados.
Também no segundo artigo, já começaremos a explorar os recursos do PrimeFaces utilizando alguns de seus componentes em um portal para um grupo musical. Cada componente que utilizarmos será analisado passo a passo tanto do ponto de vista estrutural quanto comportamental. Verificaremos como esta poderosa biblioteca se vincula à especificação JSF, observando suas principais interfaces. Faremos ainda uma análise da versão desta biblioteca destinada ao desenvolvimento de mobile sites, assunto cada dia mais quente no cenário de desenvolvimento de software.
O terceiro e último artigo encerra nosso estudo, reunindo reflexões a respeito do JSF e sua arquitetura. Teremos, ao final desta série, uma aplicação web completa, cujo código-fonte será disponibilizado e com o qual pretendemos presentear o leitor com uma base razoável de consulta para que possa, assim, desenvolver com maior segurança e conforto suas aplicações web.
Como o foco desta série é discutir sobre o JSF, não incluiremos nenhum outro framework popular na construção de aplicações web em Java, como Spring, JPA, Struts, entre outros. Podemos discutir sobre cada um deles em outros artigos, em outras oportunidades.
Apesar do foco deste artigo ser o JSF e suas implementações, é importante lembrar que o desenvolvimento Java para a web vai além, muito além disso. Existem alternativas a esta abordagem que podem ser empregadas no desenvolvimento da interface com o usuário. É possível desenvolver as páginas de uma solução web a partir de páginas JSP e também via frameworks talvez até desconhecidos de muitos, como o Jetspeed, utilizado em alguns projetos legados de grandes empresas para o desenvolvimento de páginas seguindo o modelo de portlets. Para quem se interessou e quer consultar os detalhes a respeito desta biblioteca, não deixe de conferir a seção Links ao final do artigo.
JSF é interface com o usuário
Antes de começarmos efetivamente a falar sobre JSF, é importante entendermos o papel a que este framework se presta. Devemos utilizá-lo para tratar exclusivamente da camada de apresentação de aplicações web. Não é, portanto, sua função cuidar de aspectos relacionados à lógica de negócio, persistência de dados, serviços web, integração entre sistemas ou conexões com sistemas de informação em geral, havendo outras tecnologias dedicadas exclusivamente a esses propósitos.
Para falarmos sobre ambiente, começaremos listando algumas perguntas que nos ajudarão a identificar tudo o que nos é necessário para desenvolver soluções em Java para a Web:
1. Como faço para desenvolver?
2. Como faço para testar?
3. Como faço para publicar?
Comecemos pela última, a publicação. Toda aplicação web deve ser implantada em um servidor físico. Porém, não é somente isso. É necessário, ainda, um sistema que gerencie nossas aplicações, controlando seu ciclo de vida e outros aspectos gerais como alta disponibilidade e segurança, gerenciamento de memória, dentre outros.
A plataforma mais básica de gerenciamento de soluções web é um web container, também tratado na literatura por web servers. O mais popular web container é, sem dúvidas, o Apache Tomcat, uma solução gratuita e de código aberto, encubada pela fundação Apache. Outro web container bem conhecido e utilizado em produtos como SUP, da Sybase, é o Jetty.
A alternativa a web containers, mais completa e robusta e já contendo toda a especificação Java EE em sua distribuição (o que significa termos um ambiente com suporte a tecnologias como EJB, Servlets, JSP e JSF), é conhecida como servidor de aplicação. Alguns dos servidores de aplicação mais populares no mercado são: GlassFish, da própria Oracle, JBoss AS, WebLogic e SAP AS. Consulte a seção Links, que contém referências para cada projeto acima citado.
E o que falar sobre o desenvolvimento das aplicações propriamente dito? Neste caso, normalmente usufruímos dos recursos de poderosas ferramentas conhecidas como IDEs (ambientes integrados de desenvolvimento), dentre as quais se destacam IntelliJ IDEA, Eclipse e NetBeans. Embora o Eclipse seja a ferramenta preferida da grande maioria dos desenvolvedores, principalmente por ser gratuito, oferecer uma interface limpa e objetiva, ser mais leve e permitir um controle bem eficiente do código-fonte, o NetBeans é uma ferramenta também gratuita que apresenta mais aceleradores que o primeiro, tanto para configuração quanto para o desenvolvimento de soluções Java para Web.
O teste das aplicações em nível de páginas web pode ser realizado através de complementos (como o Firebug) ou através de recursos já incorporados em navegadores como o Google Chrome, mas a grande vantagem que o desenvolvedor encontra no desenvolvimento de soluções baseadas na especificação Java EE é a possibilidade de depurar código Java diretamente nessas IDEs acima mencionadas. O teste, portanto, fica muito mais viável, cabendo a nós estabelecermos breakpoints em nosso código para, a partir deles, analisarmos desde chamadas a métodos a, se assim desejarmos, toda a árvore de componentes da página em exibição (ou a ser exibida).