O NetBeans IDE 5.5 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 nova especificação do novo Java EE 5. O NetBeans IDE 5.5 é 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 a implantação dos aplicativos 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 implantação
A plataforma Java EE 5 simplifica a implantação removendo a necessidade de descritores de implantação, exceto do descritor de implantação de que a especificação do servlet necessita, o arquivo web.xml. Outros descritores de implantação, como o ejb-jar.xml e entradas relacionadas aos serviços da Web no web.xml, estão obsoletos. Os descritores de implantação 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 da 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 da Web
Desenvolver aplicativos 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 implantação, 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 {
}
A conclusão 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 simplifcar 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 recipiente. Seguem-se alguns recursos e benefícios da nova API do EJB 3.0:
Menor quantidade de classes e interfaces necessárias. Não são mais necessárias interfaces iniciais e de objeto para componentes EJB, porque o recipiente 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 recipiente irá gerenciar as transações.
Descritores de implantação não são mais necessários. Você pode usar anotações diretamente na classe para informar ao recipiente sobre dependências e configurações que anteriormente eram definidas em descritores de implantação. Se não houver instruções específicas, o recipiente 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 conclusão 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 da 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, recipientes 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 da Web
Filas de mensagem e tópicos
Fábricas de conexão para adaptadores de recursos
No IDE, o Editor de fontes fornece conclusão 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 aplicativos da Web e clientes de aplicativos, assim como também fora da plataforma Java EE, em aplicativos Java SE.
A API da persistência de Java tem os seguintes recursos-chave:
As entidades são POJOs. Ao contrário de componentes EJB, que usavam persistência gerenciada por recipiente (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 simples de empacotamento. Uma vez que Beans de entidade são classes de tecnologia Java simples, eles podem ser empacotados praticamente em qualquer local em um aplicativo Java EE. Por exemplo, Beans de entidade podem fazer parte de um JAR de EJB, JAR de cliente-aplicativo, WEB-INF/lib, WEB-INF/classes, ou mesmo parte de um JAR de utilitário em um arquivo de arquivo de aplicativo empresarial (EAR). Com estas regras de empacotamento simples, não é mais necessário fazer com que um arquivo EAR use Beans de entidade de um aplicativo da Web ou de um cliente de aplicativo.
Entidades desanexadas. Uma vez que 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 aplicativos 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. Para obter mais informações sobre o uso da nova API da persistência de Java, consulte Persistência de Java na plataforma Java EE 5.
Serviços da Web
Na plataforma Java EE 5, a utilização de anotações aperfeiçoou e simplificou bastante o suporte de serviços da Web. As especificações a seguir contribuíram para esta área: JSR 224, Java API para serviços da 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 da Web para a plataforma Java.
JAX-WS 2.0
JAX-WS 2.0 é a nova API para serviços da Web na plataforma Java EE 5. Como sucessora de JAX-RPC 1.1, JAX-WS 2.0 retém o modelo de programação RPC natural e ao mesmo tempo é aprimorada em várias frentes: vinculação de dados, independência de protocolo e transporte, suporte para o estilo REST da Web e facilidade de desenvolvimento.
Uma diferença crucial da JAX-RPC 1.1 é que todas as vinculações de dados agora foram delegadas para JAXB 2.0. Isto permite que os serviços da Web baseados na JAX-WS usem 100 por cento do Esquema XML, o que resulta em uma interoperabilidade aprimorada e em uma 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 aplicativos especializados. Os serviços da 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 da 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 da Web e todos os argumentos são mapeados para tipos de dados do Esquema XML usando JAXB 2.0.
Serviços da Web assíncronos
Uma vez que as invocações do serviço da Web ocorrem em uma rede, as chamadas podem ter uma duração de tempo imprevisível. Diversos clientes, principalmente os interativos, como aplicativos de desktop baseados 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 aplicativos já não precisam criar segmentos 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 da 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 da 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 da Web assíncronos podem ser criados por meio de um editor de Personalização de serviço da Web. A funcionalidade de conclusão de código inclui anotações que você pode usar nos serviços da 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 .