SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
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
Roteiro
1. JEE ⇒ Java Enterprise Edition
2. JB ⇒ JavaBeans
3. EJB ⇒ Enterprise JavaBeans
4. RMI ⇒ Remote Method Invocation
5. Exemplo(s) prático(s)
a. RMI
JEE: Java Enterprise Edition
Java Enterprise Edition
● 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 ?
http://docs.oracle.com/javaee/6/tutorial/doc/
De 1999 (JPE) Até 2016 (JEE 8)
Evolução do JEE
● 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
● 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?
● 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
● 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
● 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
● 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
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.
http://docs.oracle.com/javaee/6/tutorial/doc/
Exemplo de Arquitetura JEE
● 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
● 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
JavaBeans
Modelo de Componente de Software
O que é JavaBeans?
● Definição
● Como funciona?
● Caracteristicas:
○ É uma classe
○ Reutilizável
○ Facilita a programação visual
○ descrição auto-contida
○ Objeto serializado
JavaBeans e suas convenções
● Nomenclatura de métodos
● Construtores
● Comportamento
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
Exemplo de um Bean
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);
EJB: Enterprise Java Beans
Componente JEE
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.
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.
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.
URL: http://www.thejavageek.com/wp-content/uploads/2015/01/application-architecture.png
Fonte: http://www.thejavageek.com/2015/01/09/creating-jsf-ejb-jpa-application-using-eclipse-wildfly/
Arquitetura de uma Aplicação JSF / EJB / JPA
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)
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
Interface
Fonte: Elaborador pelos Autores
Servidor
Cliente
URL: http://images.devshed.com/ds/stories/Teach%20Yourself%20J2EE/04fig01.jpg
Fonte: http://www.devshed.com/c/a/java/introduction-to-enterprise-javabeans/
RMI: Remote Method Invocation
Chamada de Métodos Remotos
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
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
Fonte: Distributed Objects Programming Using Java RMI. http://condor.depaul.edu/ichu/ds420/lecture/1002/rmi%3E1.doc
TCP/IP ⇔ RMI
Fonte: http://neoramon.blogspot.com.br/2009/11/tcp-udp-e-rmi-minhas-observacoes-sobre.html
Desempenho: RMI vs. TCP / UDP
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.
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.
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
Arquitetura
Fonte: http://www.argonavis.com.br/cursos/java/j100/java_20.pdf
CORBA ⇔ RMI
Fonte: http://www.argonavis.com.br/cursos/java/j100/java_20.pdf
Tópicos Adicionais
● Serviço de ativação RMI
○ rmid
● Segurança
○ SSL → Java Secure Socket Extension (JSSE)
○ Políticas de segurança (RMISecurityManager)
FARLEY, Jim; et.al. Java Enterprise in a Nutshell: A Desktop Quick Reference
Arquitetura RMI em Tempo de Execução
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
Prós e Contras
● Multi-plataforma (que suportam a VM Java)
● Introduz novas implementações em JVMs remotas
● “Distributed Garbage Collector”
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
Exemplo Prático:
RMI
Adaptado de http://www.inf.ufsc.br/~bosco/ensino/ine5645/CalculadoraRMI.txt
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.
Interface
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.
Implementação da Interface
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.
Servidor
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
Cliente
FARLEY, Jim at.al.. Java Enterprise in a Nutshell: A Desktop Quick Reference
Relações entre os componentes
Exemplo: Arquitetura de uma loja virtual
FARLEY, Jim at.al.. Java Enterprise in a Nutshell: A Desktop Quick Reference
Referências
● TANENBAUM, Andrew S.; STEEN, Maarten. Sistemas Distribuídos: Princípios e Paradigmas. 2ª
Edição.
● FARLEY, Jim at.al.. Java Enterprise in a Nutshell: A Desktop Quick Reference
● ROMAN, Ed; et al. Dominando Enterprise Javabeans. Bookman Editora, 2009
● Integração de Sistemas com Webservices, JMS e EJB <http://www.k19.com.br>
● Oracle; Documentação Oficial RMI <https://docs.oracle.com/javase/tutorial/rmi/>
● UNICAMP; Curso POO Java <http://www.dca.fee.unicamp.br/cursos/PooJava/objdist/rmiact.html>
● UFSC <http://www.inf.ufsc.br/~bosco/ensino/ine5645/CalculadoraRMI.txt>
● <http://www.javacoffeebreak.com/articles/rmi_corba/index.html>
● <http://neoramon.blogspot.com.br/2009/11/tcp-udp-e-rmi-minhas-observacoes-sobre.html>
● <http://aquilesburlamaqui.wdfiles.com/local--files/projeto-e-implementacao-de-middleware/03-RPC&
RMI.ppt>
Dúvidas ?

