1. Object oriented / Component
Middleware
(Java)
Mateus Fernando
Robson Piere
Tiago Higino
Vinicius Ponciano
Yitzhak Stone
PUC Minas - São Gabriel
Sistemas de Informação - 7º Período
Desenvolvimento de Aplicações Distribuídas
4. ● Java EE ou Java Enterpise Edition é uma plataforma de
desenvolvimento construída em cima da plataforma Java
SE (Standard Edition).
● O foco dela é fornecer um ambiente robusto:
○ Para desenvolvimento e execução de aplicações;
○ Em grande escala;
○ Multi camadas;
○ Escaláveis;
○ Confiáveis
○ Seguras.
O que é JEE ?
6. ● Servlets - São componentes Java executados no servidor,
para gerar conteúdo dinâmico na Web.
● Java Server Pages (JSP) - Servlets mais robustos e de fácil
desenvovilmento.
● Java Server Faces (JSF) - Framework web com o padrão
MVC para simplificar o desenvolvimento de UI.
● Java Persistence API (JPA) - APIde mapeamento objeto
relacional, sendo utilizada para a persistência dos dados.
● Enterprise Java Beans (EJB) - Componentes que executam
em um container de aplicação no lado do servidor.
Principais Componentes do JEE
7. ● Para fornecer a comunicação entre componentes, APIs,
persistência, serviços entre outros, o JEE oferece os
containeres para abrigá-los.
● Os containeres são implementados pelos fornecedores de
servidor de aplicativos JEE, que disponibilizam um
container para cada tipo de componente como: Applet,
cliente de aplicativo, web e EJBs.
Como JEE oferece os serviços?
8. ● Para cada tipo de componete da plataforma é fornecido
um conteiner e eles amarzenam os componetes e
oferecem os seguintes serviços:
○ Gerenciamento ciclo de vida;
○ Segurança;
○ Implementação;
○ Comunicação com outros componentes;
○ Ambiente com tempo de execução compatível.
Conteiners JEE
9. ● Conectividade: É realizada pelos objetos distribuídos através de RMI
(Remote Method Invocation) e COBRA. Porém, todo o ciclo da conectividade
deve ser fornecido através dos protocolos HTTP e HTTPS.
● Serviços de Diretório: JNDI (Java Naming and Directory Interfaces), é uma
API que acessa serviço de diretórios, sendo que cada serviço deve fornecer
um provedor de serviços (Service Provider). Os servidores JEE são
obrigados a possuir esse tipo de serviço.
● JDBC: API JDBC (Java Database Connection), que fornece conexão aos
bancos de dados.
● JCA (Java Connector Architecture): Suporte à conexão de sistemas
legados e e integração de servidores legados.
Serviços oferecidos nos containers JEE
10. ● Segurança: autenticação e autorização dos usuários através de
APIs como JAAS (Java Authentication and Authorization Service).
● XML: Operações e suporte a XML (eXtensible Markup Language.
● Transações: O conteiner é responsavel pela transação, mas pode-se
utilizar de API’s, como o JTA (Java Transaction API).
○ JTA (Java Transaction API): É uma API que permite trabalhar
com transações independentes do gerenciador.
● E-mail: Utiliza o JMS (Java Message Service), para troca de
mensagens. utilizando vários protocolos como: POP, SMTP e IMAP.
Serviços oferecidos nos containers JEE
11. ● JMS (Java Message Service): É uma API que oferece o mecanismo
de criar, ler e armazenar mensagens. A JMS suporta dois tipos de
trocas de mensagem:
○ Ponto a ponto: Esse tipo acontece quando um aplicativo envia
uma mensagem para uma fila (destino preparado para receber as
mensagens) e após isso, um aplicativo coleta essa mensagem.
○ Publicação assinatura: Esse modelo exige que os aplicativos
clientes inscrevam-se para receber as informações sobre o
assunto desejado.
Serviços oferecidos nos containers JEE
12. Camadas JEE
● O JEE possui três camadas:
○ Camada de Negócio;
■ Encapsula os EJB’s, ou seja a lógica do negócio.
○ Camadas de Apresentação;
■ Contém as telas que serão exibidas para o usuário e faz a
comunicação com a lógica do negócio.
○ Camada Cliente
■ Essa camada suporta clientes web e portáteis que se comunicam
com o protocolo HTTP, porém outros conseguem usar SOAP e
outros tipos.
14. ● Plataforma Robusta de Desenvolvimento, bem integrada e já
consolidada no mercado. Além disso faz-se uso de toda a
força da linguagem Java, além de proporcionar um ambiente
que contém várias API’s que facilitam a integração dos
componentes do sistema com outros sistemas.
● Independência de plataforma (Sistema Operacional e
Hardware).
Prós e Contras
15. ● Utiliza apenas a linguagem Java para a escrita de
códigos, pois a JVM só roda liguagem Java.
● Desempenho prejudicado por executar apenas sobre
máquina virtual.
● Necessita de um time de desenvolvimento experiente.
Prós e Contras
17. O que é JavaBeans?
● Definição
● Como funciona?
● Caracteristicas:
○ É uma classe
○ Reutilizável
○ Facilita a programação visual
○ descrição auto-contida
○ Objeto serializado
18. JavaBeans e suas convenções
● Nomenclatura de métodos
● Construtores
● Comportamento
19. Para quê servem os JavaBeans?
● São implementação de uma interface
● Blocos de componentes GUI
● Gerador de gráficos, relatórios e planilhas
● Calendários, relógios e agendas
● Display de Dados
● Drag & Drop
● java.io.Serializable persiste a restauração de um estado
21. Propriedades
● Simples: propriedades podem ser computadas;
● Indexadas: contém uma coleção de valores;
● Vinculadas: Usadas quando vários objetos
precisam ser notificados de mudanças em um
componente;
● Restritas: Uma mudança no valor da propriedade
pode ser vetada
(java.beans.PropertyVetoException);
23. O que é EJB ?
● Enterprise JavaBeans (EJB) é um componente da
plataforma JEE que roda em um container de um servidor
de aplicação.
● Seu principal objetivo consiste em fornecer um
desenvolvimento rápido e simplificado de aplicações
Java, com base em componentes distribuídos,
transacionais, seguros e portáveis.
24. Características
● Transações: A arquitetura EJB define um suporte sofisticado para
utilização de transações. Esse suporte é integrado com a Java
Transaction API (JTA) e oferece inclusive a possibilidade de realizar
transações distribuídas.
● Segurança: Suporte para realizar autenticação e autorização de forma
transparente. Os desenvolvedores das aplicações não precisam
implementar a lógica de segurança pois ela faz parte da arquitetura EJB.
● Remotabilidade: Aplicações EJB podem ser acessadas remotamente
através de diversos protocolos de comunicação. Consequentemente, é
possível desenvolver aplicações clientes de diversos tipos. Por exemplo,
aplicações EJB podem ser como Web Services.
25. Características
● Multithreading e Concorrência: A arquitetura EJB permite que as
aplicações sejam acessados por múltiplos usuários simultaneamente de
maneira controlada para evitar problemas de concorrência.
● Persistência: Facilidades para utilizar os serviços dos provedores de
persistência que seguem a especificação JPA.
● Gerenciamento de Objetos: Mecanismos de injeção de dependências e
controle de ciclo de vida são oferecidos aos objetos de uma aplicação
EJB. O mecanismo de controle de ciclo de vida pode garantir a
escalabilidade de uma aplicação.
● Integração: A arquitetura EJB é fortemente integrada com os
componentes da plataforma Java EE. Podemos, por exemplo, facilmente
integrar os recursos do JSF em uma aplicação EJB.
27. História/Versões do EJB
● EJB 1.0 24/03/1998
● EJB 1.1 versão final 17/12/1999
● EJB 2.0 versão final 22/08/2001 (JSR 19)
● EJB 2.1 versão final 24/11/2003 (JSR 153)
● EJB 3.0 versão final 11/05/2006 (JSR 220)
● EJB 3.1 versão final 10/12/2009 (JSR 318)
● EJB 3.2 versão final 28/05/2013 (JSR 345)
28. Tipos de Beans do EJB
● Entity Beans (removidos na versão 3)
● Session Beans
○ Stateless Session Beans
○ Stateful Session Beans
○ Singleton Session Beans (versão 3.1)
● Message Driven Beans
34. Introdução ⇒ Visão geral
● Sun → JDK 1.1 → 1998
● Paradigma: POO e computação distribuída
○ Abstração, Encapsulamento, Herança e Polimorfismo
○ “Coleção de computadores independentes que se apresenta ao
usuário como um sistema único e consistente”
● Modelo Cliente / Servidor
● Síncrono (“por natureza”)
● Java
○ Plataforma JEE
○ Integração com outras linguagens
■ RMI / IIOP → CORBA
35. Introdução ⇒ Motivação
● Programação de socket
○ Baixo nível (rede / transporte)
● Problemas com o RPC
○ Necessidade de aprender uma linguagem IDL
○ Suporte limitado para tipos de dados
● Fortalecimento das linguagens Orientadas a Objetos
● Foco na aplicação → Alto nível
38. Modelo RMI (1)
● O servidor define objetos que o cliente pode usar
remotamente.
● Os clientes podem invocar métodos nesse objeto remoto
como se ele estivesse executando localmente.
● O RMI esconde o mecanismo de transporte (via rede) de
argumentos dos métodos e valores de retorno.
39. Modelo RMI (2)
● Transparências:
○ Acesso: clientes com implementações diferentes se
conectam ao servidor da mesma maneira.
○ Localização: o cliente não precisa saber onde está o
servidor que hospeda o objeto remoto.
40. Arquitetura ⇒ Camadas
● Stub / Skeleton: interface entre cliente e objetos remotos
● Referência remota: registro de objetos remotos para
pesquisa na rede
○ rmiregistry
● Transporte: protocolo de rede (comunicação
cliente/servidor)
○ JRMP (Java Remote Method Protocol) → TCP/IP
44. FARLEY, Jim; et.al. Java Enterprise in a Nutshell: A Desktop Quick Reference
Arquitetura RMI em Tempo de Execução
45. Anatomia da URL de um objeto remoto RMI
Em nosso exemplo:
rmi : // 192.168.0.1 : 1099 / CalculatorService
FARLEY, Jim; et.al. Java Enterprise in a Nutshell: A Desktop Quick Reference
46. Prós e Contras
● Multi-plataforma (que suportam a VM Java)
● Introduz novas implementações em JVMs remotas
● “Distributed Garbage Collector”
47. Prós e Contras
● Só “roda” em plataformas com suporte a Java.
● Falhas de segurança na execução de métodos remotos.
● Limitações de funcionalidade forçadas pelas restrições de segurança
● Só opera em sistemas escritos em Java. Não há suporte para
sistemas legados (C++, Ada, Cobol, Fortram, ...)
● Limitado ao TCP/IP
49. Exemplo Prático
● Definir uma interface que declara os métodos remotos
● O programa servidor:
○ deve incluir uma classe que implementa essa interface.
○ deve criar um objeto remoto e registrá-lo no serviço de
nomes (rmi registry)
● O programa cliente:
○ deve perguntar ao serviço de nomes pela referência do
objeto remoto.
○ deve invocar o método sobre o objeto remoto.
51. Exemplo Prático
● Definir uma interface que declara os métodos remotos
● O programa servidor:
○ deve incluir uma classe que implementa essa interface.
○ deve criar um objeto remoto e registrá-lo no serviço de
nomes (rmi registry)
● O programa cliente:
○ deve perguntar ao serviço de nomes pela referência do
objeto remoto.
○ deve invocar o método sobre o objeto remoto.
53. Exemplo Prático
● Definir uma interface que declara os métodos remotos
● O programa servidor:
○ deve incluir uma classe que implementa essa interface.
○ deve criar um objeto remoto e registrá-lo no serviço
de nomes (rmi registry)
● O programa cliente:
○ deve perguntar ao serviço de nomes pela referência do
objeto remoto.
○ deve invocar o método sobre o objeto remoto.
55. Exemplo Prático
● Definir uma interface que declara os métodos remotos
● O programa servidor:
○ deve incluir uma classe que implementa essa interface.
○ deve criar um objeto remoto e registrá-lo no serviço de
nomes (rmi registry)
● O programa cliente:
○ deve perguntar ao serviço de nomes pela referência
do objeto remoto.
○ deve invocar o método sobre o objeto remoto.
http://aquilesburlamaqui.wdfiles.com/local--files/projeto-e-implementacao-de-middleware/03-RPC&RMI.ppt