25
Seminário - SobD Introdu₤₧o ao JavaSpaces

Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda O Que ₫ JavaSpaces ? A que o JavaSpaces se propõe API JavaSpaces Principais Classes e Interfaces

Embed Size (px)

Citation preview

Page 1: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Seminário - SobD

Introdu₤₧o ao JavaSpaces

Page 2: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Agenda

O Que ₫ JavaSpaces ? A que o JavaSpaces se propõe API JavaSpaces

Principais Classes e Interfaces Outras Implementa₤ões

Page 3: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Space

Um space ₫ um lugar na rede para compartilhar e guardar objetos

É a implementa₤₧o da especifica₤₧o do JavaSpace

Pode ser visto como compartilhamento de memória em uma rede

Simples design - 4 opera₤ões

Page 4: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Exemplo de Spaces

Page 5: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Propósito do JavaSpace

Persist₨ncia Distribuída Outra forma de construir algoritmos

distribuídos Ao inv₫s de invoca₤₧o de m₫todos, fluxo de objetos

É projetado para dar suporte a aplica₤ões que trabalham com fluxo de objetos entre servidores

Page 6: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

net.jini.space.JavaSpace

Interface do JavaSpace M₫todos da Interface

read, readIfExists take, takeIfExists write notify Snapshot

Page 7: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Entry Todos os objetos do Space s₧o entries. Um Entry ₫ um grupo de objetos tipados

expressos em uma classe que implementa a interface net.jini.core.entry.Entry

Campos do tipo Entry devem ser public. N₧o podem ser: final, transient, primitivos

Classes do tipo Entry deevem possuir um construtor public sem argumentos

Informa₤ões sobre Entry, Jini Technology Core Plataform Specification - Entry

Page 8: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Exemplo de Entry

import net.jini.core.entry.*;

public class Converter implements Entry {public Float real;public Float dolar;public boolean done;

public Converter() {}

public Converter(float r, boolean d) {real = new Float(r);done = new Boolean(d);

}

Page 9: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Read

public Entry read(Entry tmpl, Transaction txn, long timeout) throws UnusableEntryException, TransactionException, InterruptedException, RemoteException

public Entry readIfExists(Entry tmpl, Transaction txn, long timeout) throws UnusableEntryException, TransactionException, InterruptedException, RemoteException

Page 10: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Take Mesma opera₤₧o do read, mas remove Entry do

Space

public Entry take(Entry tmpl, Transaction txn, long timeout) throws UnusableEntryException, TransactionException, InterruptedException, RemoteException

public Entry takeIfExists(Entry tmpl, Transaction txn, long timeout) throws UnusableEntryException, TransactionException, InterruptedException, RemoteException

Page 11: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Write

Entrys s₧o leased

public lease write(Entry tmpl, Transaction txn, long lease) throws TransactionException, RemoteException

Page 12: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Notify

M₫todo para registrar listeners que ser₧o informados das mudan₤as no space

public EventRegistration notify(Entry tmpl, Transaction txn, RemoteEventListener, long lease, MarshalledObject handback) throws TransactionException, RemoteException

Maiores detalhes, Jini Technology Core Plataform Specification - Event

Page 13: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Snapshot

Minimiza o esfor₤o no uso repetido da mesma Entry -custo de seria₤₧o e entrega

public Entry snapshot(Entry e) throws RemoteException

ex: dele₤₧o de vários Entrys com mesmo Template

Page 14: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Relacionamento com Jini

É um servi₤o da tecnologia Jini Uso do modelo de programa₤₧o do Jini

Transa₤ões Leasing Eventos

Criados pelas mesmas pessoas

Page 15: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Pacotes do Jini

net.jini.core.transaction net.jini.core.entry net.jini.core.lease net.jini.core.event

Page 16: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Onde Usar JavaSpaces

Workflow DataFlow Aplica₤ões que utilizem fluxo de objetos Necessidade de controle transa₤ões, eventos Cache

Criar um space entre os componentes web servers/EJB e o banco de dados (DB)

Exemplo do Jrun

Page 17: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

JavaSpace n₧o ₫....

Um sistema de arquivos Um banco de dados de objetos

Page 18: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Como utilizar JavaSpaces

Modelar o problema como um fluxo de objetos, ao inv₫s do modo convencional de invoca₤₧o de m₫todos

Definir os objetos Decidir como e quando os objetos devem entrar e

sair do space, utilizando os m₫todos write, take, read, etc..

Page 19: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Fun₤ões do JavaSpace

Deixe o JavaSpace tratar da: Persist₨ncia Concorr₨ncia Transa₤ões Escalabilidade

Page 20: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Em resumo...

Se voc₨ pode modelar sua aplica₤₧o como uma troca de objetos

USE JAVASPACES!!!!!!!!!!!!

Page 21: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Questões em aberto

A seguran₤a no JavaSpaces ₫ um dos grandes problemas da tecnologia

Projeto Davis - visa resolver este problema http://www.jini.org

Page 22: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Outras implementa₤ões

GigaSpaces - http://www.gigaspaces.com Suporte a clusteriza₤₧o Intregra₤₧o com webservices Alta disponibilidade

T-Spaces - IBM

Page 23: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Alguns usuários

Cisco SI - framework para uma escalável infraestrutura de

comunica₤₧o (centrais de PABX) Jrun -Allaire

Utiliza javaspaces para troca de objetos entre instancias de servidores de aplica₤₧o

Mais usuários no http://www.jini.org

Page 24: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Sumário

Use javaspaces quando seu modelo arquitetural permite a troca de objetos

Javaspaces ₫ escalável, transacional, orientado à eventos, simples e funcional

Fortemente integrado com o Jini

Page 25: Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda  O Que ₫ JavaSpaces ?  A que o JavaSpaces se propõe  API JavaSpaces  Principais Classes e Interfaces

Maiores Informa₤ões

http://www.java.sun.com/products/javaspaces http://www.jini.org [email protected]