Mais conteúdo relacionado

Mais procurados

Java EE no ambiente corporativo: primeiros passos WebLogic 12c
Java EE no ambiente corporativo: primeiros passos WebLogic 12cJava EE no ambiente corporativo: primeiros passos WebLogic 12c
Java EE no ambiente corporativo: primeiros passos WebLogic 12cBruno Borges
 
Java 01 Java Visao Geral Resumo
Java 01 Java Visao Geral ResumoJava 01 Java Visao Geral Resumo
Java 01 Java Visao Geral ResumoRegis Magalhães
 
Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2rodrigoareis
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaÁlvaro Farias Pinheiro
 
Arquitetura jee bp_overview
Arquitetura jee bp_overviewArquitetura jee bp_overview
Arquitetura jee bp_overviewJuarez Junior
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos JavaMarcio Marinho
 
Tutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com JavaTutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com JavaPaulo César M Jeveaux
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsIgo Coelho
 
GlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEGlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEBruno Borges
 
Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeansSliedesharessbarbosa
 
GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!Bruno Borges
 
Programação em java linguagem, ap is, boas práticas e eclipse
Programação em java   linguagem, ap is, boas práticas e eclipseProgramação em java   linguagem, ap is, boas práticas e eclipse
Programação em java linguagem, ap is, boas práticas e eclipseFilipe Bezerra Sousa
 
TDC 2011 - HornetQ e SwitchYard
TDC 2011 - HornetQ e SwitchYardTDC 2011 - HornetQ e SwitchYard
TDC 2011 - HornetQ e SwitchYardSamuel Tauil
 
Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)Luis Borges Gouveia
 
Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Manoel Campos da Silva Filho
 

Mais procurados (20)

Java EE no ambiente corporativo: primeiros passos WebLogic 12c
Java EE no ambiente corporativo: primeiros passos WebLogic 12cJava EE no ambiente corporativo: primeiros passos WebLogic 12c
Java EE no ambiente corporativo: primeiros passos WebLogic 12c
 
Java 01 Java Visao Geral Resumo
Java 01 Java Visao Geral ResumoJava 01 Java Visao Geral Resumo
Java 01 Java Visao Geral Resumo
 
Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2
 
Educação e certificação na Plataforma .NET
Educação e certificação na Plataforma .NETEducação e certificação na Plataforma .NET
Educação e certificação na Plataforma .NET
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
Arquitetura jee bp_overview
Arquitetura jee bp_overviewArquitetura jee bp_overview
Arquitetura jee bp_overview
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Tutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com JavaTutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com Java
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 
GlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEGlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EE
 
Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeans
 
GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!
 
Flisolgo2010
Flisolgo2010Flisolgo2010
Flisolgo2010
 
Linguagem de programação Java 6, 7 e 8
Linguagem de programação Java 6, 7 e 8Linguagem de programação Java 6, 7 e 8
Linguagem de programação Java 6, 7 e 8
 
Programação em java linguagem, ap is, boas práticas e eclipse
Programação em java   linguagem, ap is, boas práticas e eclipseProgramação em java   linguagem, ap is, boas práticas e eclipse
Programação em java linguagem, ap is, boas práticas e eclipse
 
Java web
Java webJava web
Java web
 
TDC 2011 - HornetQ e SwitchYard
TDC 2011 - HornetQ e SwitchYardTDC 2011 - HornetQ e SwitchYard
TDC 2011 - HornetQ e SwitchYard
 
Mod06 licao01-apostila
Mod06 licao01-apostilaMod06 licao01-apostila
Mod06 licao01-apostila
 
Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)
 
Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)
 

Semelhante a Componentes Java e RMI

ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)mauriciopel
 
Desenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXDesenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXjesuinoPower
 
Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFEmmanuel Neri
 
Repensando padrões e boas práticas java ee
Repensando padrões e boas práticas java eeRepensando padrões e boas práticas java ee
Repensando padrões e boas práticas java eeAdriano Tavares
 
