Artigo no estilo: Curso

Do que se trata o artigo:

Este artigo apresenta um conjunto de tecnologias envolvidas em um projeto Java EE 6, como Maven, JBoss AS, CDI, EJB, JPA, JSF, PrimeFaces e Arquillian. Além de uma introdução sobre cada uma dessas tecnologias, também será abordado como elas podem se integrar para ajudar no desenvolvimento de aplicações Java EE.

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

O artigo visa ajudar desenvolvedores que desejam ver um conjunto de tecnologias trabalhando em conjunto em um projeto Java EE 6, trazendo benefícios como automatização de tarefas, aumento de produtividade e melhoria da qualidade da aplicação.

Resumo DevMan:

Um projeto Java EE 6 pode envolver muitas tecnologias relacionadas, pois além do próprio código a ser desenvolvido, ainda é preciso escolher a ferramenta de build, de criação de testes automatizados, um servidor de aplicação, entre outros. O objetivo desse artigo não é de esmiuçar todas essas tecnologias, mas sim apresentar uma visão geral sobre cada uma delas e mostrar como elas podem se relacionar.

O desenvolvimento de aplicações web é um assunto que continua em bastante evidência no mercado de software. Entre outros fatores, isto se deve ao crescente número de pessoas acessando a internet, o que faz com que as empresas cada vez mais procurem se expor por meio de sites para os possíveis clientes. Além disso, tem-se a criação das intranets, que permitem uma maior interação com funcionários e fornecedores. Mas não são apenas as empresas que estão seguindo este caminho. Muitas pessoas “comuns” têm criado sites para falar sobre algum assunto em particular ou mesmo para tentar vender alguma ideia. Outro aspecto importante é que os sites não são mais acessados quase que totalmente por computadores. Na verdade, a quantidade de acessos a sites utilizando dispositivos móveis como smartphones e tablets tem crescido a cada dia. Junto com esse mar de oportunidades que a grande quantidade de usuários provê, vem um conjunto de desafios no que diz respeito à usabilidade, segurança, tempo de resposta, flexibilidade, qualidade e escalabilidade dessas aplicações.

Para ajudar a vencer esses desafios impostos aos desenvolvedores, muitas ferramentas e tecnologias licenciadas e open source têm sido propostas visando atacar várias áreas do desenvolvimento, como a criação de interfaces ricas, melhor experiência ao usuário com o uso intensivo de Ajax, cloud computing para permitir um crescimento constante ou de pico da quantidade de acessos, técnicas de processamento distribuído e caches para ganho de performance, ferramentas para testes automatizados eficazes, entre outras. Com esse mundo de tecnologias à disposição do desenvolvedor, é extremamente importante que ele saiba escolher as que melhor se adequam aos requisitos de um determinado projeto e para uma determinada equipe.

Neste artigo será mostrado como desenvolver uma aplicação usando um conjunto bastante atual de tecnologias e ferramentas que vem fazendo com que a implementação de aplicações web se torne cada vez mais produtiva e eficiente: Java EE 6, PrimeFaces, Arquillian, Maven e JBoss AS 7. Essas tecnologias e ferramentas oferecem ao desenvolvedor um suporte bem completo em várias etapas do desenvolvimento de software, passando pelo controle transacional, injeção de dependências, acesso a banco de dados, mapeamento objeto relacional, interface gráfica, testes de integração, gerenciamento de dependências, build e deploy! Vale ressaltar que todas elas são tecnologias open-source, contando com uma enorme colaboração de toda a comunidade.

Esta minissérie está organizada em três partes. Na primeira, será apresentada uma introdução sobre as tecnologias que serão utilizadas, passando pela contextualização sobre o modelo e os requisitos da aplicação e pelo desenvolvimento da primeira versão do seu back-end.

Tecnologias envolvidas

Para o desenvolvimento de uma aplicação exemplo durante o artigo, serão abordadas tecnologias e ferramentas bastante variadas, cada uma atuando em segmentos diferentes da aplicação, como desenvolvimento de interfaces ricas para interação com o usuário, uma camada de negócios e outra de integração com o banco de dados, criação de testes de integração automatizados, build e deploy da aplicação. Como são muitas tecnologias, é impossível um detalhamento sobre cada uma delas em um artigo, porém, em edições anteriores da revista, o leitor pode encontrar mais detalhes sobre quase todas elas, com exceção do Arquillian.

