Sing Li - PUC-Rio

Propaganda
Jini e Redes Espontâneas
PUC-Rio
Introdução à Computação Móvel - 2001.2
Marcus Amorim Leal
Índice
1.INTRODUÇÃO .................................................................................................................. 2
2.A TECNOLOGIA JINI ...................................................................................................... 3
2.1.PROTOCOLOS DE DESCOBERTA E AGREGAÇÃO ......................................................... 5
2.2.SERVIÇO DE BUSCA ..................................................................................................... 8
2.3.INTERFACE DE LEASING ............................................................................................. 10
2.4.EVENTOS DISTRIBUÍDOS ............................................................................................ 10
2.5.TRANSAÇÕES ............................................................................................................. 11
2.6.SERVIÇOS................................................................................................................... 12
3.REDES ESPONTÂNEAS ............................................................................................. 15
3.1.TOLERÂNCIA A FALHAS .............................................................................................. 15
3.2.MODELO DE SEGURANÇA .......................................................................................... 16
3.3.FLEXIBILIDADE ............................................................................................................ 18
3.4 EXEMPLOS .................................................................................................................. 18
4.CONCLUSÃO ................................................................................................................. 20
BIBLIOGRAFIA ................................................................................................................. 22
1
1.Introdução
A evolução na tecnologia de fabricação de semicondutores, sobretudo ao longo da última
década, está viabilizando o desenvolvimento de uma gama crescente de aplicações em
diferentes segmentos industriais. Diante de preços em contínua queda, microprocessadores
vem sendo incorporados a equipamentos tradicionais, de automóveis a geladeiras, bem
como dando vida a inovações singulares como PDAs e aparelhos de DVD. Paralelamente a
isso, a venda e a utilização de microcomputadores ampliam-se em um ritmo acelerado,
impulsionando uma verdadeira revolução em nossa sociedade.
Esta ubiquidade de recursos computacionais gerou novos e importantes desafios para a área
de computação. Equipamentos cada vez mais heterogêneos precisam ser integrados de
forma dinâmica, quase sempre transparente, e muitas vezes de forma imprevisível,
compondo sistemas robustos e persistentes. Mobilidade e adaptabilidade tornaram-se uma
importante demanda de usuários, constituíndo também um tema central no projeto de
sistemas distribuídos.
Jini é uma tecnologia concebida para suportar os inúmeros requisitos deste novo ambiente
computacional populado por equipamentos inteligentes, possibilitando a construção de
redes dinâmicas, constituídas por componentes heterogêneos, adaptáveis e autoconfiguráveis. Jini não é um sistema operacional distribuído no sentido clássico do termo,
mas apenas um conjunto de classes e interfaces que definem um modelo funcional para
sistemas distribuídos, facilitando sobremaneira a construção de redes dinamicamente
configuráveis, e estendendo a plataforma Java para este contexto (ver figura 2.1).
Uma rede Jini é constituída apenas por dois tipos de entidades: clientes e serviços. Serviços
são abstrações que podem representar qualquer tipo de componente, software ou hardware,
que ofereça uma ou mais funcionalidades através da rede. Exemplos incluem impressoras,
dispositivos de armazenamento, bibliotecas de funções, etc. Clientes representam as
entidades que consomem os serviços da rede, podendo incluir desde dispositivos com
interfaces gráficas até as próprias entidades que implementam os serviços da rede.
2
Serviços e clientes em uma rede Jini são agrupados em clusters denominados federações. A
comunicação entre membros de uma federação obedece a um conjunto de protocolos que
possibilita:
-
A habilidade de adicionar um serviço ou cliente a qualquer momento sem afetar a
operação da rede.
-
A habilidade de remover um serviço a qualquer momento, de forma controlada ou
abrupta, sem acarretar falhas críticas na operação da rede.
-
A habilidade para clientes ou serviços se moverem fisicamente dentro de uma
mesma rede.
2.A Tecnologia Jini
O conjunto de classes e interfaces que compõe a arquitetura Jini é implementado em Java,
utilizando-se particularmente das facilidades disponibilizadas por Java RMI (Remote
Method Invocation), notadamente a habilidade de dinamicamente transferir e executar
trechos de código. Mas apesar do papel central de Java nesta arquitetura a implementação
de um serviço em uma rede Jini pode ser efetuada através de qualquer combinação de
hardware e software, sem restrições a linguagens de programação, conforme veremos mais
adiante. É necessário apenas que cada serviço da rede implemente uma interface Java
através da qual suas funcionalidades tornam-se acessíveis a clientes.
3
Figura 2.1 - A Arquitetura Jini
Os componentes da arquitetura Jini podem ser agrupados seguindo a classificação
apresentada na tabela 2.1. A infraestrutura define as regras básicas de operação de uma rede
Jini. O modelo de programação define APIs que estabelecem uma semântica que deve ser
observada na implementação de serviços e aplicações. Por fim, serviços são as entidades
genéricas que compõe uma rede Jini e disponibilizam funcionalidades para clientes. Nas
seções seguintes detalhamos cada um destes componentes básicos.
Infraestrutura
Modelo de
Serviços
Programação
Java
Java + Jini
-Java VM
-Java APIs
-Enterprise Beans
-RMI
-JavaBeans
-JNDI
-Modelo de Segurança
-...
-...
-Protocolos de Descoberta -Leasing
-Impressão
e Agregação
-Eventos Distribuídos
-JavaSpaces
-Serviço de Busca
-Transações
-...
Tabela 2.1 - Arquitetura Jini x Java
4
2.1.Protocolos de Descoberta e Agregação
Um serviço torna-se acessível a clientes de uma rede Jini somente após registrar-se junto a
uma entidade ou tipo especial de serviço denominado serviço de busca1 (look-up service).
Clientes por sua vez podem acessar serviços genéricos da rede apenas através de um
serviço de busca. Para que um serviço de busca possa ser encontrado, e novos serviços
eventualmente registrem-se junto ao mesmo, Jini define um conjunto de protocolos
denominados descoberta e agregação (discovery and join protocols). Três diferentes
protocolos de descoberta são implementados:
-
Multicast Request Protocol - Utilizado quando um serviço ou cliente se conecta a
rede pela primeira vez e precisa descobrir o serviço de busca mais próximo.
-
Multicast Announcement Protocol - Utilizado pelos serviços de busca para anunciar
a sua presença. Sempre que um serviço de busca se conecta a rede ele utiliza este
protocolo.
-
Unicast Discovery Protocol - É utilizado quando um serviço ou cliente já conhece o
endereço do serviço de busca com o qual deseja se comunicar.
Os dois primeiros protocolos utilizam-se dos serviços de multicast do protocolo IP. A
implementação do IP multicast emprega uma classe especial de endereços IP (classe D) que
define os grupos multicast. Datagramas UDP (não confiáveis) com endereço de multicast
são roteados através de algoritmos especiais (baseados em árvores geradoras mínimas) e
entregues a todos os membros do grupo definido pelo endereço.
Quando um serviço se conecta a rede Jini ele envia uma mensagem para um endereço IP
multicast conhecido, ao qual estão associados os serviços de busca. Ao receber esta
mensagem o serviço de busca verifica o endereço IP do remetente e estabelece com ele uma
conexão TCP. Através dessa conexão o serviço de busca envia então um proxy2 que deverá
1
2
Toda federação possui ao menos um serviço de busca.
Um proxy é um objeto que representa localmente um objeto remoto.
5
ser executado no contexto do cliente, tornando-se responsável por gerenciar as solicitações
deste associadas ao serviço de busca.
Cabe aqui uma observação quanto ao tamanho ou abrangência de uma rede Jini. Por
questões de eficiência uma federação Jini geralmente abrange apenas o ambiente de uma
rede local, ou seja, algumas centenas de entidades. Entretanto uma rede Jini pode ser
composta por dezenas de federações, e serviços de uma federação podem ser acessados por
outras federações através de mecanismos que discutiremos mais adiante. Para minimizar a
interferência entre federações preservando a localidade das redes, os protocolos de
descoberta utilizam-se de um parâmetro especial dos datagramas IP denominado TTL (time
to live). Este parâmetro especifica o número de saltos (hops) que um pacote pode dar na
medida em que viaja pela rede. Ao atingir este limite de vida, o pacote é simplesmente
descartado pelo roteador.
Periodicamente os serviços de busca enviam mensagens multicast para todos os serviços da
federação anunciando sua presença. Qualquer serviço que por ventura não tenha
conseguido conectar-se ainda ao serviço de busca pode então estabelecer um conexão TCP
e iniciar o processo de registro.
O processo através do qual um serviço publica suas funcionalidades na federeção é
chamado agregação ou ingresso na comunidade. O proxy enviado pelo serviço de busca por
ocasião de uma descoberta implementa uma interface Java denominada ServiceRegister,
que inclui como método principal register(). Através da execução de register() o serviço
genérico envia para o serviço de busca o seu próprio proxy, juntamento com atributos que
descrevem as suas funcionalidades. O serviço de busca armazena este proxy, bem como os
atributos associados ao novo serviço, tornando-o assim acessível aos demais membros da
federação.
Um dos parâmetros que deve ser enviado pelo serviço genérico para o serviço de busca é o
seu número de identificação (ID). Este número é global, persistente e único para cada
serviço Jini, sendo atribuído por uma aplicação especial (método) dos serviços de busca por
6
ocasião da primeira vez em que cada serviço registra-se numa rede Jini. Como este ID é
único para cada serviço, e persistente durante toda a sua existência (independentemente do
serviço estar ou não conectado a uma rede Jini), ele permite que entidades sejam
identificadas individualmente, evitando duplicidade nas tabelas dos serviços de busca, e
permitindo que clientes mantenham uma memória de entidades com as quais desejam
comunicar-se.
Figura 2.2 - Serviço C envia uma mensagem multicast para a sub-rede
Figura 2.3 - Serviço de busca responde ao multicast estabelecendo
uma conexão e enviando o seu proxy
7
Figura 2.4 - Serviço C registra-se enviando o seu proxy para o serviço de busca
Figura 2.5 - Proxy do serviço C é armazenado pelo serviço de busca
tornando-se disponível para clientes
2.2.Serviço de Busca
Qualquer federação em Jini possui ao menos um serviço de busca. Estes mapeam interfaces
que indicam as funcionalidades disponibilizadas pelos serviços membros da federação e os
objetos (proxies) que implementam estas interfaces (e portanto, disponibilizam os serviços).
O serviço de busca reflete a composição atual da federação e funciona como um mercado
central para a oferta e busca de serviços.
8
Um cliente que deseja acessar os serviços de uma rede Jini, conforme descrevemos na
seção anterior, envia uma mensagem multicast para uma porta conhecida solicitando que os
serviços de busca presentes na rede identifiquem-se. Ao receber a mensagem o serviço de
busca responde enviando ao solicitante o seu proxy. Através de métodos deste proxy o
cliente pode então pesquisar os serviços disponíveis na rede que implementam uma
determinada interface. O serviço de busca irá enviar para o cliente todos os proxies de
serviços que atendam aos critérios de uma busca particular, cabendo ao cliente selecionar
aquele mais adequado às suas necessidades.
Naturalmente para facilitar o processo de busca por serviços estes de forma geral
implementam interfaces conhecidas. Uma impressora a laser por exemplo deve
implementar uma interface do tipo Printer. Um cliente que desejar acessar um serviço de
impressão a laser irá solicitar ao serviço de busca objetos que implementem a interface
Printer, recebendo provavelmente vários proxies, dentre os quais aquele correspondente a
impressora laser.
Caso um serviço ofereça funcionalidades não definidas por uma determinada interface,
estas podem ser disponibilizadas através da inclusão de métodos adicionais que estendam
uma interface padrão. Uma impressora a laser capaz de encadernar folhas pode
implementar o método encadernar(). Para identificar estas funcionalidades adicionais o
cliente deve utilizar-se das propriedades reflexivas de Java, que permitem que todas os
métodos públicos de uma classe sejam mapeados e descobertos dinamicamente.
Por fim, os serviços de busca armazenam opcionalmente atributos associados aos diferentes
serviços registrados, possibilitando que clientes refinem ainda mais as suas buscas. De
forma análoga às interfaces, diversos atributos são padronizados, como por exemplo:
Location, que especifica a localização física do serviço (edifício, andar, sala, etc); Name,
que especifica um nome legível para o serviço; e Status, que especifica o estado corrente do
serviço (disponível, sem papel, etc). Uma impressora a laser poderá ser identificada pela
sua interface, Printer, e por uma atributo específico como ServiceInfo.
9
2.3.Interface de Leasing
Em um sistema local recursos computacionais são alocados a um cliente ou processo e
tornam-se novamente disponíveis apenas quando explicitamente liberados. Em um sistema
distribuído tal política pode fazer com que alguns recursos fiquem eternamente bloqueados
por ocasião de falhas de componentes ou dificuldades de comunicação. Como forma de
evitar problemas desta natureza, Jini utiliza o conceito de leasing.
Um leasing é uma permissão de acesso a um recurso garantida por um determinado período
de tempo. Se um cliente desejar ter acesso a um serviço, ele deve primeiramente negociar
um leasing. Quando o período do leasing termina, o serviço é encerrado e o recurso
correspondente é liberado. O cliente pode encerrar um leasing antes do seu vencimento,
bem como solicitar a sua renovação a qualquer tempo. Não existe porém nenhuma
obrigação por parte do serviço em atender as exigências de um cliente quanto aos prazos do
leasing.
Um leasing pode ser exclusivo ou não exclusivo. Em leasings não exclusivos o serviço
pode ser compartilhado entre vários clientes. Por outro lado serviços mono-tarefas
disponibilizam apenas leasings exlusivos, podendo atender a apenas um cliente por vez
(uma impressora por exemplo).
Todos os proxies de serviços em Jini implementam a interface Leasing, inclusive aqueles
armazenados pelos serviços de busca. Isto impõe a necessidade de que, periodicamente,
todos os serviços disponíveis na rede renovem os seus registros (os leasings) junto aos
serviços de busca. Serviços não renovados por qualquer razão são automaticamente
exluídos da federação, tornando-se invisíveis.
2.4.Eventos Distribuídos
Os mecanismos tradicionais de RPC que utilizam-se de comunicação síncrona não podem
ser adequadamente estendidos para sistemas distribuídos genéricos. Como a latência de
10
uma rede nem sempre é conhecida ou mesmo bem comportada, e componentes geralmente
estão sujeitos a falhas, a comunicação síncrona pode fazer com que processos fiquem
bloqueados por períodos longos de tempo, impactando negativamente ou mesmo
impedindo por completo a operação eficiente do sistema. A adoção da comunicação
assíncrona, conjuntamente a um modelo de programação orientado a eventos, possibilita
uma operação mais eficiente de sistemas distribuídos, minimizando problemas decorrentes
de falhas de comunicação e componentes.
Jini define duas classes que suportam o desenvolvimento de aplicações orientadas a
eventos3. A primeira destas classes, RemoteEvent, especifica as características de um
evento e a sequência temporal em que são gerados (o que possibilita a implementação de
relógios lógicos). A segunda classe, EventRegistration, permite que geradores de eventos
registrem objetos interessados em seus eventos. Por fim, a interface RemoteEventListner
especifica o handler responsável por tratar os eventos recebidos por um objeto.
Uma aplicação comum de eventos em Jini é o registro por clientes de interesse em eventos
relacionados a serviços, como a disponibilização de uma nova funcionalidade,
modificações em seus atributos (Status por exemplo), ou o ingresso de um serviço
específico na federação.
2.5.Transações
Uma transação é um conjunto de operações que são sempre executadas atomicamente:
todas as operações conseguem ser completadas com sucesso, ou nenhuma delas é executada
mesmo que parcialmente4. Como bem ilustra o exemplo clássico da transferência monetária
3
Não existe porém nenhuma exigência quanto a utilização destas classes, que servem apenas para facilitar o
trabalho de programadores.
4
Transações possuem as propriedades conhecidas como Acid:
- Atomicidade - Todas as operações são bem sucedidas ou todas falham, executando portanto como
uma única transação.
Consistência - Após a execução de uma transação o sistema deve apresentar um estado interno
consistente.
Isolamento - Transações não afetam outras transações enquanto não forem executadas
completamente. Operações intermediárias de uma transação não podem afetar outras transações.
11
entre agências bancárias5, a implementação de transações é fundamental para que sistemas
distribuídos possam manter uma consistência interna de estados. Jini fornece uma série de
interfaces que definem uma semântica para a implementação de transações, utilizando o
protocolo conhecido como two-phase commit.
Para que uma transação possa ser implementada é necessário que defina-se inicialmente
quais operações de quais serviços irão compor a transação, e que um objeto fique
responsável por gerenciar a transação. Na primeira fase do protocolo two-phase commit o
gerente solicita que todos os participantes da transação executem suas operações, mas de
uma forma que as mesmas possam ser revertidas em caso de falha. Ao final desta fase o
gerente verifica se todos os participantes foram capazes de completar suas operações. Em
caso negativo ele comunica-se novamente com os participantes e solicita que as operações
realizadas sejam revertidas, recuperando o estado inicial do sistema. Em caso positivo ele
também comunica-se com os participantes solicitando que as operações sejam efetivadas
(commited).
Para implementar este modelo transacional os serviços em Jini devem implementar a
interface TransactionParticipant e os métodos prepare(), commit() e abort(). Tais
implementações entretanto ficam totalmente a critério do programador, já que Jini não
define qualquer regra ou facilidade adicional para a execução desta tarefa.
2.6.Serviços
Serviços são abstrações que representam qualquer entidade capaz de disponibilizar
funcionalidades para clientes em uma rede Jini. Um serviço pode ser qualquer coisa desde
um dispositivo de hardware (memória, impressora, etc) até um módulo de um software.
- Durabilidade - Após o término da transação as mudanças de estado efetuadas são permanentes.
Um cliente solicita a transferência de $X de uma conta A para uma conta B. É efetuado um débito na conta
A, mas a operação de crédito correspondente na conta B não é executada por alguma razão. O estado final do
sistema (débito em A, nenhuma modificação em B) é inconsistente, e não poderia ter ocorrido.
5
12
A execução de serviços em Jini é efetuada através de proxies que são transferidos dos
serviços de busca para os clientes como resultado de uma busca específica. Tais
transferências consistem no envio de um trecho de código executável, capaz de gerenciar
localmente a execução remota do serviço6. Cabe observar que no caso em que uma entidade
remota é responsável pela efetiva execução de um serviço, a comunicação entre esta e seus
proxies pode seguir qualquer formato/implementação suportado pela rede, não tendo que
obedecer a qualquer protocolo ou padrão imposto por Jini ou Java.
O download do proxy de um serviço pelo cliente é uma das características que possibilitam
a configuração dinâmica das redes Jini. Os proxies encapsulam caracterísitcas específicas
de cada serviço, oferecendo ao cliente uma interface através da qual poderão ser solicitadas
tarefas. Em um certo sentido o download de um proxy funciona quase que como a
instalação de um device driver, fornecendo uma interface padronizada para acesso às
funcionalidades do serviço.
Figura 2.6 - O cliente faz uma busca por um serviço de fax
6
Em alguns casos o proxy pode ser o próprio responsável pela execução do serviço, dispensando o suporte e
a comunicação com outras entidades remotas.
13
Figura 2.7 - O serviço de busca envia para o cliente um proxy do serviço desejado
Figura 2.8 - Através do proxy o cliente acessa o serviço desejado
As entidades que implementam serviços em Jini não precisam necessariamente ter a
capacidade de executar uma JVM, ou mesmo qualquer tipo de microprocessamento. Basta
que a elas possa ser acoplado algum mecanismo de controle microprocessado capaz de
implementar uma interface Java. Como ilustração podemos considerar um switch mecânico
de um ar-condicionado com a única função de ligar e desligar o equipamento. O arcondionado pode tornar-se um serviço de uma rede Jini acoplando-se a ele uma control-box
capaz de acionar o switch mediante um comando de uma interface programável. Esta
interface deve ser então encapsulado em uma classe Java, que irá disponilizar proxies
14
através dos quais clientes da rede Jini poderão acessar o serviço ar-condicionado
(ligar/desligar).
Um ponto importante em relação aos serviços de busca é que como estes implementam as
mesmas interfaces de serviços genéricos, eles também podem se registrar em outros
serviços de busca. Este mecanismo permite que membros de uma federação possam acessar
o serviço de busca de uma outra federação, acessando por conseguinte, também os serviços
disponíveis nesta.
3.Redes Espontâneas
Redes espontâneas permitem a integração de entidades e serviços de forma automática,
transparente e sem a necessidade de intervenções manuais para a atualização de
configurações. Por apresentarem maior flexibilidade, autonomia, e tolerância a falhas em
relação as arquiteturas de rede tradicionais, as redes espontâneas vem adquirindo uma
importância crescente em inúmeros segmentos de aplicação, sobretudo naqueles associados
a sistemas que incluem entidades móveis em sua composição.
Jini foi desenvolvido para atender os requisitos principais da arquitetura de redes
espontâneas, sendo utilizado comercialmente sobretudo em sistemas desta natureza. Redes
Jini apresentam grande tolerância a falhas, implementam mecanismos que possibilitam a
manutenção de níveis adequados de segurança e são relativamente flexíveis. Nas seções
seguintes discutiremos estas características. Encerraremos o capítulo com dois exemplos
reais de sistemas que utilizam Jini.
3.1.Tolerância a Falhas
A capacidade de continuar operando adequadamente mesmo diante de falhas críticas em
componentes é uma das características mais importantes das redes Jini. Esta qualidade
decorre da forma descentralizada como a sua estrutura é organizada, e da imposição do
15
conceito de leasing para todos os relacionamentos entre entidades da rede. Conforme já
descrevemos, qualquer equipamento que queira oferecer um serviço deve registrar-se em
um serviço de busca. Como todos os registros são mantidos apenas por um determinado
período de tempo (até o vencimento do leasing), qualquer falha de comunicação, hardware
ou software que impeça um serviço de renovar o seu registro, fará com que o mesmo seja
automaticamente excluído da federação.
Um segunda caracterísitca importante relacionada à robustez de redes Jini é que a exceção
de serviços de busca, as demais entidades de uma federação não desempenham nenhuma
função especial no funcionamento operacional da rede. E mesmo falhas nas entidade que
implementam um serviço de busca não impedem que a rede continue operacional, já que
clientes que tenham feito o download de proxies de serviços continuam tendo acesso às
suas funcionalidades.
Por último serviços cuja falha podem acarretar estados inconsistentes do sistema,
implicando em algum tipo de prejuízo, devem implementar o modelo de transação descrito
na seção 2.5, evitando assim quaisquer problemas dessa natureza.
3.2.Modelo de Segurança
O aspecto de segurança é particularmente importante face às vulnerabilidades associadas ao
modelo operacional de redes Jini, que impõe a necessidade de execução de trechos de
código carregados remotamente, e permite a adição frequente e de forma dinâmica de
novos serviços às federações. Por ser implementado utilizando Java e RMI, Jini conta com
todos os inúmeros recursos de segurança incorporados por estas tecnologias, dentre os
quais podemos destacar:
-
A forte tipagem da linguagem Java - Java não utiliza ponteiros, mas apenas
referências, e uma JVM não permite que um código tenha acesso a áreas de
memória não reservadas para as variáveis de programa (em C por exemplo é
possível “derrubar” um servidor através do acesso a áreas críticas de memória).
16
-
Tratamento de exceções - Em Java exceções fazem parte da assinatura de métodos,
devendo ser tratadas explicitamente pelo programador. Isso impede que um
programa apresente comportamentos anômalos como consequência da ocorrência de
exceções.
-
Assinatura digital de classes - Em Java classes podem ser assinadas digitalmente.
Portanto, através deste mecanismo é possível identificar a autoria e a origem de um
trecho de código.
-
Java Authentication and Authorization Service (JAAS) - Este serviço permite que
usuários sejam autenticados, e que a execução de trechos de código passem a estar
associadas a usuários específicos.
-
Security Manager -
Java permite a definição de políticas de segurança
estabelecendo permissões para o acesso a recursos baseadas em qualquer
combinação da autoria e origem do código a ser executado, bem como do usuário
associado a esta execução (figura 3.1).
Figura 3.1 - Security Manager
-
Verificador de bytecode - Java RMI incorpora um verificador de bytecode que
examina qualquer pedaço de código carregado remotamente, garantindo a formação
correta do mesmo7.
7
O código deve estar de acordo com a especificação da classe que implementa.
17
O modelo de segurança incorporado por Jini além de ser relativamente robusto, é bastante
flexível, ajustando-se adequadamente a uma ampla variedade de contextos. Uma
configuração comumente adotada é aquele que permite a utilização dos serviços da rede por
qualquer cliente que tenha acesso a uma interface, mas restringe a inclusão de serviços
àqueles explicitamente autorizados.
3.3.Flexibilidade
Uma rede Jini é composta por uma camada intermediária (middleware) implementada em
Java que define uma semântica e media as transações/comunicações entre os diferentes
componentes da rede. Em função das características de portabilidade/inter-operabilidade do
ambiente Java, e de sua própria arquitetura, Jini não estabelece restrições quanto a forma
como serviços são implementados, nem tão pouco em relação à infraestrutura e
implementação da(s) subrede(s). Isto viabiliza a estruturação de sistemas distribuídos multiplataforma, possibilitando a inter-operabilidade de componentes e tecnologias altamente
heterogêneas.
Paralelamente, a habilidade de adicionar e remover componentes dinamicamente confere
uma ampla liberdade quanto à arquitetura organizacional das redes Jini. A rede torna-se um
organismo dinâmico, adaptável e com grande escalabilidade.
3.4 Exemplos
Um exemplo interessante da utilização da tecnologia Jini pode ser encontrado no sistema
Infotronic do Chrysler Cruiser disponibilizado em alguns modelos deste automóvel
lançados a partir de 2000 nos EUA. Através de uma interface no painel do veículo (ver
figura 3.2) o sistema permite que passageiros e motoristas tenham acesso a inúmeros
serviços enquanto em trânsito, como localização de posição e auxílio a navegação do
veículo, acesso à Internet, download de mídia, e controle remoto de equipamentos.
18
Figura 3.2 - Interface do IT Cruiser Infotronic
Os serviços disponibilizados pelo sistema dependem da localização do veículo e de sua
conexão a rede. O usuário pode por exemplo instalar em sua residência uma rede sem fio
padrão IEEE 802.11. Neste caso ao aproximar-se da residência o sistema do veículo acessa
o serviço de busca da rede doméstica passando então a controlar e comunicar-se com todos
os equipamentos conectados (aquecedores, luzes, alarmes, computadores, etc). Em trânsito
o veículo através de um modem acessa uma rede sem fio de baixa capacidade, geralmente
um provedor de Internet, identificando automaticamente os serviços Jini acessíveis através
da mesma e informando os passageiros.
Figura 3.3 - Conexão do Sistema
19
Outro exemplo de aplicação que incorpora a tecnologia Jini foi desenvolvido recentemente
para o exército americano para a integração de equipamentos de monitoria e comunicação.
Durante uma batalha o exército usualmente estabelece postos avançados onde são
instalados centros de comando (TOC - Tactical Operation Center). Estes centros são
responsáveis por monitorar, planejar e executar ações de guerra, e contam para isso com o
apoio de uma diversidade de equipamentos eletrônicos interligados. O tipo de equipamento
empregado, bem como a arquitetura de rede utilizada para as conexões, não são
padronizadas e variam conforme a natureza da operação e a disponibilidade de
componentes
Utilizando redes Jini o exército desenvolveu uma forma eficaz de conectar equipamentos
heterogêneos de maneira rápida e sem a necessidade de intervenção humana para efetuar
configurações. Ao serem conectados a rede os equipamentos são identificados por uma
estação de controle (workstation) que disponibiliza os serviços destes através de um serviço
de busca. Equipamentos que não tem a capacidade de implementar interfaces Java são
controlados através da workstation, numa arquitetura típica de três camadas, enquanto
equipamentos mais inteligentes registram-se automaticamente junto ao serviço de busca,
interagindo diretamente com os clientes através de um proxy.
Os equipamentos podem ser adicionados ou removidos do TOC a qualquer tempo sem
desestabilizar o funcionamento do sistema, e sustentando um alto padrão de confiabilidade
compatível com operações de combate.
4.Conclusão
A demanda por mobilidade e a importância crescente do modelo de rede em um ambiente
em que os recursos computacionais são cada vez mais ubíquos e heterogêneos, geram
novos desafios e atraentes oportunidades. Segmentos de aplicação não tradicionais como
eletrodomésticos, telefones celulares, veículos e equipamentos medicinais tornaram-se
recentemente foco de uma extensa gama de soluções, criando necessidades tecnológicas
específicas e incomuns. Percebe-se também uma dificuldade maior para prever as
20
diferentes maneiras em que as tecnologias serão empregadas, valorizando portanto
características fundamentais como flexibilidade e escalabilidade.
Dentro deste contexto Jini apresenta-se como uma interessante opção para o
desenvolvimento de aplicações. Sua arquitetura possibilita a implementação de redes
configuráveis dinamicamente, compostas por diferentes plataformas, tecnologias e
componentes, inter-operando de forma transparente e com alta tolerância a falhas. Redes
em que a necessidade de intervenção humana é portanto limitada, mas que não obstante
mantém a capacidade de operar de maneira robusta, em um ambiente cada vez mais
dinâmico, heterogêneo e imprevisível.
21
Bibliografia
Arnold, Ken. The Jini Architecture: Dynamic Services in a Flexible Network; Proceedings
of the 36th ACM/IEEE Conference on Design Automation, pp.157 - 162, 1999.
Couloris, George; Dollimore, Jean; Kindberg, Tim. Distributed Systems: Concepts and
Design. Addison-Wesley, agosto 2001.
DaimlerChrysler Corp. IT DaimlerChrysler IT Cruiser Telematics Concept uses Jini
Technology, Technical Report, janeiro 2001.
Edwards, W. Keith. Core Jini. Prentice Hall PTR , setembro 1999.
Li, Sing. Professional Jini. Wrox Press, agosto 2000.
Sun Microsystems. Jini Architectural Overview, Technical White Paper, janeiro 1999.
Sun Microsystems. Why Jini Technology now?, Technical White Paper, janeiro 1999.
Sun Microsystems. Jini Technology Core Platform Specification, outubro 2000.
Sun Microsystems. U.S. Army - Reliable Battlefield Communication Using Jini
Connection Technology, Sucess Story, 2000.
Waldo, Jim. The Jini Architecture for Network-Centric Computing; Communications of
the ACM 42, 7, pp. 76 - 82, 1999.
22
Download