Como Sobreviver Com Java2
Como Sobreviver Com Java2Como Sobreviver Com Java2
Como Sobreviver Com Java2Saulo Arruda
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaRosicleia Frasson
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesRafael Ponte
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRJBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRElvis Rocha
 
Apresentação java
Apresentação javaApresentação java
Apresentação javamunosai
 
Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Facescejug
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaMariana de Azevedo Santos
 

Semelhante a Componentes Java e RMI (20)

GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 
ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)
 
Introducao EJB 3
Introducao EJB 3Introducao EJB 3
Introducao EJB 3
 
Desenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXDesenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFX
 
Serra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EESerra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EE
 
Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSF
 
Repensando padrões e boas práticas java ee
Repensando padrões e boas práticas java eeRepensando padrões e boas práticas java ee
Repensando padrões e boas práticas java ee
 
JEE6 - Introdução
JEE6 - IntroduçãoJEE6 - Introdução
JEE6 - Introdução
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Como Sobreviver Com Java2
Como Sobreviver Com Java2Como Sobreviver Com Java2
Como Sobreviver Com Java2
 
EJB 3.1
EJB 3.1EJB 3.1
EJB 3.1
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com Java
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRJBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
 
Java pode ser_hipster
Java pode ser_hipsterJava pode ser_hipster
Java pode ser_hipster
 
Apresentação java
Apresentação javaApresentação java
Apresentação java
 
Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Faces
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em Java
 
Introdução a jsf
Introdução a jsfIntrodução a jsf
Introdução a jsf
 

Componentes Java e RMI

  • 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
  • 2. Roteiro 1. JEE ⇒ Java Enterprise Edition 2. JB ⇒ JavaBeans 3. EJB ⇒ Enterprise JavaBeans 4. RMI ⇒ Remote Method Invocation 5. Exemplo(s) prático(s) a. RMI
  • 3. JEE: Java Enterprise Edition Java Enterprise Edition
  • 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);
  • 22. EJB: Enterprise Java Beans Componente JEE
  • 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
  • 33. RMI: Remote Method Invocation Chamada de Métodos Remotos
  • 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
  • 36. Fonte: Distributed Objects Programming Using Java RMI. http://condor.depaul.edu/ichu/ds420/lecture/1002/rmi%3E1.doc TCP/IP ⇔ RMI
  • 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
  • 42. CORBA ⇔ RMI Fonte: http://www.argonavis.com.br/cursos/java/j100/java_20.pdf
  • 43. Tópicos Adicionais ● Serviço de ativação RMI ○ rmid ● Segurança ○ SSL → Java Secure Socket Extension (JSSE) ○ Políticas de segurança (RMISecurityManager)
  • 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
  • 48. Exemplo Prático: RMI Adaptado de http://www.inf.ufsc.br/~bosco/ensino/ine5645/CalculadoraRMI.txt
  • 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
  • 57. FARLEY, Jim at.al.. Java Enterprise in a Nutshell: A Desktop Quick Reference Relações entre os componentes
  • 58. Exemplo: Arquitetura de uma loja virtual FARLEY, Jim at.al.. Java Enterprise in a Nutshell: A Desktop Quick Reference
  • 59. Referências ● TANENBAUM, Andrew S.; STEEN, Maarten. Sistemas Distribuídos: Princípios e Paradigmas. 2ª Edição. ● FARLEY, Jim at.al.. Java Enterprise in a Nutshell: A Desktop Quick Reference ● ROMAN, Ed; et al. Dominando Enterprise Javabeans. Bookman Editora, 2009 ● Integração de Sistemas com Webservices, JMS e EJB <http://www.k19.com.br> ● Oracle; Documentação Oficial RMI <https://docs.oracle.com/javase/tutorial/rmi/> ● UNICAMP; Curso POO Java <http://www.dca.fee.unicamp.br/cursos/PooJava/objdist/rmiact.html> ● UFSC <http://www.inf.ufsc.br/~bosco/ensino/ine5645/CalculadoraRMI.txt> ● <http://www.javacoffeebreak.com/articles/rmi_corba/index.html> ● <http://neoramon.blogspot.com.br/2009/11/tcp-udp-e-rmi-minhas-observacoes-sobre.html> ● <http://aquilesburlamaqui.wdfiles.com/local--files/projeto-e-implementacao-de-middleware/03-RPC& RMI.ppt>