Atenção: esse artigo tem dois vídeos complementar.
Clique e assista o primeiro!

Clique e assista o segundo!

Artigo no estilo: Curso

De que se trata o artigo:

Da versão 6 da plataforma Java, Enterprise Edition (Java EE 6), que foi publicada como padrão do JCP em dezembro de 2009, trazendo várias novidades em relação ao Java EE 5. A plataforma Java EE engloba diversas tecnologias úteis no desenvolvimento de aplicações corporativas, ou seja, sistemas que envolvem toda uma organização e seus diversos usuários, exigindo características como escalabilidade, segurança, etc.


Para que serve:

A plataforma Java EE serve para o desenvolvimento de aplicações corporativas, seja um sistema Web simples ou uma aplicação com N camadas provendo Web Services e interfaces gráficas em janelas. A nova versão, Java EE 6, serve para simplificar ainda mais o desenvolvimento de aplicações corporativas (o que foi também foco da versão 5), trazendo flexibilidade e extensibilidade à plataforma.

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

O tema é útil para arquitetos e programadores envolvidos no desenvolvimento de aplicações corporativas que desejam atualizar-se no que há de mais recente em termos de padrões Java nesta área. Desenvolvedores que não possuem experiência com versões anteriores de Java EE também podem se beneficiar com os exemplos que, apesar de focar nas novidades de Java EE 6, mostram também como desenvolver uma aplicação corporativa do zero.

Novidades do Java EE 6 – Parte 1:

Java EE é o padrão da plataforma Java para desenvolvimento de aplicações corporativas, também conhecidas como “aplicações enterprise”. Desde suas primeiras versões, a plataforma oferece serviços que permitem que o desenvolvedor concentre-se em desenvolver sua aplicação, deixando a infraestrutura por conta do servidor de aplicações. A nova versão de Java EE tem como foco a simplicidade do desenvolvimento, a flexibilidade e a extensibilidade da plataforma. Neste artigo, apresentamos uma visão geral do Java EE 6 e começamos o desenvolvimento de uma aplicação real na plataforma. Implementamos as classes de domínio (Listagens 1 e 2) mostrando algumas novidades do JPA 2.0. Em seguida, implementamos a validação, ainda nas classes de domínio, utilizando o novo padrão Bean Validation (Listagens 3 a 6). Por fim, desenvolvemos uma funcionalidade simples de cadastro para mostrar mais um novo padrão Java EE 6: o CDI, que possibilita a injeção de dependências em contextos. O CDI permite a integração das diferentes camadas do sistema: DAOs na camada de persistência (Listagens 7 e 8), implementação dos casos de uso em classes de aplicação (Listagens 9 e 10), integração entre interface com o usuário e sistema via classe de controle (Listagem 11) e páginas JSF e JSP na camada de visão (Listagens 12 a 14).

Java Platform, Enterprise Edition, conhecida antigamente como J2EE e a partir da versão 5 como Java EE, é a plataforma padrão para o desenvolvimento de aplicações corporativas (enterprise) em Java. Uma “aplicação corporativa” é um software que tem por objetivo resolver um problema de uma empresa ou organização como um todo e, por este motivo, possui requisitos particulares, como escalabilidade, segurança, acessibilidade, dentre outros.

A plataforma Java EE é mais conhecida pelos seus dois principais componentes: o Servlet e o EJB (Enterprise Java Bean). Ambos definem classes de objetos que possuem ciclo de vida determinado e que funcionam dentro de containers: o primeiro em um servidor Web (Tomcat, Jetty, Resin, etc.) e o segundo em um servidor de aplicação (GlassFish, JBoss AS, IBM Websphere, etc.). Um Servlet provê uma funcionalidade que pode ser acessada por meio de um navegador Web, enquanto as funções providas por um EJB são disponibilizadas de maneira local (mesmo servidor) ou remota (outro servidor) para outros componentes.

Os containers proveem diversos serviços de infraestrutura a estes e outros componentes que são implantados em suas aplicações, de forma a proporcionar a estas últimas os requisitos característicos de aplicações corporativas. Desta maneira, os desenvolvedores não têm necessidade de implementar tais funcionalidades em cada sistema que constroem, mas as reutilizam do servidor de aplicação (ou servidor Web). Por exemplo, ao criar um Servlet não tenho que me preocupar com o modo pelo qual o servidor irá transformar um acesso via protocolo HTTP a uma execução do meu código. O servidor provê este serviço e ainda disponibiliza eventuais dados enviados pelo cliente por meio de sua API (Application Programming Interface, ou Interface de Programação da Aplicação).

