O NetBeans IDE 6.0 foi desenvolvido em estreita colaboração com as equipes do Java EE e do Glassfish para oferecer a integração mais completa e o uso mais fácil possível da especificação do Java EE 5. O NetBeans IDE 6.0 é a melhor forma de se aprender com rapidez e de se tornar produtivo na programação do Java EE 5.
Este documento fornece uma introdução aos principais conceitos das especificações do Java EE 5 e como estas se relacionam com a programação prática. Os seguintes tópicos são tratados:
Você pode encontrar mais informações sobre o desenvolvimento e o deployment das aplicações Java EE 5 no Sun Java System Application Server Platform Edition 9 no Tutorial do Java EE 5.
Anotações em vez de descritores de deployment
A plataforma Java EE 5 simplifica o deployment removendo a necessidade de descritores de deployment, exceto do descritor de deployment de que a especificação do servlet necessita, o arquivo web.xml.
Outros descritores de deployment, como o ejb-jar.xml e entradas relacionadas aos serviços Web no web.xml, estão obsoletos. Os descritores de deployment do J2EE 1.4 eram em geral complexos e era fácil cometer erros ao preenchê-los. Em vez disso, a plataforma Java EE 5 faz uso de "anotações". Anotações são modificadores Java, semelhantes a público e privado, que você especifica no código. Por exemplo, a especificação do EJB 3, que é um subconjunto da especificação do Java EE 5, define anotações para o tipo de Bean, tipo de interface, referências de recurso, atributos de transação, segurança, e mais. Um conjunto de anotações similar é fornecido para serviços Web pela especificação do JAX-WS 2.0. Algumas anotações são usadas para gerar artefatos. Outras são usadas para documentar seu código. Outras ainda fornecem serviços otimizados, como segurança ou lógica específica do tempo de execução. Em resumo, a plataforma Java EE 5 fornece anotações para as seguintes tarefas, entre outras:
Definir e usar serviços Web
Desenvolver aplicações do software EJB
Mapear classes da tecnologia Java para XML
Mapear classes da tecnologia Java para bancos de dados
Mapear métodos para operações
Especificar dependências externas
Especificar informações de deployment, inclusive atributos de segurança
Anotações são marcadas com um caractere @. No IDE, quando você cria um tipo que faz uso de anotações no Java EE 5, espaços reservados relacionados são fornecidos no código gerado. Por exemplo, quando você usa o IDE para criar um Bean de sessão sem estado, é gerado o código abaixo, que inclui a anotação @Stateless():
package mypackage;
import javax.ejb.*;
@Stateless()
public class HelloWorldSessionBean implements mypackage.HelloWorldSessionLocal {
}
O auto-completar de código oferece acesso a atributos de anotação específicos do item sob o cursor. Por exemplo, quando você pressiona Ctrl-Espaço nos parênteses de uma anotação @WebService(), você vê o seguinte:
Cada atributo tem valores padrão. Portanto, não é necessário especificar quaisquer atributos, a não ser que você deseje usar um valor diferente do valor padrão. Em casos simples, o valor padrão é suficiente, o que significa que você nem sequer precisa fornecer atributos.
Desenvolvimento simplificado do software EJB
A nova API do EJB 3.0 facilita o desenvolvimento do software ao reduzir e simplificar a quantidade de trabalho exigida do desenvolvedor. Em outras palavras, menos classes e menos códigos.
Isto é possível porque uma quantidade maior do trabalho é agora executada pelo contêiner.
Seguem-se alguns recursos e benefícios da nova API do EJB 3.0:
Menos classes e interfaces obrigatórias. Não são mais necessárias interfaces iniciais e de objeto para componentes EJB, porque o contêiner agora é responsável pela exposição dos métodos necessários. É necessário somente fornecer a interface empresarial. Você pode usar anotações para declarar componentes EJB e o contêiner irá gerenciar as transações.
Não há mais descritores de deployment. Você pode usar anotações diretamente na classe para informar ao contêiner sobre dependências e configurações que anteriormente eram definidas em descritores de deployment. Se não houver instruções específicas, o contêiner usará regras padrão para manipular as situações mais comuns.
Pesquisas simples. O EJBContext permite que você pesquise objetos no espaço de nome JNDI diretamente na classe.
Mapeamento relacional de objeto simplificado. A nova API de persistência de Java torna mais simples e transparente o mapeamento relacional de objeto ao permitir que você use anotações em POJOs para mapear objetos de Java para bancos de dados relacionais.
No IDE, você pode codificar Beans empresariais assim como codificaria classes Java, usando auto-completar de código e dicas do editor para implementar os métodos corretos e manter as classes em sincronia com as interfaces. Não é necessário usar comando e caixas de diálogo especiais para gerar coisas como métodos empresariais ou operações de serviço Web, embora os comandos ainda estejam disponíveis para ajudar você a se familiarizar com a sintaxe de código do Java EE 5.
Uso de injeção de dependência para acessar recursos
A injeção de dependência permite que um objeto use anotações para solicitar recursos externos diretamente. Isto resulta em código mais limpo, porque não é mais necessário sobrecarregar o código com a criação de recursos e código de pesquisa.
Você pode usar injeção de recursos em componentes EJB, contêineres da Web e clientes.
Para solicitar a injeção de um recurso, um componente usa a anotação @Resource ou, no caso de alguns recursos especializados, as anotações @EJB e @WebServiceRef.
Entre os recursos que podem ser injetados estão:
Objeto SessionContext
Objeto DataSources
Interface EntityManager
Outros Beans empresariais
Serviços Web
Filas de mensagem e tópicos
Fábricas de conexão para adaptadores de recursos
No IDE, o Editor de código-fonte fornece auto-completar de código completo para anotações de injeção de recursos fornecidas pela plataforma Java EE 5. Além disso, o IDE injeta automaticamente recursos nos arquivos quando você executa comandos como Chamar EJB e Usar banco de dados.
Modelo de API da persistência de Java
A plataforma Java EE 5 introduz a nova API da persistência de Java, que foi desenvolvida como parte do JSR-220. A API da persistência de Java também pode ser usada fora de componentes EJB, por exemplo em aplicações Web e clientes de aplicações, assim como também fora da plataforma Java EE, em aplicações Java SE.
A API da persistência de Java tem os seguintes recursos-chave:
Entidades são POJOs. Ao contrário de componentes EJB, que usavam persistência gerenciada por contêiner (CMP), objetos de entidade que usam as novas APIs não são mais componentes e não precisam mais estar em um módulo EJB.
Mapeamento relacional de objeto padronizado. A nova especificação padroniza a manipulação do mapeamento relacional de objeto, liberando o desenvolvedor de aprender estratégias específicas do fornecedor.
A API da persistência de Java usa anotações para especificar informações do mapeamento relacional de objeto, mas ainda oferece suporte a descritores XML.
Consultas nomeadas. Uma consulta nomeada é agora uma consulta estática expressada em metadados. A consulta pode ser uma consulta da API da persistência de Java ou uma consulta nativa. Isto simplifica muito a reutilização de consultas.
Regras de empacotamento simples. Uma vez que os beans de entidade são classes de tecnologia Java simples, eles podem ser empacotados praticamente em qualquer local em uma aplicação Java EE. Por exemplo, Beans de entidade podem fazer parte de um JAR de EJB, JAR de cliente-aplicação, WEB-INF/lib, WEB-INF/classes, ou mesmo parte de um JAR de utilitário em um arquivo de arquivo de aplicação empresarial (EAR). Com estas regras de empacotamento simples, não é mais necessário fazer com que um arquivo EAR use Beans de entidade de uma aplicação Web ou de um cliente de aplicação.
Entidades desanexadas. Uma vez que os beans de entidade são POJOs, eles podem ser serializados e enviados na rede para um espaço de endereço diferente e usados em um ambiente alheio a persistência. Como resultado, não é mais necessário usar objetos de transferência de dados (DTOs).
API de EntityManager. Os programadores de aplicações agora podem usar uma API de EntityManager padronizada para desempenhar operações Create Read Update Delete (CRUD) que envolvem entidades.
O IDE oferece ferramentas para trabalhar com a nova API da persistência de Java. Você pode gerar classes de entidade automaticamente a partir de um banco de dados, ou classes de entidade de código manualmente.
O IDE também fornece modelos e editores de gráfico para criar e manter unidades de persistência.
Serviços Web
Na plataforma Java EE 5, a utilização de anotações aperfeiçoou e simplificou bastante o suporte de serviços Web.
As especificações seguintes contribuíram para esta área: JSR 224, Java API para serviços Web baseados em XML (JAX-WS) 2.0; JSR 222, arquitetura Java para vinculação de XML (JAXB) 2.0; e JSR 181, metadados de serviços Web para a plataforma Java.
JAX-WS 2.0
JAX-WS 2.0 é a nova API para serviços Web na plataforma Java EE 5. Como um sucessor do JAX-RPC 1.1,
o JAX-WS 2.0 mantém o modelo de programação RPC natural enquanto se aprimora em vários sentidos: vinculação de dados,
protocolo e independência de transporte, suporte ao estilo REST de serviços Web, e facilidade de desenvolvimento.
Uma diferença crucial do JAX-RPC 1.1 é que toda a vinculação de dados agora foi delegada ao JAXB 2.0.
Isso permite que serviços Web baseados em JAX-WS usem 100% do Esquema XML, o que resulta em uma interoperabilidade aprimorada e facilidade de uso. As duas tecnologias são bem integradas, de modo que os usuários não precisam manipular dois conjuntos de ferramentas. Ao iniciar a partir de classes da tecnologia Java, JAXB 2.0 pode gerar documentos do Esquema XML que são incorporados automaticamente a um documento de Web Service Description Language (WSDL), de maneira que os usuários não precisam executar manualmente esta integração propensa a erros.
Pronta para ser utilizada, JAX-WS 2.0 oferece suporte aos protocolos SOAP 1.1, SOAP 1.2 e XML/HTTP. A extensibilidade de protocolos foi uma meta desde o início, e JAX-WS 2.0 permite que os fornecedores dêem suporte a protocolos e codificações adicionais para um melhor desempenho -- por exemplo, o FAST Infoset -- ou para aplicações especializadas. Os serviços Web que usam anexos para otimizar o envio e o recebimento de dados binários grandes podem tirar proveito do MTOM/XOP (abreviatura de mecanismo de otimização de transmissão de mensagens/pacote otimizado binário XML) padronizado de W3C sem qualquer efeito adverso sobre o modelo de programação. (Veja esta página para obter informações sobre MTOM/XOP.)
Antes da tecnologia Java EE 5, a definição de um serviço Web requeria descritores longos e difíceis de manejar. Agora é fácil como colocar a anotação @WebService em uma classe de tecnologia Java. Todos os métodos públicos na classe são publicados automaticamente como operações de serviço Web e todos os argumentos são mapeados para tipos de dados do Esquema XML usando JAXB 2.0.
Serviços Web assíncronos
Uma vez que as invocações do serviço Web ocorrem em uma rede, as chamadas podem ter uma duração de tempo imprevisível. Diversos clientes, principalmente os interativos, como aplicações de área de trabalho baseadas em JFC/Swing, experimentam séria degradação de desempenho por terem de aguardar uma resposta do servidor. Para evitar tal degradação, JAX-WS 2.0 fornece uma nova API de cliente assíncrona. Com esta API, os programadores de aplicações já não precisam criar threads próprios. Em vez disso, podem confiar no tempo de execução da JAX-WS para gerenciar invocações remotas de longa duração.
Os métodos assíncronos podem ser usados juntamente com qualquer interface gerada por WSDL, assim como com a API Dispatch mais dinâmica. Para sua conveniência, ao importar um documento WSDL, você pode precisar de métodos assíncronos a serem gerados por qualquer uma das operações definidas pelo serviço Web.
Existem dois modelos de uso:
No modelo de sondagem, você faz uma chamada. Quando está preparado, solicita os resultados.
No modelo de retorno de chamada, você registra um manipulador. Quando a resposta chega, você é notificado.
Observe que o suporte de invocação assíncrona não é totalmente implementado no lado do cliente, de maneira que nenhuma alteração é necessária no serviço Web de destino.
O IDE oferece ferramentas para trabalhar com a JAX-WS. Você pode usar modelos no assistente para Novo arquivo para gerar artefatos JAX-WS. Os serviços Web assíncronos podem ser criados por meio de um editor de Personalização de serviço Web.
A funcionalidade de auto-completar de código inclui anotações que você pode usar nos serviços Web.
Para enviar comentários e sugestões, obter suporte e se manter informado sobre os mais recentes desenvolvimentos dos recursos de desenvolvimento de Java EE do NetBeans IDE, inscreva-se na lista de endereçamento de .