SlideShare ist ein Scribd-Unternehmen logo
1 von 26
SISTEMAS DISTRIBUÍDOS COM JAVA EQUIPE: DAVI FERREIRA DE LIMA ANTÔNIO CRISTIANO MARCELO RAMALHO ANTÔNIO JURACY ARQUIMEDES GABRIEL PROFESSOR: MARCELLUS CYSNE
INTRODUÇÃO Os avanços tecnológicos, a popularização da Internet e a evolução das redes de computadores, resultaram no surgimento de aplicações distribuídas, cada vez mais aumenta a necessidade de compartilhamento de informações. Em outras palavras, aumenta a necessidade de interoperabilidade entre sistemas. “Interoperabilidade define se dois componentes de um sistema, desenvolvidos com ferramentas diferentes, de fornecedores diferentes, podem ou não atuar em conjunto.” (Lichun Wang, Instituto Europeu de Informática – CORBA Workshops)
INTRODUÇÃO •  Em principio, as redes de computadores eram baseadas na comunicação entre cliente e servidor. Mais adiante, com o surgimento da programação orientada a objetos, surgiram novos middlewares, que possuem como função possibilitar que as aplicações possam ser escritas de modo mais independente possível do hardware e do sistema operacional, permitindo assim que um mesmo código de aplicação possa ser carregado e executado em diferentes equipamentos receptores. •  Em resumo, o middleware é um software capaz de interpretar os aplicativos e traduzi-los na linguagem do sistema operacional em que ele reside. Exemplos como, CORBA, DCOM e RMI (JAVA), onde o processamento passou a ser repassado para vários servidores.
INTRODUÇÃO
LINGUAGEM JAVA Linguagem de programação orientada a objetos •   Familiar (sintaxe parecida com C) •   Simples e robusta (minimiza bugs, aumenta produtividade) •   Suporte nativo a threads (+ simples, maior portabilidade) •   Dinâmica (módulos, acoplamento em tempo de execução) •   Com coleta de lixo (menos bugs, mais produtividade) • Independente de plataforma •   Segura (vários mecanismos para controlar segurança) •   Código intermediário de máquina virtual interpretado •   (compilação rápida - + produtividade no desenvolvimento) •   Sintaxe uniforme, rigorosa quanto a tipos (código mais •   simples, menos diferenças em funcionalidades iguais)
LINGUAGEM JAVA Código Fonte Código Fonte Compilado Fonte(.java) ByteCode(.class) JVM PC / LINUX JVM PC / MAC OS JVM PC / WINDOWS
PRODUTOS E APIs DO JAVA Java possui uma coleção de APIs (bibliotecas) padrão que podem ser usadas para construir aplicações •   Organizadas em pacotes (java.*, javax.* e extensões) usadas pelos ambientes de execução (JRE) e de desenvolvimento (SDK) As principais APIs são distribuídas juntamente com os produtos para desenvolvimento de aplicações •   Java 2 Standard Edition (J2SE): ferramentas e APIs essenciais para qualquer aplicação Java (inclusive GUI) •   Java 2 Enterprise Edition (J2EE): ferramentas e APIs para o desenvolvimento de aplicações distribuídas e não distribuídas. •   Java 2 Micro Edition (J2ME): ferramentas e APIs para o desenvolvimento de aplicações para aparelhos portáteis
API J2EE
CONTAINER J2EE
SISTEMAS DISTRIBUÍDOS • Uma definição de sistemas distribuídos é aquela na qual os componentes de hardware e software localizados em computadores interligados por rede, comunicam e coordenam suas ações somente através da troca de mensagens (COULOURIS, 2001).
O QUE FAZ UMA APLICAÇÃO DISTRIBUÍDA? •  Obtém dados de fontes remotas: Páginas HTML,arquivos de imagens,dados relacionais e semi-estruturados(XML),etc; •  Acessa continuamente informações de conteúdo dinâmico: Cotação de ações,notícias,monitoramento remoto de sistemas; •  Envia dados para fontes remotas: Servidores de Arquivos
O QUE FAZ UMA APLICAÇÃO DISTRIBUÍDA? •  Interage com outras aplicações de modo “ponto-a- ponto”(P2P) •  Jogos,bate-papo,compartilhamento de arquivos •  Busca informações na Web •  Realiza transações de Comércio Eletrônico •  E muito mais! •  Computação móvel/ubíqua(J2ME) •  TV interativa(ex.:SBTVD) •  Trabalho colaborativo
SISTEMAS DISTRIBUÍDOS - WEB SERVICE - •   O principal objetivo dos Web Services é proporcionar a interoperabilidade entre sistemas distribuídos, independente da plataforma e da linguagem de programação utilizada por eles, disponibilizando uma melhor interligação destas aplicações. Esta interligação tem como princípio facilitar os processos de negócios, proporcionando a softwares isolados passarem a funcionar de forma conjunta com os demais. Um projeto bem elaborado busca a diminuir custos, aumentar a produtividade e uma maior oportunidade de rendimento. Mas, diversos quesitos devem ser levados em conta, para evitar que esta comunicação de plataformas possa trazer prejuízos em vez de benefícios.
SISTEMAS DISTRIBUÍDOS - WEB SERVICE -
SISTEMAS DISTRIBUÍDOS - WEB SERVICE -
SISTEMAS DISTRIBUÍDOS - P2P- •   São usados servidores para tarefas como autenticação de usuários, serviços de diretório e mapeamento de recursos disponíveis. A idéia básica é que os nós possam contatar algum servidor para iniciar a transação, ou para algum dos serviços acima. Em seguida, o servidor devolve ao nó inicial alguma informação pertinente que permita a ele conectar-se diretamente com outro nó e efetuar a transação. É o modelo usado na grande maioria dos sistemas P2P. Kazaa, Napster, eMule, ICQ, Gnutella são alguns softwares que utilizam P2P para oferecer os serviços aos seus inúmeros usuários.
SISTEMAS DISTRIBUÍDOS - P2P-
SISTEMAS DISTRIBUÍDOS - P2P-
SISTEMAS DISTRIBUÍDOS - P2P- EMULE LIMEWIRE NAPSTER
EXEMPLO DE CÓDIGO - ACESSANDO OBJETOS REMOTOS - import java.net; import java.rmi; public interface NomeDoLivro extends Remote { String imprimeNomeDoLivro() throws RemoteException; }
EXEMPLO DE CÓDIGO - ACESSANDO OBJETOS REMOTOS - import java.net; import java.rmi; import java.rmi.server.*; import java.rmi.registry.*; public class NomeDoLivroImpl extends UnicastRemoteObject implements NomeDoLivro { public NomeDoLivroImpl() throws RemoteException { super(); } public  String imprimeNomeDoLivro() throws RemoteException { return “Sistemas Distribuidos com Java: Conceito RMI”; } }
EXEMPLO DE CÓDIGO - ACESSANDO OBJETOS REMOTOS - import java.net; import java.rmi; import java.rmi.server.*; import java.rmi.registry.*; public class NomeDoLivroServer { public static void main(String args[]) { System.setSecurityManager(new RMISecurityManager()); try { NomeDoLivroImpl obj = new NomeDoLivroImpl(); Naming.rebind(“NomeDoLivroServer”,obj); }catch(Exception e) { System.out.println(e.getMessage()); } 	} }
EXEMPLO DE CÓDIGO - ACESSANDO OBJETOS REMOTOS - import java.net; import java.rmi; import java.rmi.server.*; import java.rmi.registry.*; public class NomeDoLivroClient { public static void main(String args[]) { System.setSecurityManager(new RMISecurityManager()); try { NomeDoLivro obj = (NomeDoLivro ) Naming.lookup(“rmi://server/NomeDoLivroServer”) ; System.out.println(obj. imprimeNomeDoLivro() ); }catch(Exception e) { System.out.println(e.getMessage()); } 	} }
EXEMPLO DE CÓDIGO - ACESSANDO OBJETOS REMOTOS - E o que isso tudo faz? Quando a classe do servidor  e executada, ela usa o metodo rebind da classe Naming do pacote java.rmi para se registrar no registro RMI daquele servidor: NomeDoLivroImpl obj = new NomeDoLivroImpl(); Se tudo der certo, os clientes que foram usar esta classe conseguirao acessa-la atraves de uma URL com o protocolo RMI, como argumento do metodo lookup: NomeDoLivro obj = (NomeDoLivro ) Naming.lookup(“rmi://server/NomeDoLivroServer”) ; Nesse momento, o cliente encontra disponivel um “stub” da aplicacao servidor e faz o download do mesmo 	para o micro local.Comeca entao a conversa, momento em que trabalhamos com o objeto como se ele 	fosse “local” . System.out.println(obj. imprimeNomeDoLivro() ); Ao  chamarmos  um  metodo  do  objeto  remoto,  todo  o  ciclo  de  execucao  mencionado  anteriormente ocorre.Entao,com a chamada acima, o que e passado e: public  String imprimeNomeDoLivro() throws RemoteException { return “Sistemas Distribuidos com Java: Conceito RMI”; }
OBRIGADO !!!!

Weitere ähnliche Inhalte

Was ist angesagt?

Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de SoftwareAricelio Souza
 
Uml Diagramas Estruturais
Uml   Diagramas EstruturaisUml   Diagramas Estruturais
Uml Diagramas Estruturaisthaisedd
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de softwareRondinelli Mesquita
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkMayara Fernandes
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialAlexandre Leão
 
Automatizando seus testes com robot framework
Automatizando seus testes com robot frameworkAutomatizando seus testes com robot framework
Automatizando seus testes com robot frameworkClaudenir Freitas
 
Aula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de AtividadeAula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de AtividadeAlberto Simões
 
Qualidade de Software - Introdução
Qualidade de Software - Introdução Qualidade de Software - Introdução
Qualidade de Software - Introdução Elaine Cecília Gatto
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a AspectosRicardo Terra
 
Testes de Software
Testes de SoftwareTestes de Software
Testes de SoftwareCapgemini
 
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...Natanael Simões
 
Análise e Modelagem de Software
Análise e Modelagem de SoftwareAnálise e Modelagem de Software
Análise e Modelagem de SoftwareMarcelo Yamaguti
 
Modelo plano de_testes
Modelo plano de_testesModelo plano de_testes
Modelo plano de_testesIsaias Silva
 
Banco de questões qualidade de software
Banco de questões qualidade de softwareBanco de questões qualidade de software
Banco de questões qualidade de softwareBruno Nascimento
 

Was ist angesagt? (20)

Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Uml Diagramas Estruturais
Uml   Diagramas EstruturaisUml   Diagramas Estruturais
Uml Diagramas Estruturais
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot framework
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencial
 
Automatizando seus testes com robot framework
Automatizando seus testes com robot frameworkAutomatizando seus testes com robot framework
Automatizando seus testes com robot framework
 
Aula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de AtividadeAula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de Atividade
 
Exemplo de Plano de testes
Exemplo de Plano de testes Exemplo de Plano de testes
Exemplo de Plano de testes
 
Fundamentos de Testes de Software
Fundamentos de Testes de SoftwareFundamentos de Testes de Software
Fundamentos de Testes de Software
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Aula 7 - Modelagem de Software
Aula 7 - Modelagem de SoftwareAula 7 - Modelagem de Software
Aula 7 - Modelagem de Software
 
Qualidade de Software - Introdução
Qualidade de Software - Introdução Qualidade de Software - Introdução
Qualidade de Software - Introdução
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 
Testes de Software
Testes de SoftwareTestes de Software
Testes de Software
 
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
 
Diagramas de casos de uso - aula 2
Diagramas de casos de uso - aula 2Diagramas de casos de uso - aula 2
Diagramas de casos de uso - aula 2
 
Análise e Modelagem de Software
Análise e Modelagem de SoftwareAnálise e Modelagem de Software
Análise e Modelagem de Software
 
Modelo plano de_testes
Modelo plano de_testesModelo plano de_testes
Modelo plano de_testes
 
Banco de questões qualidade de software
Banco de questões qualidade de softwareBanco de questões qualidade de software
Banco de questões qualidade de software
 

Ähnlich wie Sistemas Distribuídos com Java

Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Lenin Abadie
 
Desenvolvimento em Nuvem
Desenvolvimento em NuvemDesenvolvimento em Nuvem
Desenvolvimento em NuvemVitor Savicki
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1César Augusto Pessôa
 
Ferramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilFerramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilInael Rodrigues
 
WebSphere 8 Intro (pt-BR)
WebSphere 8 Intro (pt-BR)WebSphere 8 Intro (pt-BR)
WebSphere 8 Intro (pt-BR)Juarez Junior
 
Escalonamento de processos em sistemas virtualizados
Escalonamento de processos em sistemas virtualizadosEscalonamento de processos em sistemas virtualizados
Escalonamento de processos em sistemas virtualizadosClaudio Eckert
 
Apresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoApresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoThiago Marinho
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaPaula Santana
 
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMMinicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMAlisson Solitto
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetosPaulo Carvalho
 

Ähnlich wie Sistemas Distribuídos com Java (20)

Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
 
Desenvolvimento em Nuvem
Desenvolvimento em NuvemDesenvolvimento em Nuvem
Desenvolvimento em Nuvem
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
DotNet vs. Java
DotNet vs. JavaDotNet vs. Java
DotNet vs. Java
 
Ferramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilFerramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento Ágil
 
Cursos
CursosCursos
Cursos
 
WebSphere 8 Intro (pt-BR)
WebSphere 8 Intro (pt-BR)WebSphere 8 Intro (pt-BR)
WebSphere 8 Intro (pt-BR)
 
Cap4 v2
Cap4 v2Cap4 v2
Cap4 v2
 
Escalonamento de processos em sistemas virtualizados
Escalonamento de processos em sistemas virtualizadosEscalonamento de processos em sistemas virtualizados
Escalonamento de processos em sistemas virtualizados
 
Sessao1a
Sessao1aSessao1a
Sessao1a
 
Apresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoApresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - Conceito
 
ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01
 
1º FasS2B 2010
1º FasS2B 20101º FasS2B 2010
1º FasS2B 2010
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageria
 
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMMinicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetos
 

Sistemas Distribuídos com Java

  • 1. SISTEMAS DISTRIBUÍDOS COM JAVA EQUIPE: DAVI FERREIRA DE LIMA ANTÔNIO CRISTIANO MARCELO RAMALHO ANTÔNIO JURACY ARQUIMEDES GABRIEL PROFESSOR: MARCELLUS CYSNE
  • 2. INTRODUÇÃO Os avanços tecnológicos, a popularização da Internet e a evolução das redes de computadores, resultaram no surgimento de aplicações distribuídas, cada vez mais aumenta a necessidade de compartilhamento de informações. Em outras palavras, aumenta a necessidade de interoperabilidade entre sistemas. “Interoperabilidade define se dois componentes de um sistema, desenvolvidos com ferramentas diferentes, de fornecedores diferentes, podem ou não atuar em conjunto.” (Lichun Wang, Instituto Europeu de Informática – CORBA Workshops)
  • 3. INTRODUÇÃO • Em principio, as redes de computadores eram baseadas na comunicação entre cliente e servidor. Mais adiante, com o surgimento da programação orientada a objetos, surgiram novos middlewares, que possuem como função possibilitar que as aplicações possam ser escritas de modo mais independente possível do hardware e do sistema operacional, permitindo assim que um mesmo código de aplicação possa ser carregado e executado em diferentes equipamentos receptores. • Em resumo, o middleware é um software capaz de interpretar os aplicativos e traduzi-los na linguagem do sistema operacional em que ele reside. Exemplos como, CORBA, DCOM e RMI (JAVA), onde o processamento passou a ser repassado para vários servidores.
  • 5. LINGUAGEM JAVA Linguagem de programação orientada a objetos • Familiar (sintaxe parecida com C) • Simples e robusta (minimiza bugs, aumenta produtividade) • Suporte nativo a threads (+ simples, maior portabilidade) • Dinâmica (módulos, acoplamento em tempo de execução) • Com coleta de lixo (menos bugs, mais produtividade) • Independente de plataforma • Segura (vários mecanismos para controlar segurança) • Código intermediário de máquina virtual interpretado • (compilação rápida - + produtividade no desenvolvimento) • Sintaxe uniforme, rigorosa quanto a tipos (código mais • simples, menos diferenças em funcionalidades iguais)
  • 6. LINGUAGEM JAVA Código Fonte Código Fonte Compilado Fonte(.java) ByteCode(.class) JVM PC / LINUX JVM PC / MAC OS JVM PC / WINDOWS
  • 7. PRODUTOS E APIs DO JAVA Java possui uma coleção de APIs (bibliotecas) padrão que podem ser usadas para construir aplicações • Organizadas em pacotes (java.*, javax.* e extensões) usadas pelos ambientes de execução (JRE) e de desenvolvimento (SDK) As principais APIs são distribuídas juntamente com os produtos para desenvolvimento de aplicações • Java 2 Standard Edition (J2SE): ferramentas e APIs essenciais para qualquer aplicação Java (inclusive GUI) • Java 2 Enterprise Edition (J2EE): ferramentas e APIs para o desenvolvimento de aplicações distribuídas e não distribuídas. • Java 2 Micro Edition (J2ME): ferramentas e APIs para o desenvolvimento de aplicações para aparelhos portáteis
  • 10. SISTEMAS DISTRIBUÍDOS • Uma definição de sistemas distribuídos é aquela na qual os componentes de hardware e software localizados em computadores interligados por rede, comunicam e coordenam suas ações somente através da troca de mensagens (COULOURIS, 2001).
  • 11. O QUE FAZ UMA APLICAÇÃO DISTRIBUÍDA? • Obtém dados de fontes remotas: Páginas HTML,arquivos de imagens,dados relacionais e semi-estruturados(XML),etc; • Acessa continuamente informações de conteúdo dinâmico: Cotação de ações,notícias,monitoramento remoto de sistemas; • Envia dados para fontes remotas: Servidores de Arquivos
  • 12. O QUE FAZ UMA APLICAÇÃO DISTRIBUÍDA? • Interage com outras aplicações de modo “ponto-a- ponto”(P2P) • Jogos,bate-papo,compartilhamento de arquivos • Busca informações na Web • Realiza transações de Comércio Eletrônico • E muito mais! • Computação móvel/ubíqua(J2ME) • TV interativa(ex.:SBTVD) • Trabalho colaborativo
  • 13. SISTEMAS DISTRIBUÍDOS - WEB SERVICE - • O principal objetivo dos Web Services é proporcionar a interoperabilidade entre sistemas distribuídos, independente da plataforma e da linguagem de programação utilizada por eles, disponibilizando uma melhor interligação destas aplicações. Esta interligação tem como princípio facilitar os processos de negócios, proporcionando a softwares isolados passarem a funcionar de forma conjunta com os demais. Um projeto bem elaborado busca a diminuir custos, aumentar a produtividade e uma maior oportunidade de rendimento. Mas, diversos quesitos devem ser levados em conta, para evitar que esta comunicação de plataformas possa trazer prejuízos em vez de benefícios.
  • 14. SISTEMAS DISTRIBUÍDOS - WEB SERVICE -
  • 15. SISTEMAS DISTRIBUÍDOS - WEB SERVICE -
  • 16. SISTEMAS DISTRIBUÍDOS - P2P- • São usados servidores para tarefas como autenticação de usuários, serviços de diretório e mapeamento de recursos disponíveis. A idéia básica é que os nós possam contatar algum servidor para iniciar a transação, ou para algum dos serviços acima. Em seguida, o servidor devolve ao nó inicial alguma informação pertinente que permita a ele conectar-se diretamente com outro nó e efetuar a transação. É o modelo usado na grande maioria dos sistemas P2P. Kazaa, Napster, eMule, ICQ, Gnutella são alguns softwares que utilizam P2P para oferecer os serviços aos seus inúmeros usuários.
  • 19. SISTEMAS DISTRIBUÍDOS - P2P- EMULE LIMEWIRE NAPSTER
  • 20. EXEMPLO DE CÓDIGO - ACESSANDO OBJETOS REMOTOS - import java.net; import java.rmi; public interface NomeDoLivro extends Remote { String imprimeNomeDoLivro() throws RemoteException; }
  • 21. EXEMPLO DE CÓDIGO - ACESSANDO OBJETOS REMOTOS - import java.net; import java.rmi; import java.rmi.server.*; import java.rmi.registry.*; public class NomeDoLivroImpl extends UnicastRemoteObject implements NomeDoLivro { public NomeDoLivroImpl() throws RemoteException { super(); } public String imprimeNomeDoLivro() throws RemoteException { return “Sistemas Distribuidos com Java: Conceito RMI”; } }
  • 22. EXEMPLO DE CÓDIGO - ACESSANDO OBJETOS REMOTOS - import java.net; import java.rmi; import java.rmi.server.*; import java.rmi.registry.*; public class NomeDoLivroServer { public static void main(String args[]) { System.setSecurityManager(new RMISecurityManager()); try { NomeDoLivroImpl obj = new NomeDoLivroImpl(); Naming.rebind(“NomeDoLivroServer”,obj); }catch(Exception e) { System.out.println(e.getMessage()); } } }
  • 23. EXEMPLO DE CÓDIGO - ACESSANDO OBJETOS REMOTOS - import java.net; import java.rmi; import java.rmi.server.*; import java.rmi.registry.*; public class NomeDoLivroClient { public static void main(String args[]) { System.setSecurityManager(new RMISecurityManager()); try { NomeDoLivro obj = (NomeDoLivro ) Naming.lookup(“rmi://server/NomeDoLivroServer”) ; System.out.println(obj. imprimeNomeDoLivro() ); }catch(Exception e) { System.out.println(e.getMessage()); } } }
  • 24. EXEMPLO DE CÓDIGO - ACESSANDO OBJETOS REMOTOS - E o que isso tudo faz? Quando a classe do servidor e executada, ela usa o metodo rebind da classe Naming do pacote java.rmi para se registrar no registro RMI daquele servidor: NomeDoLivroImpl obj = new NomeDoLivroImpl(); Se tudo der certo, os clientes que foram usar esta classe conseguirao acessa-la atraves de uma URL com o protocolo RMI, como argumento do metodo lookup: NomeDoLivro obj = (NomeDoLivro ) Naming.lookup(“rmi://server/NomeDoLivroServer”) ; Nesse momento, o cliente encontra disponivel um “stub” da aplicacao servidor e faz o download do mesmo para o micro local.Comeca entao a conversa, momento em que trabalhamos com o objeto como se ele fosse “local” . System.out.println(obj. imprimeNomeDoLivro() ); Ao chamarmos um metodo do objeto remoto, todo o ciclo de execucao mencionado anteriormente ocorre.Entao,com a chamada acima, o que e passado e: public String imprimeNomeDoLivro() throws RemoteException { return “Sistemas Distribuidos com Java: Conceito RMI”; }
  • 25.