SlideShare uma empresa Scribd logo
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 !!!!

Mais conteúdo relacionado

Mais procurados

Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBC
Luiz Ricardo Silva
 
Análise e Projeto de Sistemas
Análise e Projeto de SistemasAnálise e Projeto de Sistemas
Análise e Projeto de Sistemas
Guilherme
 
Aula 05 - UML e Padrões de Projeto
Aula 05 - UML e Padrões de ProjetoAula 05 - UML e Padrões de Projeto
Aula 05 - UML e Padrões de Projeto
Vinícius de Paula
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring Framework
Natanael Fonseca
 
Aula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - ProcessosAula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - Processos
Messias Batista
 
Banco de dados aula 2
Banco de dados  aula 2Banco de dados  aula 2
Banco de dados aula 2
Albert Belchior
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Leinylson Fontinele
 
13 Java Script - Validação de formulário
13 Java Script  - Validação de formulário13 Java Script  - Validação de formulário
13 Java Script - Validação de formulário
Centro Paula Souza
 
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...
Fernando Belome Feltrin
 
Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7
Claudio Martins
 
Algoritmos - Pseudocódigo
Algoritmos - PseudocódigoAlgoritmos - Pseudocódigo
Algoritmos - Pseudocódigo
Elaine Cecília Gatto
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
Eduardo Carvalho
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
Elmano Cavalcanti
 
diagrama de componentes
diagrama de componentesdiagrama de componentes
diagrama de componenteselliando dias
 
Apresentação mvc
Apresentação mvcApresentação mvc
Apresentação mvc
leopp
 
Diagrama de sequência
Diagrama de sequênciaDiagrama de sequência
Diagrama de sequência
Honório Júnior
 
O que é um Banco de Dados Relacional?
O que é um Banco de Dados Relacional?O que é um Banco de Dados Relacional?
O que é um Banco de Dados Relacional?
Joeldson Costa Damasceno
 
Introdução CSS
Introdução CSSIntrodução CSS

Mais procurados (20)

Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBC
 
Análise e Projeto de Sistemas
Análise e Projeto de SistemasAnálise e Projeto de Sistemas
Análise e Projeto de Sistemas
 
Aula 05 - UML e Padrões de Projeto
Aula 05 - UML e Padrões de ProjetoAula 05 - UML e Padrões de Projeto
Aula 05 - UML e Padrões de Projeto
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring Framework
 
Aula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - ProcessosAula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - Processos
 
Banco de dados aula 2
Banco de dados  aula 2Banco de dados  aula 2
Banco de dados aula 2
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
 
13 Java Script - Validação de formulário
13 Java Script  - Validação de formulário13 Java Script  - Validação de formulário
13 Java Script - Validação de formulário
 
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...
 
Barramentos
Barramentos Barramentos
Barramentos
 
Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7
 
Algoritmos - Pseudocódigo
Algoritmos - PseudocódigoAlgoritmos - Pseudocódigo
Algoritmos - Pseudocódigo
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
diagrama de componentes
diagrama de componentesdiagrama de componentes
diagrama de componentes
 
Apresentação mvc
Apresentação mvcApresentação mvc
Apresentação mvc
 
Diagrama de sequência
Diagrama de sequênciaDiagrama de sequência
Diagrama de sequência
 
O que é um Banco de Dados Relacional?
O que é um Banco de Dados Relacional?O que é um Banco de Dados Relacional?
O que é um Banco de Dados Relacional?
 
Introdução CSS
Introdução CSSIntrodução CSS
Introdução CSS
 

Semelhante a Sistemas Distribuidos 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 Nuvem
Vitor 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.1
César Augusto Pessôa
 
DotNet vs. Java
DotNet vs. JavaDotNet vs. Java
DotNet vs. Java
armeniocardoso
 
Ferramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilFerramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento Ágil
Inael Rodrigues
 
Cursos
CursosCursos
WebSphere 8 Intro (pt-BR)
WebSphere 8 Intro (pt-BR)WebSphere 8 Intro (pt-BR)
WebSphere 8 Intro (pt-BR)
Juarez Junior
 
Cap4 v2
Cap4 v2Cap4 v2
Escalonamento de processos em sistemas virtualizados
Escalonamento de processos em sistemas virtualizadosEscalonamento de processos em sistemas virtualizados
Escalonamento de processos em sistemas virtualizados
Claudio Eckert
 
Sessao1a
Sessao1aSessao1a
Sessao1a
Nelson Sousa
 
Apresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoApresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - Conceito
Thiago Marinho
 
ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01
ETEC Monsenhor Antonio Magliano
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
armeniocardoso
 
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
Norberto Santos
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageria
Paula Santana
 
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMMinicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Alisson Solitto
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetos
Paulo Carvalho
 

Semelhante a Sistemas Distribuidos 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 Distribuidos 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.