Java 2 Enterprise Edition Pablo Vieira Florentino 8/11/2006 Contexto – Linguagem Java l A linguagem Java é Orientada a Objetos l Influenciada diretamente por C++ e Eiffel, a linguagem segue a grande tendência das linguagens de programação nas décadas de 80 e 90. Neste período, linguagens como Pascal, Ada, Lisp e Cobol ganharam versões Orientadas a Objetos. 1 Contexto – Linguagem Java l A linguagem é totalmente portável Contexto – Linguagem Java l A linguagem implementa desalocação automática de memória (“garbage collector”), e não permite a desalocação manual. l l l l Produtividade do programador Testes Bugs Qualidade 2 Contexto – Linguagem Java l l l Java é uma das linguagens mais bem projetadas desde Ada. Java não apresenta performance comparável a Fortran ou C. As decisões de projeto da linguagem são ótimas para rodar em um servidor Web. l l l Portabilidade entre diferentes sistemas operacionais. Facilidades de multithreading incluídas na linguagem. Baixo custo de desenvolvimento (alta produtividade). Aplicações Web l Aplicações tipicamente cliente-servidor 3 Aplicações Web com Java l l l l Applets Servlets JSP – Java Server Pages Mas o que fazer com sistemas de informação corporativos que: l l l possuem grande complexidade exigem escalabilidade e robustez necessitam de comunicação com objetos externos ? J2EE l A Especificação Java 2 Enterprise Edition (J2EE ) fornece uma abordagem baseada em componentes para o projeto, desenvolvimento e a implantação de aplicações corporativas. l Partes Componentes J2EE Application Programming Model l Modelo de Programação l J2EE Platform l Define um conjunto de APIs e políticas de utilização l J2EE Compatibility Test Suite l Verifica se um produto é compatível com a plataforma J2EE l J2EE Reference Implementation l Demonstração das funcionalidades da especificação J2EE l Provê definição operacional da Plataforma Soluções J2EE são independentes de plataformas HW / SO e não são amarradas a produtos/APIs específicas de quaisquer fabricantes. l l 4 Resumindo: l l Estende a linguagem Java através de padrões simples e unificados para aplicações distribuídas através de um modelo baseado em componentes. J2EE especifica tanto a infra-estrutura para gerenciar suas aplicações quanto APIs para construí-las. Padronização l l Java Community Process. www.jcp.org Participantes: Accenture, Adobe, BEA, Borland, British Telecom, Bull, Cisco, Compaq, DOD, EDS, Ericsson, Fujitsu, HP, Hitachi, IBM,Macromedia, Mitsubishi, Motorola, NEC, Nokia,Novell, NTT, Oracle, Panasonic, Philips, Rational,SAP, Sharp, Siemens, Sony, Sun, Sybase,Telefonica, Texas Instruments, Unisys, Verisign,Vignette, Vodafone, Xerox, Yamaha,... 5 Arquitetura MVC l Padrão Arquitetural da plataforma J2EE l Model l l View l l Dados de negócio Apresentação para o cliente Controller l Lógica de controle APM J2EE e Modelos em N Camadas l Divide a implementação em duas partes l Lógica de apresentação e do negócio: l l Serviços de infra-estrutura l l Implementação sob responsabilidade do desenv. Fornecidos pela plataforma J2EE Os problemas associados a serviços de infraestrutura básica são fornecidos pela plataforma: l Reduz complexidade de desenvolvimento 6 APM J2EE - Componentes l l Componentes J2EE são escritos em Java e compilados da mesma forma que qualquer programa Java Diferença entre componentes J2EE e uma classe Java “padrão“: l l componentes são montados em uma aplicação J2EE, verifica-se se os mesmos são bem-formados e estão de acordo com a especificação J2EE são entregues para a produção, onde são executados e gerenciados pelo servidor J2EE APM J2EE - Componentes l Aplicações J2EE são formadas por componentes l l Um componente J2EE é uma unidade de software funcional, autocontida que é montada em uma aplicação J2EE juntamente com suas classes e arquivos relacionados e que se comunica com outros componentes A especificação J2EE define os seguintes componentes J2EE: l Aplicações e applets clientes são componentes que rodam no cliente l Servlets Java e páginas JSP são componentes Web que rodam no servidor l Enterprise JavaBeans (EJB ) são componentes de negócio que rodam no servidor 7 APM J2EE - Componentes Camadas de Aplicação J2EE 8 Plataforma J2EE l l l É um ambiente padrão para rodar aplicações J2EE l um modelo de aplicação distribuído, multicamadas l a capacidade de reutilizar componentes l a troca de dados integrada baseada em XML l um modelo de segurança unificado l controle de transações flexível Componentes: l J2EE deployment specification Padrão de empacotamento de aplicações para implantação. l Java technology standards for the J2EE platform Plataforma J2EE l Conjunto de padrões que devem ser suportados pelas plataformas: l Serviços de Infra: JMS , JNDI, JTS, etc) l l l IETF standards for the J2EE platform Conjunto de Padrões Internet que todas as plataformas devem suportar (Internet Engineering Task Force) ex. XML, HTTP, HTML l CORBA standards for the J2EE platform Interoperabilidade com modelo CORBA 9 Empacotamento da Aplicações J2EE l l l Componentes J2EE são empacotados separadamente e colocados em uma aplicação J2EE para implantação Cada componente, seus arquivos relacionados, como GIFs e HTMLs ou classes utilitárias que rodem no servidor, bem como um descritor de implantação, são montados em um módulo e adicionados à aplicação J2EE Uma aplicação J2EE é composta de um ou mais enterprise bean e módulos clientes (componente Web ou aplicação) Empacotamento de Aplicações J2EE l l l Um aplicação J2EE e cada um de seus módulos tem seu próprio descritor de implantação Um descritor de implantação é um documento XML que descreve as configurações de implantação de seu componente Usar XML permite ao “implantador” alterar facilmente atributos de seu EJB. Atributos configuráveis incluem: l l l l l nomes das interfaces Home e Remota necessárias para o EJB nome a ser publicado na JNDI para a interface Home do EJB Atributos transacionais para cada método do EJB Listas de controle de acesso para autenticação As informações do descritor de implantação são declarativas e podem ser alteradas sem modificar o código fonte do bean 10 Empacotamento de Aplicações J2EE l l l l Em tempo de execução, o servidor J2EE lê o descritor de implantação e atua sobre o componente de acordo com as informações lidas. EJB-Jar file – arquivo jar que contém o EJB, as interfaces e o descritor de implantação Uma aplicação J2EE com todos os seus módulos é entregue em um arquivo Enterprise ARchive (EAR) Um arquivo EAR nada mais é que um arquivo Java Archive (JAR) padrão com extensão .ear Empacotamento de Aplicações J2EE – Na prática l Módulos Web l l Módulos EJB l l Arquivo .jar contendo ejb-jar.xml no diretório METAINF Módulos Java l l Arquivo .war contendo web.xml no diretório WEB-INF Arquivo .jar contendo application-client.xml Um .ear que contém application.xml no diretório META-INF 11 Empacotamento de Aplicações J2EE – Na prática Plataforma J2EE - APIs l l l l l l l l l l l EJB JDBC Servlets JSP Java Messaging Service (JMS) Java Naming and Directory Interface (JNDI) Java Transaction Service (JTS/JTA) Java Mail (JavaBeans Activation Framework) Java API for XML Processing: l – JAXP (Processig); JAXR (Registries); JAX-RPC; SAAJ J2EE Connector Architecture Java Authentication and Authorization Service (JAAS) 12 Plataforma J2EE - APIs l JDBC l l l JNDI l l API padrão para acesso a base de dados heterogêneas. JDBC 2.0: Tipos de dados SQL 3 Acesso a serviços de nome e diretório independentemente de sua aplicação. RMI - IIOP l l Protocolo que permite invocar métodos remotos de objetos escritos em Java. Permite passar dados por valor, mediante serialização. Plataforma J2EE - Serviços l Java Transaction API/Java Transaction Service (JTA/JTS) l l l l l Usado na arquitetura J2EE como a API transacional Um Enterprise Bean Provider pode usar o JTS para criar código de transações, embora o container EJB normalmente implemente transações para os componentes EJB É possível definir os atributos transacionais de um componente EJB em tempo de implantação O Container EJB é responsável pela manipulação da transação, tanto local quanto distribuída A especificação do JTS é o mapeamento Java para o OTS CORBA (Object Transaction Service) 13 Plataforma J2EE - Serviços l Java Authentication and Authorization Service (JAAS) l l Fornece uma forma de uma aplicação J2EE autenticar e autorizar um usuário específico ou um grupo de usuários para executá-la É uma versão Java da infra-estrutura padrão PAM (Pluggable Authentication Module), que estende a arquitetura de segurança da plataforma Java para suportar autorização baseada em usuário Containers 14 Implementação de Referência J2EE l l l Definição operacional da plataforma J2EE Plataforma padrão para testes de compatibilidade com a especificação J2EE Disponível na Web de forma gratuita l l Popularização da plataforma J2EE http://java.sun.com/j2ee/download.html#sdk Visão Geral – Arquitetura J2EE 15 Papéis e Responsabilidades Papéis e Responsabilidades 16 IDE - J2EE l Ambiente de Desenvolvimento l l Eclipse Ant Servidores de Aplicação J2EE l l Mais de 20 servidores de aplicação certificados em J2EE1.2 Mais de 15 servidores de aplicação certificados em J2EE1.3 l BEA Weblogic IBM Websphere Oracle9iAs Sun iPlanet l JBoss l l l 17 Desempenho l l l Apesar dos custos de abstração da linguagem Java, a performance de servlets é equivalente a de CGI C++. Os principais servidores de aplicação utilizam compiladores just in time - JIT. e-bay: 320M page views/dia. 2100 transações/segundo. Segurança l l l l Permite segurança como parte do deployment, sem depender de configuração de ambiente durante a execução da aplicação. Facilita o desenvolvimento ao delegar a responsabilidade para os “papéis de segurança”. Evita misturar código de segurança à lógica do negócio. Permite configurar as políticas de segurança da forma mais adequada ao ambiente de instalação. 18 JEE 5 l Nova Versão J2EE l http://java.sun.com/javaee/technologies/javaee5.jsp J2EE x EJB l J2EE é : l l l uma especificação uma padronização Dentro disto, há um modelo de desenvolvimento baseado em componentes (DBC) que são os EJB l Enterprise Java Beans 19