Neste cenário, a camada Model será implementada com CDI, JAX-RS e JPA, da especificação Java EE, a camada Control será escrita utilizando o AngularJS e a camada View será projetada com a linguagem de marcação HTML, as diretivas do AngularJS e os componentes responsivos do Bootstrap.
Será
mostrado neste artigo que, com o uso destas tecnologias, os lados cliente e
servidor estarão desacoplados um do outro, limitando-se a trocarem informações através
do protocolo HTTP e utilizando estruturas de dados em JSON, promovendo maior
reaproveitamento de código.
Autores: Lucas de Oliveira Pires e Carlos Eduardo de Carvalho Dantas
Desde o surgimento da plataforma J2EE, em 1999, a cada nova versão desta especificação, que a partir de 2006 passou a ser chamada de Java EE e atualmente encontra-se na versão 7, novas APIs são adicionadas e outras já consolidadas são aperfeiçoadas, formando um conjunto poderoso de funcionalidades disponíveis aos desenvolvedores.
Estas funcionalidades ajudam a reduzir parte da complexidade da implementação de aplicações, especialmente quando envolvem requisitos não-funcionais relativamente complexos, como transações, web services, cache, balanceamento de carga, etc.
Dentre estes requisitos, um dos mais esperados nos últimos anos é a separação física (tiers) e/ou lógica (layers) de camadas, utilizando para isso soluções arquiteturais como o MVC (Model View Control). Neste cenário, a especificação Java EE fornece diversas opções, a saber:
· JPA (JSR 220): viabiliza o mapeamento objeto-relacional, aumentando a produtividade na implementação de operações com bancos de dados;
· CDI (JSR 299): gerencia as dependências dos objetos, diminuindo o acoplamento entre classes;
· JAX-RS (JSR 331): define um padrão para criação de web services de acordo com o REST, permitindo que a camada Model responda a requisições de softwares escritos em diversas tecnologias, o que eleva a interoperabilidade.
Estes recursos geralmente são empregados na camada Model, pois o código-fonte que os utiliza controla dados e regras de negócio da aplicação. Já para as camadas View e Control, existem diversas opções a serem consideradas além das soluções disponibilizadas pela Java EE, especialmente para aplicações web. Para esta finalidade a plataforma enterprise do Java possui algumas especificações, sendo a mais utilizada o JSF, por sua fácil integração com outros recursos do Java, além do vasto conjunto de componentes que são fornecidos por suas implementações, o que possibilita a construção de interfaces ricas. Contudo, este framework possui algumas limitações, como:
· Persiste todo o estado da interface gráfica na memória do servidor, diminuindo o throughput da aplicação;
· Dependência de desenvolvedores Java para construir a camada View;
· Alta curva de aprendizado, pois seu ciclo de vida é relativamente complexo de entender.
Diante disso, diversos frameworks JavaScript têm sido apontados como opções razoavelmente boas para implementar as camadas View e Control. Dentre estes, um dos mais conhecidos atualmente é o AngularJS. Este framework se adapta e estende o HTML tradicional, adicionando conteúdo dinâmico. Além disso, é capaz de abstrair o acoplamento entre o lado cliente e o lado servidor da aplicação, viabilizando que o desenvolvimento desta evolua em ambos os lados de forma paralela, pois a comunicação entre estes lados ocorrerá por um protocolo conhecido (HTTP), utilizando estruturas de dados que possuem formato também conhecido (JSON).
Além do AngularJS, se faz necessário o uso de um framework que forneça um layout responsivo para as páginas HTML. Layouts responsivos são páginas HTML que automaticamente se adaptam ao dispositivo do usuário, como PC, celular ou tablet, mudando a aparência e disposição com base no tamanho da tela em que elas são exibidas. Uma boa opção para isso é o framework Bootstrap.
Diante do que foi exposto, o objetivo deste artigo é apresentar o desenvolvimento de uma aplicação MVC, onde a camada Model utilizará as especificações Java EE já mencionadas, a camada Control será escrita utilizando o framework AngularJS e a camada View terá como base para sua construção a linguagem de marcação HTML, as diretivas AngularJS e os estilos do Bootstrap. Com isso, será possível aproveitar o que cada tecnologia possui de melhor, maximizando a qualidade e produtividade na implementação de cada camada.
Servidores de aplicação Java EE
Um servidor de aplicação Java EE é um middleware que disponibiliza para suas aplicações todos os recursos definidos em uma versão específica da especificação Java EE. Desta forma, não é necessário efetuar o download de nenhuma API para construir a camada Model da aplicação. É preciso apenas utilizar um servidor de aplicação certificado.
Existem diversos servidores disponíveis no mercado, como: GlassFish e WebLogic da Oracle, WildFly e JBoss AS da Red Hat, WebSphere da IBM, Geronimo da Apache, dentre outros. Para este projeto, será empregado o WildFly 8, por implementar a versão 7 da Java EE e também por este continuar o projeto do servidor de aplicações JBoss AS, que é bem popular no Brasil.
Preparando o ambiente de desenvolvimento
Antes de iniciar o desenvolvimento da aplicação, é necessário ter o JDK 8 instalado (veja o endereço na seção Links), pois é a versão recomendada pela Red Hat para ser utilizada juntamente com o WildFly 8.
Com relação à IDE, será adotado o Eclipse Luna, pois esta é a versão que tem o suporte oficial ao Java 8. Além disso, o Eclipse é uma boa escolha pelo seu rico editor de códigos e pela grande quantidade de plugins disponíveis.
Para criação
...