Java 2 Enterprise Edition Pablo Vieira Florentino 8/11/2006 Contexto Linguagem Java A linguagem Java é Orientada a Objetos 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.
Contexto Linguagem Java A linguagem é totalmente portável Contexto Linguagem Java A linguagem implementa desalocação automática de memória ( garbage collector ), e não permite a desalocação manual. Produtividade do programador Testes Bugs Qualidade
Contexto Linguagem Java 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. Portabilidade entre diferentes sistemas operacionais. Facilidades de multithreading incluídas na linguagem. Baixo custo de desenvolvimento (alta produtividade). Aplicações Web Aplicações tipicamente cliente-servidor
Aplicações Web com Java Applets Servlets JSP Java Server Pages Mas o que fazer com sistemas de informação corporativos que: possuem grande complexidade exigem escalabilidade e robustez necessitam de comunicação com objetos externos? J2EE 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. Partes Componentes J2EE Application Programming Model Modelo de Programação J2EE Platform Define um conjunto de APIs e políticas de utilização J2EE Compatibility Test Suite Verifica se um produto é compatível com a plataforma J2EE J2EE Reference Implementation Demonstração das funcionalidades da especificação J2EE 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.
Resumindo: 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 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,...
Arquitetura MVC Padrão Arquitetural da plataforma J2EE Model Dados de negócio View Apresentação para o cliente Controller Lógica de controle APM J2EE e Modelos em N Camadas Divide a implementação em duas partes Lógica de apresentação e do negócio: Implementação sob responsabilidade do desenv. Serviços de infra-estrutura Fornecidos pela plataforma J2EE Os problemas associados a serviços de infraestrutura básica são fornecidos pela plataforma: Reduz complexidade de desenvolvimento
APM J2EE - Componentes 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 : 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 Aplicações J2EE são formadas por componentes 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: Aplicações e applets clientes são componentes que rodam no cliente Servlets Java e páginas JSP são componentes Web que rodam no servidor Enterprise JavaBeans (EJB ) são componentes de negócio que rodam no servidor
APM J2EE - Componentes Camadas de Aplicação J2EE
Plataforma J2EE É um ambiente padrão para rodar aplicações J2EE um modelo de aplicação distribuído, multicamadas a capacidade de reutilizar componentes a troca de dados integrada baseada em XML um modelo de segurança unificado controle de transações flexível Componentes: J2EE deployment specification Padrão de empacotamento de aplicações para implantação. Java technology standards for the J2EE platform Plataforma J2EE Conjunto de padrões que devem ser suportados pelas plataformas: Serviços de Infra: JMS, JNDI, JTS, etc) 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 CORBA standards for the J2EE platform Interoperabilidade com modelo CORBA
Empacotamento da Aplicações J2EE 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 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: 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
Empacotamento de Aplicações J2EE 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 Módulos Web Arquivo.war contendo web.xml no diretório WEB-INF Módulos EJB Arquivo.jar contendo ejb-jar.xml no diretório META- INF Módulos Java Arquivo.jar contendo application-client.xml Um.ear que contém application.xml no diretório META-INF
Empacotamento de Aplicações J2EE Na prática Plataforma J2EE - APIs 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: JAXP (Processig); JAXR (Registries); JAX-RPC; SAAJ J2EE Connector Architecture Java Authentication and Authorization Service (JAAS)
Plataforma J2EE - APIs JDBC API padrão para acesso a base de dados heterogêneas. JDBC 2.0: Tipos de dados SQL 3 JNDI Acesso a serviços de nome e diretório independentemente de sua aplicação. RMI - IIOP Protocolo que permite invocar métodos remotos de objetos escritos em Java. Permite passar dados por valor, mediante serialização. Plataforma J2EE - Serviços Java Transaction API/Java Transaction Service (JTA/JTS) 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 TransactionService)
Plataforma J2EE - Serviços Java Authentication and Authorization Service (JAAS) 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
Implementação de Referência J2EE 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 Popularização da plataforma J2EE http://java.sun.com/j2ee/download.html#sdk Visão Geral Arquitetura J2EE
Papéis e Responsabilidades Papéis e Responsabilidades
IDE - J2EE Ambiente de Desenvolvimento Eclipse Ant Servidores de Aplicação J2EE Mais de 20 servidores de aplicação certificados em J2EE1.2 Mais de 15 servidores de aplicação certificados em J2EE1.3 BEA Weblogic IBM Websphere Oracle9iAs Sun iplanet JBoss
Desempenho 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 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.
JEE 5 Nova Versão J2EE http://java.sun.com/javaee/technologies/javaee5.jsp J2EE x EJB J2EE é : uma especificação uma padronização Dentro disto, há um modelo de desenvolvimento baseado em componentes (DBC) que são os EJB Enterprise Java Beans