Esse artigo faz parte da revista Java Magazine edição 66. Clique aqui para ler todos os artigos desta edição

AN style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: red; FONT-FAMILY: Verdana; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">

PAN>

"> 

Java EE 6

Uma plataforma mais madura e recheada de novos recursos

Depois do sucesso alcançado com o lançamento da versão 5, a plataforma Java Enterprise Edition (Java EE) continua seu processo de evolução com foco no amadurecimento dos padrões e na flexibilidade

 

De que se trata o artigo:

Um resumo das novidades da plataforma Java EE 6, apresentando os principais objetivos dessa versão da especificação, alguns detalhes, e um pouco de código das principais APIs como JSF, JPA e EJBs, bem como as novas APIs Web Beans, Bean Validation e JAX-RS.

 

Para que serve:

Este artigo é interessante para as pessoas que estão envolvidas em projetos que utilizam as principais APIs de Java EE e tem interesse em JPA, JSF, EJBs, Web Beans e outras APIs da plataforma Java EE 6.

 

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

Este artigo é útil para as pessoas que estão trabalhando com alguma versão de Java EE, pois oferece um resumo das principais mudanças na nova versão, ou seja, atualizações das APIs existentes e novas APIs.

 

Resumo DevMan:

A plataforma Java EE vem passando por mudanças significativas desde sua versão 5, lançada em 2006. Atualmente, a preocupação dos membros do JCP com essa plataforma se concentra na facilidade de desenvolvimento e na flexibilidade para integração com novas tecnologias e frameworks. A Java EE 6, que está em fase de especificação e prevista para lançamento ainda em 2009, faz uso de anotações como forma de facilitar o desenvolvimento e reduzir a necessidade de arquivos de configuração complexos. O conceito de prunning passa a fazer parte da plataforma como meio para eliminar tecnologias ultrapassadas que já foram substituídas por tecnologias mais poderosas. A plataforma se torna mais flexível em função da definição de profiles, para permitir o uso de servidores Java EE menores com suporte a tecnologias Java EE mais específicas. Para facilitar a integração com outros tecnologias e frameworks que não fazem parte da plataforma Java EE, está sendo prevista a inclusão de vários pontos de extensão. Essas e outras mudanças da plataforma Java EE são discutidas neste artigo cujo objetivo é preparar os desenvolvedores que usam a plataforma Java EE para usufruir de todas essas melhorias quando a nova versão estiver disponível.

 

 

Desde o lançamento de sua primeira versão, em 1999, a plataforma Java EE tem passado por inúmeras alterações. Sem dúvida alguma, as mudanças mais significativas aconteceram na Java EE 5, lançada em 2006. Mas as melhorias não param por aí. A Java EE 6, que já está sendo especificada e tem previsão de lançamento para 2009, traz para a plataforma melhorias importantes no que diz respeito ao amadurecimento de APIs e à flexibilidade da plataforma como um todo. O objetivo dessas melhorias é facilitar ainda mais o desenvolvimento de aplicações e aumentar as possibilidades de integração com outras tecnologias e frameworks. 

Nosso objetivo neste artigo é apresentar uma visão geral sobre as principais alterações previstas para a plataforma Java EE 6. É bom lembrar que algumas das especificações dessa versão ainda estão sendo desenvolvidas e, portanto, até o lançamento oficial da JSR 316 (Java EE 6), ainda podemos ter outras alterações. No artigo, os exemplos que correspondem às especificações ainda não concluídas são baseados nos documentos fornecidos pelo expert group responsável pela especificação.

Para complementar o entendimento sobre o futuro da plataforma Java EE, veja também a entrevista com o líder da especificação Java EE 6 – Roberto Chinnici, que faz parte desta edição.

Plataforma Java EE

