MÓDULO Linguagem de Programação para Web 2 Distribuição das Disciplinas de Programação para Web • LPW 1: – MVC – Servlets – JSP • LPW2: – – – – Visão geral do JEE, JSF – MVC, Facelets, PrimeFaces, ... Padrões de projeto relacionadas • LPW3– EJB + JTA, • LPW4 – EJB-WS +Application client OBJETIVO DO MÓDULO • Apresentar a Tecnologia Java EE 7 – Novidades – Arquitetura – APIs envolvidas • JSF 2 INTRODUÇÃO A TECNOLOGIA JAVA EE 7 Destaques • Objetivos – Simplificar o desenvolvimento, – Fornecer suporte básico para os vários tipos de componentes da plataforma Java EE . • Benefícios do JEE 7: – melhoria de produtividade • mais Annotations e menos configuração XML, • mais Plain Old Java Objects (POJOs) e – packaging mais simples. Evolução Plataforma JEE Evolução Plataforma JEE Novos Recursos JEE7 • As novas tecnologias – – – – Aplicações Batch para a Plataforma Java Utilitários concorrentes para Java EE API Java para Processamento de JSON (JSON-P) API Java para WebSocket • Novos recursos para – – – – componentes EJB servlets componentes JavaServer Faces o Java Message Service (JMS) Modelo de Aplicação JEE7 • • • • Linguagem Java e da JVM. Portabilidade, segurança e produtividade do desenvolvedor. Fornece uma forma básica do modelo de aplicação. Projetada para suportar aplicações que implementam serviços corporativos para clientes, funcionários, fornecedores, parceiros e outros que demandam sobre ou contribuições para a empresa. • Tais aplicações são inerentemente complexas, com acesso a dados de diversas fontes e distribuindo aplicativos para vários clientes. Modelo de Aplicação JEE7 • Para melhor controlar e gerenciar essas aplicações, as funções de negócios para apoiar os vários usuários são realizadas na camada intermediária (middle tier). • Middle tier representa um ambiente rigorosamente controlado pela área de TI de uma empresa. • Middle tier é geralmente executada em hardware de servidor dedicado e com acesso a todos serviços da empresa. Modelo de Aplicação JEE7 • Define uma arquitetura para implementação de serviços como aplicações de múltiplas camadas que proporcionam a escalabilidade, acessibilidade e capacidade de gerenciamento necessária para aplicações de nível empresarial. • Divide o trabalho necessário para implementar serviço de várias camadas em: – Lógica de negócio e apresentação a ser implementado pelo desenvolvedor – Serviços padrões fornecidos pela plataforma Java EE • O desenvolvedor pode contar com a plataforma que fornece soluções para sistemas com nível elevado de problemas no desenvolvimento em várias camadas. Arquitetura JEE Sistemas Legados Cliente Magro Cliente Gordo Aplicações Externas APLICAÇÕES MULTICAMADAS Aplicações Distribuídas Multicamadas • A plataforma Java EE utiliza um modelo de aplicação distribuída multicamadas para aplicações empresariais (Enterprise Applications). • A lógica da aplicação é dividida em componentes de acordo com a função, e os componentes do aplicativo que compõe uma aplicação Java EE estão instalados em várias máquinas, dependendo da camada Java EE a que o componente pertence. Aplicações Multicamadas Componentes da camada cliente Componentes Web-tier Componentes da camada de negócios Enterprise Information System Aplicações Multicamadas • Apesar de poder consistir em todos os níveis mostrados, geralmente aplicações multicamadas Java EE são consideradas de três camadas pois estão distribuídas em três locais: – cliente, – servidor Java EE, e – bancos de dados ou sistemas legados no back-end. • Aplicações de três camadas que funcionam desta forma estendem o modelo cliente-servidor de dois níveis padrão, colocando um servidor de aplicativos multithread entre o aplicativo cliente e back-end de armazenamento. Segurança no JEE • • Outros modelos de aplicações empresariais exigem medidas de segurança específicas da plataforma para cada aplicação, Java EE – permite definições de restrições de segurança no momento da implantação. – produz aplicações portáveis para uma ampla variedade de implementações de segurança dispensando os desenvolvedores da complexidade da implementação dos recursos de segurança. – fornece regras de controle de acesso padrão declarativa definidas pelo desenvolvedor e interpretadas quando o aplicativo é implantado no servidor. – oferece mecanismos de login padrão para que os desenvolvedores não tenham que implementar esses mecanismos em suas aplicações. • A mesma aplicação funciona numa ampla variedade de ambientes de segurança, sem precisar alterar o código fonte. Componentes Java EE • Aplicações Java EE são constituídas por componentes. • Unidade de software funcional, independente, montada em um aplicativo Java EE, com suas classes e arquivos relacionados e que se comunica com outros componentes. • A especificação Java EE define os seguintes componentes do Java EE: – aplicativos clientes e applets: executados no cliente – componentes de tecnologia Java Servlet, JavaServer Faces e JavaServer Pages (JSP): componentes Web executados no servidor – componentes EJB (beans corporativos) : componentes de negócios executados no servidor. Componentes Java EE • Escritos em Java e compiladas da mesma forma como qualquer programa na linguagem Java. • Diferenças entre os componentes do Java EE e classes Java “normais” – os componentes Java EE são incluídos em aplicações Java EE, – verificados quanto a formação e – em conformidade com a especificação Java EE. • São implantados para produção, sendo executados e gerenciados pelo servidor Java EE. Clientes Java EE • Cliente web • Aplicativo cliente Cliente Web • Consiste de duas partes: – Páginas web dinâmicas : linguagem de marcação (HTML, XML, etc...), gerados por componentes da Web que funcionam na camada web – Um navegador da Web: renderiza e exibe as páginas recebidas do servidor • Chamado às vezes um cliente magro (thin client) – – – – não consultam bases de dados, não executam regras de negócio complexas, ou não se conectam a aplicativos legados. quando usado, tais operações pesadas são descarregados para beans corporativos para aproveitar os recursos de segurança, velocidade, serviços e confiabilidade de tecnologias do lado do servidor Java EE. Aplicativos Cliente • Executado em um computador cliente e fornece uma forma de os usuários lidarem com tarefas que exigem uma interface mais rica do que a fornecida por uma linguagem de marcação (HTML). • Normalmente tem interface gráfica (GUI) criada a partir da API Swing ou AWT; ou pode ser de linha de comando. Aplicativos Cliente • Acessam diretamente beans corporativos que funcionam na camada de negócios. • Se os requisitos da aplicação justificarem, um aplicativo cliente pode abrir uma Conexão HTTP para estabelecer comunicação com um servlet rodando na camada web. • Aplicativos clientes escritos em outras linguagens não Java podem interagir com servidores Java EE, permitindo que a plataforma Java EE faça interoperação com sistemas legados, clientes e linguagens não-Java. Applets • Podem ser inc;uídos em páginas web recebidas da camada web • Pequeno aplicativo cliente escrito em Java que executa na máquina virtual Java instalada no navegador da web. • Sistemas cliente vão precisar do plug-in do Java e, possivelmente, de política de segurança para o applet para executar com êxito no navegador da web. Componentes Web • Preferidos para a criação de programas cliente web pois nenhum plug-ins ou políticas de segurança são necessários nos sistemas cliente. • Permitem design da aplicação mais modular e claro, pois fornecem um meio de separar a programação do design da página web. • Pessoal do design da página web não precisam entender de programação Java para realizar suas tarefas. Arquitetura de Componentes Javabean • As camadas server e client podem incluir componentes baseados na arquitetura de componentes JavaBeans (componentes JavaBeans) para gerenciar o fluxo de dados entre: – aplicativo cliente ou applet e componentes executando no servidor Java EE – componentes do servidor e banco de dados • Componentes JavaBeans – não são considerados componentes Java EE – têm propriedades e métodos get e set para acessar essas propriedades. – simples na sua concepção e implementação, mas devem estar em conformidade com as convenções de nomenclatura e de projeto descritas na arquitetura de componentes JavaBeans Comunicação em Servidores JEE Componentes Web • Servlets ou páginas da web criados usando tecnologia JavaServer Faces (JSF) e/ou JSP (páginas JSP). • Servlets: – classes Java que dinamicamente processam pedidos e constroem respostas. • Páginas JSP: – documentos baseados em texto que executam como servlets; – permitem abordagem mais natural para a criação de conteúdo estático. • JavaServer Faces: – baseia-se na tecnologia de servlets e JSP; – fornece um framework de componentes de interface de usuário para aplicações web. Componentes não Web JEE • Páginas HTML estáticas e applets : – Fornecidos com os componentes da web durante a montagem aplicativo. • Classes de utilitários do lado do servidor – Podem ser empacotadas com componentes da Web Componentes Web • Camada web, assim como a camada client, podem incluir componentes JavaBeans para gerenciar entrada de dados do usuário e enviar-los para beans corporativos que operam na camada de negócios. Componentes de Negócios • Código de Negócios (business code), – lógica que resolve ou atende às necessidades de um domínio de negócio em particular – tratado por beans corporativos que operam tanto na camada de negócios ou a camada web. Enterprise Information System Tier • Opera com: – software EIS e – sistemas de infraestrutura organizacionais • • • • Sistemas de Planejamento de Recursos Empresariais (ERP), processamento de transações, sistemas de banco de dados e outros sistemas de informação legados. – Exemplo: • os componentes de aplicativos Java EE podem ter acesso às EIS para conectividade ao banco de dados. Arquitetura JEE Arquitetura JEE JEE CONTAINERS Java EE Containers • Aplicações thin client multicamadas: – difíceis de escrever pois envolvem muitas linhas de código para lidar com • • • • transações e gerenciamento de estado, multithreading, pool de recursos e detalhes de baixo nível. Java EE Containers • A arquitetura Java EE – baseada em componentes e – independente de plataforma • torna aplicações fáceis de escrever, porque – a lógica do negócio é organizada em componentes reutilizáveis, – o servidor Java EE fornece serviços de suporte sob a forma de um container para cada tipo de componente e – por não ter que desenvolver estes serviços, pode-se concentrar na resolução dos problemas do negócio. Java EE Containers • Containers são a interface entre um componente e o nível inferior, funcionalidade específica da plataforma que suporta o componente. • Antes que possa ser executado, um componente web, enterprise bean ou aplicativo cliente deve ser montado em um módulo Java EE e implantado em seu container. Java EE Containers x API Container Services • O processo de montagem envolve a especificação das definições de contêineres para cada componente na aplicação Java EE e para a aplicação Java EE em si. • Configurações do contêiner personalizam o suporte fornecido pelo servidor Java EE, incluindo serviços como segurança, gerenciamento de transações, a API de busca Java Naming and Directory Interface (JNDI) e conectividade remota Container Services • • • • O modelo de segurança Java EE permite configurar um componente web ou bean corporativo de modo que os recursos do sistema sejam acessados apenas por usuários autorizados. O modelo de transação Java EE permite especificar as relações entre os métodos que compõem uma única transação, de modo que todos os métodos em uma transação sejam tratados como uma única unidade. Serviços de pesquisa JNDI fornecem uma interface unificada para múltiplos serviços de naming e directory services na empresa, de modo que os componentes da aplicação possam acessar esses serviços. O modelo de conectividade remota Java EE gerencia as comunicações de baixo nível entre clientes e beans corporativos. Depois que um bean corporativo é criado, um cliente invoca métodos sobre ele como se fosse na mesma máquina virtual. Container Services • Como a arquitetura Java EE fornece serviços configuráveis, componentes dentro do mesmo aplicativo podem se comportar de forma diferente dependendo de onde forem implantados. Exemplo: – um enterprise bean pode ter configurações de segurança que permitem um nível de acesso ao banco de dados em um ambiente de produção e outro nível de acesso em outro ambiente de produção. • O container também gerencia serviços não configuráveis, como o beans corporativos, ciclos de vida do servlet, pool de recursos de conexão de banco de dados, persistência de dados e acesso a as APIs da plataforma Java EE (Java EE 7 ver APIs). Tipos de Containers • Servidor Java EE: – Runtime do Java EE. Fornece contêineres EJB e web. • Container EJB: – Gerencia a execução de beans corporativos para aplicações Java EE. Beans corporativos e seu container rodam no servidor Java EE. • Container Web: – Gerencia a execução de páginas web, servlets, e alguns EJB componentes para aplicações Java EE. Componentes da Web e seu contêiner rodam no servidor Java EE. • Container Aplicação Cliente : – Gerencia a execução de componentes do aplicativo cliente. Aplicativos Clientes e seu container rodam no cliente. • Container Applet: – Gerencia a execução de applets. Consiste em um navegador da web e um Java Plug-in rodando juntos no cliente. SERVIÇOS DE SUPORTE Serviços de Suporte a Web • Os serviços Web são aplicações corporativas baseadas na web que usam protocolo de transporte aberto, baseado em XML e para a troca de dados com solicitações clientes. • O Java EE fornece as APIs XML e ferramentas necessárias para rapidamente projetar, desenvolver, testar e implantar os serviços clientes e web que interagem totalmente com outros serviços da web e clientes que executam em plataformas baseadas em Java ou não Java. Extensible Markup Language (XML) • Padrão para representar dados multiplataforma, extensível, baseado em texto. • As partes que trocam dados XML podem criar suas próprias tags para descrever seus dados, criar esquemas para especificar quais tags podem ser usadas em tipo particular de documento XML, e usar estilos para gerenciar manipulação e a exibição dos dados. Protocolo de Transporte SOAP • As solicitações do cliente e respostas de serviços web são transmitidos como mensagens SOAP (Simple Object Access Protocol ) sobre HTTP para permitir uma completa interoperabilidade e ntre clientes e serviços web, executados em plataformas diferentes e em vários locais na Internet. • HTTP é um familiar padrão de solicitação e resposta para o envio de mensagens pela Internet, e SOAP é um protocolo baseado em XML que se segue o modelo HTTP de solicitação e resposta. Protocolo de Transporte SOAP • A parte SOAP de uma mensagem transportada faz o seguinte: – Define um encapsulamento baseado em XML para descrever o que está na mensagem e explicar como processar a mensagem – Inclui regras baseadas em XML para expressar ocorrências dentro da mensagem de tipos de dados definidos pela aplicação – Define uma convenção baseada em XML para representar o pedido do serviço remoto e a resposta resultante Web Services Description Language (WSDL) • Descrição de serviços de rede que seguem o padrão XML. • Inclui: – o nome de serviço, – a localização dos serviços e – formas de se comunicar com o serviço. • Descrições de serviço WSDL podem ser publicadas na web. • Servidor GlassFish oferece uma ferramenta para gerar a especificação WSDL de um serviço web que usa chamadas de procedimento remoto para se comunicar com os clientes. Montagem e Implantação de aplicações JEE • • Uma aplicação Java EE é empacotada em uma ou mais unidades para implantação em qualquer sistema compatível com plataforma Java EE. Cada unidade contém : – Um componente funcional ou componentes, como um bean corporativo, página web, servlet, ou applets; – Um descritor de implantação (Deployment Descriptor) opcional que descreve o seu conteúdo. • • A implantação envolve o uso de ferramentas de implantação da plataforma para especificar a localização detalhada das informações, tais como a lista dos usuários locais que podem acessá-lo e o nome da base de dados local. Uma vez implantado em uma plataforma, o aplicativo está pronto para ser executado. API NOS JEE7 CONTAINERS API no Web Container API no Web Container API no EJB Container API no Client Container NOMENCLATURA JEE Enterprise JavaBeans (EJB) • corpo de código que tem campos e métodos para implementar os módulos da lógica de negócios. • espécie de bloco de construção que pode ser usado sozinho ou com outra EJB para executar a lógica de negócios no servidor Java EE. Enterprise JavaBeans (EJB) • Session bean : – representa uma conversação transiente com um cliente. Quando o cliente termina a execução, o bean de sessão e seus dados desapareceram. • Message-driven bean: – combina características de um Session Bean com a de um receptor da mensagem, permitindo a um componente de negócios receber mensagens de forma assíncrona. Comumente, são mensagens Java Message Service (JMS) No Java EE 7, novos recursos de Enterprise Javabeans incluem: - Asynchronous local session beans in EJB Lite - Temporizadores não persistente em EJB Lite Java EE 7 requer Enterprise JavaBeans 3.2 e 1.2 interceptores. Java Servlet • Permite definir classes de HTTP servlet. • A classe servlet estende as capacidades dos servidores que hospedam aplicativos acessados por meio de um modelo de programação de solicitaçãoHTTP resposta. • Apesar de servlets responderem a qualquer tipo de pedido, eles são comumente usados para estender os aplicativos hospedados por servidores web. No Java EE 7, novos recursos da Tecnologia Java Servlet incluem: - Nonblocking I/O - HTTP protocol upgrade Java EE 7 requer Servlet 3.1 JavaServer Faces • É framework de interface de usuário para a construção de web aplicações. • Principais componentes: – Um framework de componentes GUI. – Um modelo flexível para renderizar componentes em diferentes tipos de HTML ou diferente linguagens e tecnologias de marcação. Um objeto Renderer gera a marcação para processar o componente e converter os dados armazenados em um objeto modelo para tipos que podem ser representados numa view. – ■ A RenderKit padrão para a geração de marcação HTML 4.01. Java Server Faces • As seguintes recurso apoiam os componentes GUI: – – – – – – • Validação de entrada Manipulação de eventos Conversão de dados entre objetos modelo e componentes Criação do objeto modelo gerenciado Configuração de navegação de página Expression Language (EL) Toda funcionalidade está disponível usando APIs Java padrão e baseada em arquivos de configuração XML No Java EE 7, novos recursos da Tecnologia JavaServer Faces incluem: - Marcação amigável HTML5 ■ Faces Flows ■ Resource library contracts Java EE 7 requer JavaServer Faces 2.2 and Expression Language 3.0 JavaServer Pages • Permite colocar trechos de código servlet diretamente em um documento baseado em texto. • Uma página JSP é um documento baseado em texto que contém dois tipos de texto: – Os dados estáticos, que podem ser expressos em qualquer formato baseado em texto, como HTML ou XML – Elementos JSP, que determinam como é construído o conteúdo dinâmico da página Java EE 7 requer JavaServer Pages 2.3 para compatibilidade com versões anteriores, mas é recomendado o uso de Facelets como a tecnologia de exibição em novo aplicativos. JavaServer Pages Standard Tag Library (JSTL) • Encapsula núcleo da funcionalidade comum a muitas aplicações JSP. • Em vez de misturar vários fornecedores nos aplicativos JSP, usa-se um único conjunto de tags padrão. • Essa padronização permite implantar os aplicativos em qualquer container que suporte JSP JSTL e tornar a implementação das tags mais otimizada. • JSTL tem iterator e tags condicionais para lidar com o fluxo de controle, tags para manipular documentos XML, internacionalização, acesso a bancos de dados usando SQL e para outras funções úteis. Java EE 7 requer JSTL 1.2 Java Persistence API • Solução baseada em padrões Java para persistência. • Usa uma abordagem de mapeamento objeto / relacional para preencher a lacuna entre um modelo orientado a objeto e um banco de dados relacional. • Pode ser também usado em aplicações Java SE fora do ambiente Java EE. • É composta por: – Java Persistence API – Linguagem de consulta – Mapeamento Objeto/Relacional Java EE 7 requer Java Persistence API 2.1 Java Transaction API (JTA) • Fornece uma interface padrão para demarcar transações. \ • A arquitetura Java EE fornece um auto commit padrão a lidar com confirmação de transação e reversões (roolbacks). • Um auto commit significa que qualquer outra aplicação que está vendo os dados, terá os dados atualizados após cada operação de leitura ou escrita no banco de dados. • No entanto, se o aplicativo executa duas operações de acesso a banco de dados separados, que dependem uns dos outros, a API JTA é usada para demarcar a transação toda , incluindo as ambas operações: begins, rolls back, and commits. Java EE 7 requer Java Transaction API 1.2 Java API for RESTful Web Services (JAX-RS) • define APIs para o desenvolvimento de serviços web construídos de acordo com a arquitetura REST (Representational State Transfer) • A aplicação JAX-RS é uma aplicação web que consiste de classes empacotadas como um servlet em um arquivo WAR junto com as bibliotecas necessárias. Java EE 7 requer JAX-RS 2.0 Managed Beans • objetos leves gerenciados por contêiner (POJOs) com o requisitos mínimos, suporte de um pequeno conjunto de serviços básicos, como a injeção de recursos, o ciclo de vida de callbacks e interceptores. • Beans gerenciados representam uma generalização do bean gerenciado especificado pela tecnologia JavaServer Faces e pode ser usado em qualquer lugar em uma aplicação Java EE, não apenas em módulos web. A especificação Managed Beans é parte da especificação da plataforma Java EE 7 (JSR 342). Java EE 7 requer Managed Beans 1.0. Contexts and Dependency Injection for Java EE (CDI) • Define um conjunto de serviços contextuais, prestados pelos containers Java EE, que tornam mais fácil para os desenvolvedores usar enterprises beans com a tecnologia JavaServer Faces em aplicações web. • Projetado para uso com objetos stateful (sem estado), CDI também tem uso mais abrangente, possibilitando uma grande flexibilidade para integrar diferentes tipos de componentes de uma forma fracamente acoplada mas segura. Java EE 7 requer CDI 1.1. Dependency Injection for Java • Define um conjunto padrão de anotações (e uma interface) para uso em classes injetáveis. • Na plataforma Java EE, CDI fornece suporte para injeção de dependência. Especificamente, podem ser usados pontos de injeção somente em uma aplicação CDI-habilitada. Java EE 7 requer Dependency Injection for Java 1.0. Bean Validation • Define um modelo de metadados e API para validar dados em componentes JavaBeans. Em vez de distribuir a validação de dados ao longo de várias camadas, como no navegador e no lado servidor, permite definir a validação de restrições em um único local e compartilhá-los através das diferentes camadas Java EE 7 requer Bean Validation 1.1 Java Message Service API (JMS) • Padrão de mensagens que permite que os componentes de aplicativos Java EE criar, enviar, receber e ler mensagens. Possibilita a comunicação distribuída que é fracamente acoplada, confiável e assíncrona. • As novas características de JMS incluem o seguinte. – Oferece uma alternativa mais simples que a anterior. Inclui um objeto JMSContext que combina as funções de Connection e Session. – Todos os objetos com um método close implementam a interface java.lang.Autocloseable de para que possam ser utilizados em uma instrução Java SE 7 try-with-resources. Java EE 7 requer JMS 2.0 Java EE Connector Architecture • Usado por fornecedores de ferramentas e integradores de sistemas para criar adaptadores de recursos que suportam o acesso aos EIS que pode ser ligados a qualquer produto Java EE. • Um adaptador de recursos é um componente de software que permite que os componentes de aplicativos Java EE acessar e interagir com o gerenciador básico de recursos do EIS. • Como um adaptador de recursos é específico para o seu gerenciador de recurso, existe um adaptador de recursos diferente para cada tipo de banco de dados ou EIS. Java EE Connector Architecture • Também fornece uma integração de serviços Web baseados em plataforma Java EE, orientados para desempenho, seguro, escalável e baseado em mensagens transacionais, com EIS existentes , síncrona ou assíncrona. • Aplicações existentes e EIS integrados através da EE Java Connector Architecture para o Plataforma Java EE podem ser expostos como serviços Web baseados em XML usando JAX-WS e Java EE Connector Architecture. • Assim, JAX-WS e o são tecnologias complementares para a integração de aplicações empresariais (EAI) e de integração de negócios end-to-end. Java EE 7 requer Java EE Connector Architecture 1.7 JavaMail API • Aplicações Java EE podem usar a API JavaMail para enviar notificações por e-mail. • A API JavaMail tem duas partes: – Uma interface em nível de aplicativo usado pelos componentes do aplicativo para enviar e-mail – A interface do provedor de serviço • A plataforma Java EE inclui a API JavaMail com um provedor de serviço que permite componentes do aplicações enviar mensagens para Internet. Java EE 7 requer JavaMail 1.5 Java Authorization Contract for Containers (JACC) • Define um contrato entre um servidor de aplicativos Java EE e um provedor de política de autorização. Todos os Containers Java EE suportam este contrato. • A especificação JACC define classes java.security.Permission que satisfazem o Modelo de autorização Java EE. • A especificação define a ligação de decisões de acesso ao container a operações em instâncias dessas classes de permissão. • Define a semântica de provedores de políticas que usam as novas classes de permissão para atender aos requisitos de autorização da plataforma Java EE, incluindo a definição e utilização de papéis. Java EE 7 requer JACC 1.5. Java Authentication Service Provider Interface for Containers (JASPIC) • • • • Define uma interface de provedor de serviço (SPI) pela qual provedores de autenticação que implementam mecanismos de autenticação de mensagens podem ser integradas no Container de processamento de mensagens de cliente ou servidor ou runtimes. Provedores de autenticação integradas através desta interface operam em mensagens de rede que são providas por seus containers de chamada. Os provedores de autenticação transformam mensagens de saída para que a origem de cada mensagem possa ser autenticada pelo contêiner de recepção, e o destinatário da mensagem possa ser autenticado pelo remetente da mensagem. Provedores de autenticação autenticam cada mensagem recebida e regressam ao seu Container da chamada a identidade estabelecida como resultado da autenticação da mensagem. Java EE 7 requer JASPIC 1.1 Java API for WebSocket • WebSocket é um protocolo de aplicação que fornece comunicações full-duplex entre dois pares sobre TCP. A API Java para WebSocket permite que os aplicativos Java EE para criar endpoints usando anotações que especificam os parâmetros de configuração do endpoint e designar os seus métodos de ciclo de vida de callback. A WebSocket API é nova na plataforma Java EE 7. Java EE 7 requer Java API for WebSocket 1.0 Java API para processamento JSON • JSON é um formato de troca de dados baseado em texto derivado de JavaScript que é usado em serviços web e outros aplicativos conectados. • A API Java para Processamento de JSON (JSON-P) permite que aplicativos Java EE analisem, transformem e consultem dados JSON usando o modelo de objeto ou o modelo de streaming. JSON-P é nova na plataforma Java EE 7. Java EE 7 requer JSON-P 1.0 Concurrency Utilities for Java EE • API padrão para fornecer recursos assíncronos para os componentes do aplicativo Java EE através dos seguintes tipos de objetos: – – – – Serviço executor gerenciado, Serviço gerenciado executor programado, Fábrica de thread gerenciado e Serviço de contexto. Concurrency Utilities for Java EE é nova na plataforma Java EE 7. Java EE 7 requer Concurrency Utilities for Java EE 1.0 Batch Applications for the Java Platform • API padrão para fornecer recursos assíncronos para os componentes do aplicativo Java EE através dos seguintes tipos de objetos: – – – – Serviço executor gerenciado, Serviço gerenciado executor programado, Fábrica de thread gerenciado e Serviço de contexto. Batch Applications for the Java Platform é nova na plataforma Java EE 7. Java EE 7 requer Batch Applications for the Java Platform 1.0 Java Database Connectivity API (JDBC) • Permite chamar comandos SQL a partir de métodos em Java . • A API JDBC é usada em enterprise bean quando se tem um session bean para acessar um banco de dados. • Também pode-se usar a API do JDBC a partir de um servlet ou uma página JSP para acessar o banco de dados diretamente, sem passar por um enterprise bean. • A API JDBC tem duas partes: – Uma interface em nível de aplicativo usado pelos componentes do aplicativo para acessar um banco de dados – Uma interface de provedor de serviço para anexar um driver JDBC para a plataforma Java EE Java EE 7 requer JDBC 4.1 Java Naming and Directory Interface API (JNDI) • Fornece funcionalidade de naming e directory, permitindo que os aplicativos para acessar vários serviços de nomenclatura e diretório, como o LDAP, DNS e NIS. • A API JNDI fornece aplicativos com métodos para realização de operações de diretório padrão, como associar atributos com objetos e a busca de objetos usando seus atributos. • Usando JNDI, um aplicativo Java EE pode armazenar e recuperar qualquer tipo de objeto Java chamado, permitindo aos aplicativos Java EE coexistir com muitas aplicações e sistemas legados. JavaBeans Activation Framework (JAF) • Utilizado pela API JavaMail. • JAF fornece serviços padrão para determinar o tipo de uma parte arbitrária de dados, encapsular acesso a ela, descobrir as operações disponíveis sobre ele e criar o Componente JavaBeans apropriado para realizar essas operações. Java API for XML Processing (JAXP) • Suporta o processamento de documentos XML usando Document Object Model (DOM), Simple API for XML (SAX) e Extensible Stylesheet Language Transformations (XSLT). • JAXP permite aplicativos analisarem e transformarem documentos XML independentes de uma implementação de processamento de XML específica . • JAXP também fornece suporte namespace, que permite trabalhar com esquemas que poderia ter conflitos de nomes. • Projetado para ser flexível, JAXP permite que o uso de qualquer parser XML compatível ou processador XSL dentro de sua aplicação e suporta o esquema Worldwide Web Consortium (W3C). Java Architecture for XML Binding (JAXB) • Fornece uma maneira conveniente para ligar um Esquema XML para uma representação em programas em linguagem Java. • JAXB pode ser usado de forma independente ou em combinação com JAX-WS, caso em que se proporciona um padrão ligação de dados para mensagens de serviço da web. • Todos os contêineres Java EE do aplicativo cliente, contêineres web e EJB suportam a API JAXB. Java EE 7 requer JAXB 2.2 Java API for XML Web Services (JAX-WS) • Fornece suporte para serviços web que utilizam a API JAXB para a ligação de dados XML para objetos Java. • A especificação JAX-WS define API do cliente para acessar serviços web, bem como técnicas para implementação de terminais de serviço web. • A especificação Implementing Enterprise Web Services descreve a implantação de serviços baseados em JAX-WS e clientes. • As especificações EJB e Java Servlet também descrevem aspectos de tal implantação. Aplicações baseadas em JAX-WS pode ser implantado usando qualquer um destes modelos de implementação. Java API for XML Web Services (JAX-WS) • A especificação JAX-WS descreve o suporte para manipuladores de mensagens que podem processar pedidos e respostas de mensagens. Em geral, estes manipuladores de mensagens executam no mesmo contêiner e com os mesmos privilégios e contexto de execução como cliente componente JAX-WS ou endpoint com a qual estão associadas. • Estes manipuladores de mensagem ter acesso ao mesmo namespace JNDI como seu componente associado. Serializadores e deserializadores personalizados, se suportados, são tratados da mesma forma que manipuladores de mensagens. Java EE 7 requer JAX-WS 2.2 SOAP with Attachments API for Java (SAAJ) • API de baixo nível em que dependente de JAX-WS • Permite a produção e consumo de mensagens que estejam em conformidade com as especificações SOAP 1.1 e 1.2 e notas anexadas com SOAP. • Grande parte dos desenvolvedores não usam a API SAAJ, usando JAX-WS API em nível mais elevado. Java Authentication and Authorization Service (JAAS) • Fornece um meio para uma aplicação Java EE autenticar e autorizar um usuário ou grupo específico de usuários para executá-lo. • JAAS é uma versão Java do framework padrão Pluggable Authentication Module (PAM), que estende a arquitetura de segurança da plataforma Java para apoiar autorização baseada em usuário. Common Annotations for the Java Platform • Permite o estilo declarativo de programação na plataforma Java. Java EE 7 requer Common Annotations for the Java Platform 1.2