Atenção: esse artigo tem um vídeo complementar. Clique e assista!

Artigo no estilo: Curso

De que se trata o artigo:

Da plataforma Java EE (Enterprise Edition), cuja versão mais recente, Java EE 6, foi publicada em dezembro de 2009. A plataforma consiste em uma coletânea de outros padrões, como Servlets, JSF, JPA, etc., que permitem que desenvolvedores foquem na construção da lógica de negócio de suas aplicações, deixando serviços de infraestrutura sob a responsabilidade da plataforma. Esta é a segunda parte de uma série de artigos sobre o tema, portanto sugere-se a leitura da primeira parte na Edição anterior da Java Magazine.


Para que serve:

Para o desenvolvimento de aplicações de médio e grande porte que exijam características como escalabilidade, distribuição, segurança, etc., conhecidas como aplicações corporativas (enterprise). Em sua nova versão, Java EE 6 simplifica ainda mais o desenvolvimento deste tipo de aplicação (continuando o que já havia sido feito na versão anterior), trazendo maior flexibilidade e extensibilidade à plataforma.

Em que situação o tema é útil:

Quando precisamos desenvolver aplicações corporativas e gostaríamos de uma solução flexível e que promova a produtividade do time de desenvolvimento, tratando com certa transparência os serviços de infraestrutura necessários. O artigo foca nas novidades da versão 6 da plataforma Java EE, sendo pensado para desenvolvedores com alguma experiência em Java EE 5, porém desenvolvedores que não possuem experiência com versões anteriores de Java EE poderão também se beneficiar com os exemplos que mostram como desenvolver uma aplicação corporativa do zero (continuando o que já foi desenvolvido na primeira parte desta série de artigos).

Java EE 6 na Prática – Parte 2:

Continuamos a apresentar as novidades da plataforma Java EE 6, aplicando-a na prática e construindo uma pequena aplicação corporativa de exemplo. Na primeira parte da série, apresentamos uma visão geral da plataforma e começamos a desenvolver um Sistema de Controle de Ambulâncias (SisContrAm). Nesta segunda parte, continuamos o desenvolvimento do SisContrAm, mostrando outras funcionalidades da nova versão da plataforma. Começamos por apresentar o Facelets como uma melhor opção para construção das páginas Web que o JSP (Listagem 1), mostrando também que é possível usá-lo para criar um decorador que aplique um mesmo leiaute a todas as páginas (Listagens 2 a 4) e para criar componentes visuais a serem reutilizados (Listagens 5 a 8). Introduzimos, em seguida, a nova API de Critérios do JPA 2.0, implementando a funcionalidade de login (Listagens 9 a 11), a qual finalizamos como exercício do que já vimos anteriormente sobre CDI, aproveitando para incrementar nossos componentes visuais Facelets (Listagens 12 a 17). Em seguida, explicamos mais a fundo sobre conversações, parte do CDI que foi visto na primeira parte do artigo, detalhando seu funcionamento (Listagens 18 a 20) e mostrando como gerenciar várias conversações ao mesmo tempo (Listagens 21 a 24). Por fim, apresentamos o suporte a AJAX, embutido no JSF 2.0 (Listagens 25 e 26) e sua integração com o Bean Validation, que já havíamos apresentado antes (Listagens 27 e 28).

Esta é a segunda parte de uma série de artigos sobre a plataforma Java EE 6, iniciada na Edição 80 da Java Magazine. Naquela edição, apresentamos uma visão geral da plataforma Java Enterprise Edition 6, lançada em dezembro de 2009, e começamos o desenvolvimento de uma aplicação real utilizando a plataforma. Por meio desta aplicação, mostramos algumas novidades da nova versão, como: novas funcionalidades do JPA 2.0, Bean Validation e o CDI, Contexts and Dependency Injection.

Nesta edição, continuaremos a desenvolver o SisContrAm, nosso sistema de controle de ambulâncias, e mostraremos mais novidades do Java EE 6:

Facelets: apresentado como framework para substituir o uso de JSP com JSF 1.x, Facelets agora foi incorporado à plataforma Java EE 6 e é a escolha padrão para a construção de páginas Web com JSF 2.0. Além de utilizar o padrão XHTML para construção das páginas, o que já traz algumas vantagens, Facelets permite a criação de decoradores que podem ser utilizados para aplicação de leiaute gráfico automaticamente em todas as páginas e criação de componentes visuais a serem reutilizados;

API de Critérios: em versões anteriores da JPA (Java Persistence API), para recuperar objetos do banco de dados a única opção disponível era a criação de consultas em JPQL (Java Persistence Query Language). Com o JPA 2.0 agora é possível criar consultas de forma programática utilizando a API de Critérios. Consultas programáticas podem ser verificadas em tempo de compilação;