A plataforma Java EE é especializada no desenvolvimento de aplicações multicamadas, baseadas em componentes distribuídos, executadas em um servidor de aplicações. Esse servidor (compatível com a especificação Java EE) oferece uma série de serviços de infra-estrutura aos componentes da aplicação (ex. tolerância a falhas, segurança, transações, autenticação, distribuição, etc.) que ajudam a garantir a robustez da aplicação sem que o desenvolvedor necessite escrever muitas linhas de código para isso.

Em suas primeiras versões, o antigo J2EE sofreu inúmeras críticas em função da complexidade do desenvolvimento de componentes. Porém, com o lançamento da Java SE 5 (a versão Standard Edition que trouxe o recurso de anotações para a plataforma) essa curva de aprendizado foi drasticamente reduzida.

Na Java EE 5, o foco foi basicamente na simplicidade de desenvolvimento de componentes, com o uso intensivo de anotações e Injeção de Dependência, a inclusão do JavaServer Faces (JSR 127) e a substituição do padrão Entity Beans pelo padrão Java Persistence API  (JSR 220).

Vencida a barreira da complexidade de desenvolvimento, o objetivo na Java EE 6 (JSR 316) passa a ser a busca pela maturidade da plataforma, por meio da evolução e fortalecimento de seus padrões, e o aumento na sua flexibilidade de uso e integração. Os líderes dessa especificação, que abrange várias outras JSRs, são Roberto Chinnici e Bill Shannon. Porém, essa JSR também conta com a colaboração do criador do Spring Framework – Rod Johnson – que agora integra o expert group da Java EE 6.

O maior desafio na especificação da Java EE 6 tem sido na definição de novos conceitos para a plataforma: profiles, extensibility e pruning. Esses conceitos (discutidos adiante) permitem melhor adequação da plataforma às diferentes necessidades do mercado e mais facilidade de integração com novas tecnologias, frameworks e aplicações.

Dentre as melhorias esperadas estão a evolução de algumas APIs mais importantes, como JavaServer Faces 2.0 (JSR 314), Java Persistence API 2.0 (JSR 317), Enterprise JavaBeans 3.1 (JSR 318) e Java Servlet 3.0 (JSR 315), e a inclusão de novas APIs como Web Beans 1.0 (JSR 299), Bean Validation (303) e JAX-RS (311). Detalhes das alterações são discutidos a seguir. Veja a Tabela 1 para conhecer a situação atual dessas especificações.

Profile, Extensibility e Pruning

Desde as primeiras versões da Java EE, várias tecnologias, frameworks e aplicações tem sido criadas para suprir as imperfeições da plataforma ou aumentar sua facilidade de desenvolvimento. Para melhorar a capacidade de integração das aplicações Java EE com essas tecnologias, a versão 6 da plataforma tem dois grandes objetivos: a definição de profiles e o suporte à extensibilidade.

Profiles

Um profile é caracterizado por um conjunto de tecnologias, que fazem parte ou não da especificação Java EE completa, necessárias para suportar o desenvolvimento de aplicações de diferentes segmentos do mercado.

 O uso de profiles na Java EE 6 é a resposta às críticas enfrentadas pela plataforma no que diz respeito ao tamanho da especificação Java EE (lembrando que Java EE é uma especificação que abrange várias outras especificações, como Servlets, JavaServer Faces, EJBs, e por isso é chamada de JSR "guarda-chuva"). A frase One size doesn’t fit all é frequentemente utilizada para dizer que nem todas as aplicações precisam do vasto conjunto de tecnologias que fazem parte do Java EE, o que causa um desperdício de suporte quando se utiliza um servidor Java EE completo. Daí a necessidade para a definição de profiles.

Requisitos comuns como serviço de nomes, recursos de injeção de dependência, regras de empacotamento, segurança, entre outros, devem ser compartilhados por todos os profiles para garantir a uniformidade dos produtos e das aplicações Java EE. Além disso, todas as dependências dos componentes suportados por cada profile devem estar contidos no profile para garantir o seu funcionamento out-of-the-box.