Estes serviços de infraestrutura são a grande vantagem da plataforma Java EE. Muitos deles são bastante conhecidos e é até mesmo possível que um desenvolvedor os tenha utilizado sem saber que fazem parte da plataforma enterprise de Java, por exemplo: JSP (JavaServer Pages), JDBC (Java Database Connectivity), JavaMail, JPA (Java Persistence API), JSF (JavaServer Faces), etc.

Desde o lançamento de sua primeira versão em 1999, a plataforma Java EE evoluiu consideravelmente. Em dezembro de 2009 o Java Community Process (JCP – veja o quadro “O Java Community Process”) publicou a versão final da JSR 316: JavaTM Platform, Enterprise Edition 6 (Java EE 6) Specification. Esta versão tem por objetivo melhorar ainda mais a usabilidade e o desempenho da plataforma, como já feito na versão anterior, Java EE 5.

O Java Community Process

O JCP – Java Community Process ou Processo da Comunidade Java – é o meio pelo qual a comunidade Java (empresas, organizações sem fins lucrativos e desenvolvedores) propõe, desenvolve e publica padrões para tecnologias relacionadas a Java.

O processo gira em torno das JSRs – Java Specification Requests ou Pedidos de Especificação Java. Um membro do JCP faz a solicitação de uma JSR com seu detalhamento e, se for aprovada pelo comitê executivo, um grupo de especialistas (Expert Group ou EG) se forma para aquela JSR.

Guiados pelo(s) Líder(es) da Especificação (Specification Lead(s)), o grupo deve desenvolver uma proposta para o padrão e publicá-la para avaliação de toda a comunidade. Para provar que a especificação pode ser implementada, o EG precisa desenvolver também uma implementação de referência (Reference Implementation).

Se aprovada, a JSR é publicada em sua versão final e diferentes organizações podem desenvolver suas implementações baseadas nela (na prática, em muitos casos tal desenvolvimento começa mesmo antes da versão final). Isso permite aos usuários de Java escolher a implementação que preferirem e até trocar de implementação, já que todas elas funcionam dentro do que foi especificado pelo JCP.

Para mais detalhes sobre o JCP, consulte o seu website (veja Links).

Em uma série de artigos começando nesta edição, apresentaremos as novidades desta nova versão da plataforma Java EE usando uma abordagem prática. Começaremos com uma descrição geral do que há de novo na versão 6 em relação à versão anterior e desenvolveremos uma aplicação corporativa simples utilizando as tecnologias que fazem parte da plataforma Java EE 6.

Visão Geral

De acordo com um artigo técnico publicado na Sun Developer Network (veja Links), os três principais objetivos da nova versão da plataforma Java EE são: flexibilidade, extensibilidade e facilidade de desenvolvimento.

Flexibilidade

Como mencionamos anteriormente, a plataforma Java EE contém um conjunto de tecnologias que proveem características enterprise às aplicações implantadas em servidores de aplicação que seguem sua especificação. À medida que a plataforma foi evoluindo, o número de tecnologias agregadas cresceu para prover diferentes serviços e atender a diferentes tipos de aplicação corporativa.

Esta evolução, no entanto, causou um problema: para muitas aplicações o conjunto de tecnologias oferecida é grande demais, tornando-se um excesso que consome recursos desnecessariamente. Para remediar esta situação, a especificação Java EE 6 introduz o conceito de Perfil (Profile). Um perfil especifica um conjunto de tecnologias a ser utilizado para um tipo específico de aplicação. A especificação define também o Perfil Web (Web Profile) que consiste em um subconjunto das tecnologias Java EE, contendo aquelas mais utilizadas em aplicações web de pequeno e médio portes (não corporativas).

A definição de um perfil permite que provedores de servidores de aplicação disponibilizem, além da versão completa de seu servidor, uma versão para cada perfil existente. As versões para os perfis são mais enxutas, o que traz uma maior simplicidade e maior desempenho na execução das aplicações que se encaixam naquele perfil. Por exemplo, o download do servidor de aplicação GlassFish v3 completo possui em torno de 63 MB, enquanto o Web Profile possui aproximadamente 45 MB.

Outro problema advindo do crescimento da plataforma Java EE foi o surgimento de novas tecnologias que substituem e tornam obsoletas tecnologias mais antigas. É o caso, por exemplo, da introdução da Java Transaction API (JTA) com suas anotações de persistência, que permitiram a substituição dos pesados e burocráticos Entity Beans por POJOs que são gerenciados pelos mecanismos de persistência do servidor de aplicação (utilizando anotações para especificar o mapeamento objeto/relacional).

Plain Old Java Objects ou Simples e Velhos Objetos Java é um nome que se dá a classes Java desenvolvidas sem nenhuma dependência direta a um framework ou container específico. Ao contrário de um Entity Bean, por exemplo, um POJO não é obrigado a estender uma determinada classe e implementar determinados métodos.
...

Quer ler esse conteúdo completo? Tenha acesso completo