Conversações: a introdução do CDI na plataforma Java EE permite que sejam criados componentes com escopo definido: requisição, sessão, conversação, aplicação ou dependente. Neste artigo elaboraremos um pouco mais sobre o contexto de conversação, explicando como funciona e como gerenciar múltiplas conversações entre clientes e aplicação. Conversações aliviam o programador de uma série de tarefas tediosas e complicadas de infraestrutura;

AJAX: hoje em dia a maioria das aplicações Web possuem suporte a AJAX, o que permite que partes da página sejam recarregadas mediante uma requisição JavaScript, que promove uma maior interatividade entre cliente e servidor. A versão 2.0 de JSF vem com suporte a AJAX embutido, assim não é necessário adaptar um framework externo para utilizar esta tecnologia. Mostraremos como fazer requisições AJAX utilizando as tags padrão do JSF.

Apresentaremos estas tecnologias desenvolvendo as funcionalidades de login e de registro de chamadas de emergência, além de evoluir o cadastro de ambulâncias apresentado na primeira parte da série.

Decoração de páginas com Facelets

Facelets foi criado em 2005 como uma alternativa ao JSP para criação de páginas JSF. O uso de JSP como tecnologia de visão (renderização de páginas Web) do JSF pode causar alguns problemas devido a incompatibilidades entre ambas as tecnologias. Para o leitor interessado em aprofundar-se na questão, um artigo de Hans Bergsten (em inglês) explica o assunto em mais detalhes (veja Links).

Nas versões 1.1 e 1.2 de JSF, Facelets era utilizado como framework externo. Porém, dado a sua grande aceitação, foi incorporado como tecnologia padrão para criação de páginas do JSF 2.0, que por sua vez é parte da plataforma Java EE 6. De fato, na primeira parte desta série de artigos utilizamos Facelets para as páginas do cadastro de ambulância. A Listagem 1 mostra o código-fonte da página com o formulário de cadastro de ambulância, já apresentado na edição anterior.

Aproveitamos para publicar uma correção em nosso código, destacado em negrito na Listagem 1: a inclusão do parâmetro immediate="true" no botão Cancelar. Sem este parâmetro, o processo de validação entraria em ação mesmo se o usuário quisesse cancelar o cadastro.

Listagem 1. Página com o formulário de cadastro de ambulância.


  <?xml version='1.0' encoding='UTF-8' ?>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
      <title>Cadastro de Ambulâncias</title>
    </h:head>
    <h:body>
      <h1>Cadastro de Ambulâncias</h1>
   
      <h:form>
        <p>Número: <h:inputText value="#{ctrCadastrarAmbulancia.ambulancia.numero}" /></p>
        <p>Placa: <h:inputText value="#{ctrCadastrarAmbulancia.ambulancia.placa}" /></p>
        <p><h:commandButton action="#{ctrCadastrarAmbulancia.salvar}" value="OK" />
        <h:commandButton action="/cadastrarAmbulancia/lista.xhtml" value="Cancelar" 
          immediate="true" /></p>
      </h:form>
    </h:body>
  </html> 

Páginas Web em Facelets são geralmente escritas em XHTML, uma especificação de HTML utilizando XML. Uma vantagem deste formato é que as páginas podem ser verificadas em tempo de compilação se estão bem formadas, se os parâmetros dos componentes (das tags) foram especificados corretamente, etc.

Facelets vem, ainda, com um framework de decoração integrado que permite criar de forma fácil um arquivo de leiaute gráfico do sistema a ser aplicado a todas as páginas. Desenvolvedores Web que já utilizaram frameworks de decoração como Tiles ou SiteMesh já estão familiarizados com o conceito. A ideia consiste em definir o leiaute do sistema em um único arquivo e aplicá-lo a todas as páginas do sistema automaticamente. É possível também criar vários leiautes e aplicá-los a diferentes seções do site ou ainda escolhê-los dinamicamente (ex.: permitir que o visitante altere o leiaute utilizado).

Para o SisContrAm nos basearemos no leiaute gratuito “Communication”, que pode ser obtido no site “Free CSS Templates” (veja Links). Este leiaute é composto por uma página HTML, uma folha de estilo CSS e algumas imagens. Como sugestão, em SisContrAm-war/Web Pages, criaremos a pasta arquivos, com as subpastas estilos (na qual colocamos a folha de estilo provida pelo leiaute), imagens (na qual colocamos as imagens) e modelos, na qual iremos criar nosso decorador. Note que ao separar os arquivos nestas pastas tanto o código CSS quanto o HTML devem ser adaptados às novas localizações dos diferentes arquivos.

...

Quer ler esse conteúdo completo? Tenha acesso completo