O Java EE Web Profile já está sendo definido juntamente com a especificação Java EE 6 e propõe a definição de um profile mínimo e um intermediário para suportar aplicações Web. Como essa especificação ainda não está fechada, a participação da comunidade é muito importante para ajudar o expert group a entender a real necessidade do mercado. As tecnologias candidatas a serem suportadas nesses profiles são apresentadas na Tabela 2. Na Edição 62, Rod Johnson comenta sobre o interesse do Spring em oferecer implementações para os profiles mínimo e intermediário do Web Profile.

Extensibility

O aspecto da extensibilidade na plataforma Java EE está relacionada com a necessidade de melhorar o suporte de outras tecnologias e frameworks dentro dos servidores de aplicação Java EE. Por exemplo, atualmente, para usar um framework em uma aplicação Java EE é necessário fazer alterações nos deployment descriptors, criar filtros, ajustar bibliotecas, etc. A proposta de extensibilidade da Java EE 6 é facilitar esse processo criando mais pontos de extensão na plataforma.

Algumas das idéias discutidas para aumentar os pontos de extensão consideram o uso de anotações, injeção de dependência, interceptadores, APIs de serviço (SPIs – Service Providers Interfaces) e, até mesmo, a facilidade de implantar um simples jar dentro da aplicação (sem a necessidade de configurações complexas).

Profiles e extensibility são dois conceitos que estão diretamente relacionados, pois os profiles, além de oferecer o conjunto de tecnologias especificadas, também devem permitir a integração simplificada de outras tecnologias, mesmo que estas não sejam padrão Java EE.

Pruning

Apesar de não estar como objetivo principal da especificação, pruning ou "poda" é um objetivo igualmente importante para a Java EE 6, que passa por um momento de amadurecimento.

Alguns dos padrões considerados essenciais em versões anteriores da Java EE agora não são mais tão importantes. Exemplo disso são os Entity Beans, substituídos por JPA na Java EE 5.

A partir da Java EE 6, tecnologias consideradas de pouca relevância podem ser depreciadas para que, somente nas versões futuras da plataforma, se tornem opcionais. Assim, os vendedores de produtos poderão optar se querem ou não manter suporte a essas tecnologias na próxima versão da plataforma. Essa é a definição de pruning adotada no JCP.

Na especificação Java EE 6, as tecnologias eleitas para o pruning são: EJB CMP, substituído pelo JPA, e JAX-RPC (JSR-101), substituído por JAX-WS (JSR-224), ambos na Java EE 5. Portanto, a partir da próxima versão da Java EE (Java EE 7), os servidores escolhem se mantêm ou não suporte a essas tecnologias.

Novas versões das principais APIs

Com o objetivo de melhorar ainda mais a facilidade de uso e oferecer recursos mais poderosos para as tecnologias padronizadas na Java EE 6, essa versão também está prevendo uma evolução das principais APIs.

JavaServer Faces 2.0

A versão 2.0 de JavaServer Faces, parte de Java EE 6, está sendo desenvolvida na JSR 314, liderada por Ed Burns e tem como principais novidades:

·         Configuração do estágio do projeto / Project Stage: Permite configurar qual o estágio de desenvolvimento: Production, Test, Development, UnitTest, System Test, Extension. Possibilitando que a aplicação seja executada de forma diferente, dependendo do estágio do projeto, por exemplo, se a aplicação está em produção pode ter um comportamento de log diferente da mesma aplicação em produção;

·         Criação do escopo View: baseado no escopo Page do JBoss Seam e no escopo KeepAlive do RichFaces, permite que um componente esteja associado a uma página, ou seja, estes componentes tem a “duração de uma página”. Quando o usuário sai daquela página o componente não estará mais acessível;

·         Simplificação do desenvolvimento de componentes com conceito similar a Tag Files, baseado em Facelets; ...

Quer ler esse conteúdo completo? Tenha acesso completo