Desenvolvimento de Sistemas Corporativos Aula 1.4 – JEE Prof. Bruno Moreno [email protected] Soluções ● Utilizar padrões de projeto; ● Projetar a aplicação em múltiplas camadas; ● Não reinventar a roda: use frameworks. 2 Soluções do Mercado ● .NET Framework (Microsoft); ● Java Enterprise Edition – JEE (Oracle); ● Spring framework – Pivotal Software – Foi criado para simplificar a programação em Java (JEE); 3 Soluções do Mercado ● .NET Framework (Microsoft); ● Java Enterprise Edition – JEE (Oracle); ● Spring framework – Pivotal Software – Foi criado para simplificar a programação em Java (JEE); 4 Plataforma JEE ● Para suportar aplicações Java Corporativas, foi criado o Java Enterprise Edition (JEE); “O objetivo da plataforma Java EE é proporcionar aos desenvolvedores um conjunto de API poderosas que permitam desenvolver em um curto espaço de tempo, reduzindo a complexidade da aplicação e oferecendo desempenho às aplicações desenvolvidas.” Fonte: https://docs.oracle.com/javaee/7/tutorial/overview.htm 5 Conceituação ● ● ● Fundamentada no Java padrão (Java SE); Define um conjunto de funcionalidades e um ambiente de execução para aplicações corporativas; Enfoca em atributos de qualidade: – Confiabilidade; – Escalabilidade; – Segurança; – Robustez. 6 Conceituação ● ● JEE acrescenta especificações ao SDK do Java (JSRs, Java Specification Requests), que incorporam funcionalidades de: – Tolerância a falhas; – Aplicações distribuídas; – Aplicações multicamadas; – Dentre outas a serem executadas em um servidor de aplicação; A plataforma JEE é uma especificação – Somente determina o que deve ser feito; – O como fica a cargo do desenvolvedor; 7 Conceituação ● Java Specification Requests (JSR): 8 Conceituação ● Na especificação JEE, as extensões ao JSE ficam todas no pacote “javax”: – faces: contrução de interfaces componentizadas; – servlet: lida com requisições HTTP; – enterprise: lida com injeção de dependência; – ejb: acesso a objetos; – validation: validação de objetos; – transaction: controle de transações; – jms: comunicação assíncrona; – resource: conectores para integração entre sistemas. 9 Componentes ● ● Aplicações J2EE são compostas de componentes; Um componente é uma unidade autocontida de software que pode ser composta numa aplicação em tempo de design – ● ● Sem compilação; Componentes JEE são escritos em Java; Os componentes JEE estão distribuídos nas diferentes camadas da arquitetura JEE. 10 Arquitetura ● Arquitetura típica de aplicações Java EE 11 Arquitetura ● Clientes – Páginas web geradas no servidor web e renderizadas no navegador; – Aplicações desktop; – Applets Java; 12 Arquitetura ● Arquitetura típica de aplicações Java EE 13 Arquitetura ● Camada de Apresentação (web tier) – Geração dinâmica de conteúdo para o cliente; – Coleta dados de usuários e retorna resultados vindos da camada de negócio – Controle de fluxo das telas ou páginas no cliente; – Manutenção de estado de dados de usuário em sessões; – Armazenamento temporário de dados na forma de managed beans. 14 Arquitetura ● Camada de Apresentação (web tier) – Java Server Faces (JSF): ● – Servlets: ● – Framework para interfaces ricas de aplicações Web; Classes Java capazes de gerar conteúdo web e processar requisições; Java Server Pages (JSP): ● Tecnologia para páginas web dinâmicas com Java; 15 Arquitetura ● Arquitetura típica de aplicações Java EE 16 Arquitetura ● Camada de Negócio (business tier) – Execução da lógica de negócio da aplicação; – As principais funcionalidades oferecidas pela aplicação concentram-se aqui; – É implementada por meio dos EJBs (Enterprise JavaBeans) ● Em resumo: é um componente de SW que encapsula a lógica de negócio da aplicação; 17 Arquitetura ● Arquitetura típica de aplicações Java EE 18 Arquitetura ● Camada de EIS (Enterprise Information Systems tier) – Armazenamento de dados gerenciados pela aplicação; – Esses dados podem ser provenientes de diversas fontes, tais como: ● ● ● Banco de dados; Serviços web; Outros sistemas externos (incluindo sistemas legados) 19 Elementos de JEE ● Enterprise JavaBeans (EJB) – Componente da api Java que permite o desenvolvimento de sistemas corporativos; – Encapsula toda a lógica de negócio da aplicação; – Um conteiner de EJB (EJB container) fornece um ambiente de execução para componentes de software relacionados, incluindo: ● ● ● ● Segurança; Gerenciamento do ciclo de vida; Processamento de transações; Outros web services. 20 Elementos de JEE ● Containers Java EE – Ambientes de execução para diversos componentes de Java EE e ciclo de vida das aplicacões; – Mantidos em servidores de aplicação JEE; – Serviços típicos: ● ● ● Segurança: controle de acesso e recursos; Transação: agrupamento de métodos; Distribuição: invocação remota de métodos. 21 Elementos de JEE ● Servlets – São programas que rodam no servidor Web ● ● Servlets não possuem método main: precisam ser executados pelos containers; O conteiner gerencia e executa os servlets; – Atuam como camada intermediária entre uma requisição vinda de um cliente HTTP e as aplicações do servidor web; – O conteiner cria automaticamente uma nova thread para cada solicitação recebida do servlet; – Quando o servlet conclui a execução do método HTTP, a thread termina ● O conteiner gerencia o ciclo de vida dos servlets. 22 Elementos de JEE ● Containers web: camada de apresentação Tomcat ● Containers EJB: camada de negócio 23 Elementos de JEE ● Servidores de Aplicação – Para se utilizar as funcionalidades de JEE, é necessário um servidor de aplicação; – Um servidor de aplicações (Application Server, AS) é capaz de prover implementações das funcionalidades JEE ● – Um servidor que possui implementações para toda especificação JEE é chamado Full Compliant; Exemplos de AS: Jboss, Weblogic, Glashfish, WebSphere, Resin e Apache TomEE; 24 Servidores de Aplicação ● ● Alguns servidores JEE, no entanto, provém implementações somente para parte Web – Ou seja, esses servidores não dão suporte a parte Enterprise; – Estes são chamados de Web Profile Compliant; Um AS Web Compliant permite o deploy de aplicações web – O suporte à funcionalidades extras depende de cada servidor (e suas respectivas extensões). 25 Servidores de Aplicação ● ● Um servidor de aplicação é composto por vários contêineres: – Contêiner Web; – Contêiner EJB; – Contêiner JPA; – Contêiner JMS; Cada um desses contêineres manipula os tipos específicos de componentes; 26 Benefícios do uso de JEE ● ● Ampla adoção de Java; Enfoque na lógica de negócio e na apresentação enquanto a plataforma oferece um conjunto de serviços de infraestrutura reusáveis; ● Abstração de detalhes de infraestrutura; ● Portabilidade; ● Independência de implementação. 27 28 Tecnologias de JEE Tecnologia Definição/Funcionalidades Servlets Geração de conteúdo web e processamento de requisições e respostas HTTP JSP JavaServer Pages Implementação de páginas web dinâmicas com base na linguagem Java JSF JavaServer Faces Framework para criação de interfaces ricas de aplicações web EJB Enterprise JavaBeans Componentes para encapsulamento da lógica de negócio de aplicações JavaBeans Classes Java (SE) convencionadas POJO Plain Old Java Object Classe Java (SE) que não segue nenhum tipo de convenção ou modelo CDI Context and Dependence Injection Integração Dinâmica de Componentes 29 Tecnologias de JEE Tecnologia Definição/Funcionalidades JPA Java Persistence API Mapeamento objeto-relacional e persistência e consulta em banco de dados JTA Java Transaction API Controle de Transações JAX-RS Java API para webservices RESTful Desenvolvimento e utilização de serviços web de acordo com o estilo REST JAX-WS Java API para webservices XML Desenvolvimento e utilização de serviços web baseados no protocolo SOAP JMS Java Message Service Serviço de Mensagens Assíncronas JAAS Java Authentication and Authorization Service Serviço para Controle e Gerenciamento de Segurança (autenticação e autorização) JavaMail Envio e recebimento de e-mails. 30 Implantação de apps. JEE ● Antes da execução de uma aplicação JEE são realizados dois procedimentos: – Empacotamento (assembly) dos artefatos de software desenvolvidos na forma de unidades; – Implantação (deployment) dos artefatos de software em um servidor de aplicações JEE. 31 Implantação de apps. JEE ● Empacotamento: – Podem conter um ou mais componentes funcionais: ● ● ● – EJBs; Páginas web; Servlets, etc.; Podem conter descritores de implantação (deployment descriptor) ● Opcional que descreve o conteúdo da unidade. 32 Implantação de apps. JEE ● Principal unidade de implantação: – Arquivos EAR (Enterprise Archive) 33 Implantação de apps. JEE ● Principal unidade de implantação: – Arquivos EAR (Enterprise Archive) ● ● Uma aplicação corporativa é empacotada em um Enterprise Archive; Um EAR é composto por: – Um (ou mais) módulos EJB – EJBJAR; – Um (ou nenhum) módulo Web – WAR; – Bibliotecas adicionais – JAR. 34 Implantação de apps. JEE ● Principal unidade de implantação: – Arquivos EAR (Enterprise Archive) ● ● Este arquivo é o arquivo que será "deployado" pelo servidor de aplicação; Dentro dele estão – Os arquivos .jar; – Os arquivos .war – O arquivo META-INF/application.xml ● Informações sobre a aplicação 35 Implantação de apps. JEE ● Estrutura de um pacote EAR: ● Um pacote EAR contém: – Módulos Java EE; – Descritores de implantação; – Instruções através de anotações. 36 Implantação de apps. JEE ● Arquivos WAR (Web Archive): módulos web, contendo servlets, páginas web, imagens, etc. 37 Implantação de apps. JEE ● Arquivos JAR (Java Archive): módulos EJB, contendo Enterprise JavaBeans. 38 Implantação de apps. JEE 39 Implantação de apps. JEE ● Estrutura de arquivos de uma app Java EE 40 Próximas aulas... ● ● O framework JEE será detalhado posteriormente pelo Prof. Mário – Arquitetura; – EJBs; A partir da próxima aula iremos estudar/revisar Servlets e JSP. 41 Se prepare... ● Instale o IDE Eclipse; ● Instale o Tomcat; ● Tenha certeza que ambos estão OK! 42 “Deus amou tanto o mundo que deu seu Filho, seu único filho, pela seguinte razão: para que ninguém precise ser condenado; para que todos, crendo nele, possam ter vida plena e eterna.” João 3:16 (A Mensagem) 43 Referências ● ● ● ● Notas de aula do Prof. Marcelo Fernandes, IFRN Natal Central; Notas de aula do Prof. Fellipe Aleixo, IFRN Natal Central; Notas de aula do Prof. Everton Cavalcanti, UFRN DIMAP; Notas de aula do Prof. Jacques Sauvé, UFCG DSC. 44