Java EE 6

Java EE 6 (Java Enterprise Edition 6) define um conjunto de especificações para o desenvolvimento de aplicações Enterprise. Esse conjunto é bastante completo, passando pela especificação de Servlets, JAX-WS (Web Services SOAP), JAX-RS (Web Services Rest), EJB, JMS, JSF, CDI, entre muitas outras. A cada nova versão do Java EE essas tecnologias têm sido evoluídas com melhorias e novas funcionalidades, sempre buscando maior facilidade de uso, e o reflexo disso é uma maior popularização da tecnologia, derrubando inclusive certo preconceito que boa parte dos desenvolvedores Java tinha por conta da complexidade desnecessária presente nas versões anteriores de Java EE. Muitas dessas melhorias foram inspiradas em frameworks criados pela comunidade, como é o caso do Hibernate, do Spring e do JBoss Seam. Por se tratarem de especificações, aplicações Java EE podem ser executadas em qualquer container que as implemente, como é o caso do JBoss AS 7.

EJB 3.1

EJB (Enterprise JavaBeans) é a especificação que define uma arquitetura para desenvolvimento de aplicações modulares focada em componentes de negócio, com grande apelo em requisitos não funcionais como robustez e escalabilidade. É uma das especificações que mais sofreu críticas em suas versões anteriores, pelo excesso de complexidade introduzido de forma desnecessária. A versão 3.1, presente no Java EE 6, continua trazendo melhorias para simplificação do desenvolvimento, seguindo o caminho iniciado pela versão 3, lançada junto com o Java EE 5. Algumas melhorias a serem citadas é a possibilidade de se empacotar EJBs em aplicações WAR e o fato de que a criação de interfaces locais passou a ser opcional.

JSF 2

JavaServer Faces define um framework para o desenvolvimento simplificado de interfaces gráficas baseadas em componentes. É fortemente guiado pelo consagrado modelo MVC (Model-View-Controller) e além dos recursos para desenvolvimento das interfaces, que é a parte de visão, também cuida da parte do controlador, como por exemplo, o recebimento dos dados informados pelo usuário, validação desses dados, definição do fluxo de navegação e integração com os componentes de negócio. Em suas primeiras versões (1.x), o JSF sofreu muitas críticas, principalmente pela grande quantidade de configurações via arquivos XML e a falta de suporte nativo a Ajax, pontos que foram profundamente aprimorados pela versão 2.

JPA 2

A Java Persistence API lida com uma necessidade bastante comum para a grande maioria das aplicações, que é persistir, consultar e gerenciar objetos entre o modelo orientado a objetos da aplicação e o modelo relacional dos sistemas gerenciadores de banco de dados (SGBDs). Essa prática é conhecida como ORM (Object-relational mapping).

JPA é uma das especificações mais consolidadas do Java EE e continua trazendo evoluções, como a API de criteria e as novas anotações de mapeamento, com maior foco no mapeamento de coleções.

CDI

Sem dúvida esta é a especificação de maior impacto no Java EE 6. O CDI é baseado fortemente em conceitos como injeção de dependências e inversão de controle e trouxe recursos bastante interessantes, como métodos produtores, tratamento de eventos assíncronos, possibilidade de se injetar qualquer tipo de POJO em outra classe, entre outros. Por tratar de assuntos comuns a todas as camadas de aplicações Java EE, o CDI atua de modo transversal, podendo ser usado por todas elas.

PrimeFaces

Framework que trabalha em cima do JSF, traz uma coleção bem extensa de componentes ricos prontos para serem utilizados na camada de apresentação. Ele aposta bastante no aspecto visual dos seus componentes e na facilidade de programação destes, mesmo para aqueles mais “ricos” visualmente. Além disso, tem como principais concorrentes o RichFaces, que é da JBoss, e o IceFaces, que inclusive tem boa parte dos seus componentes baseada no próprio PrimeFaces.

Arquillian

Uma das maiores críticas que a comunidade Java fazia às especificações anteriores do Java EE era sobre a dificuldade em se criar testes de integração para seus componentes, tarefa que sempre foi bastante simples utilizando Spring. Visando resolver essa questão, a Red Hat/JBoss decidiu criar o Arquillian, um excelente framework para construção de testes de integração, que veio com o objetivo de acabar com essa escrita de que é complicado testar aplicações Java EE .

...
Quer ler esse conteúdo completo? Tenha acesso completo