Plataforma JXTA
A
plataforma
JXTA
(acrônimo para Juxtapose)
é
uma
especificação
de protocolo P2P, criada em 2001 pela
Sun
Microsystems (agora Oracle) e baseada em uma série de protocolos
abertos XML (Extensible
Markup
Language,
“linguagem
de
marcação
extensível”) e, por isso, podem ser
implementados em diversas linguagens de programação,
permitindo que
qualquer dispositivo se conecte à rede e troque pacotes de
informação
com os demais usuários, independente da topologia da rede.
Esta tecnologia foi
desenvolvida de forma a prover uma alternativa para computação
distribuída,
fugindo do modelo centralizado conhecido como cliente-servidor. Cada
par, embora hierarquicamente semelhante, possui capacidade
computacional distinto dos demais e uma das grandes vantagens de JXTA
é
garantir o uso racional e adequado dos recursos sem abrir mão da portabilidade.
Mesmo
dispositivos
de baixo poder computacional, como celulares,
videogames
portáteis
e
tocadores de áudio, são capazes de
adicionar
recursos à rede, em vez de consumi-los, como acontece em redes
centralizadas. Além disso, por ser baseada em padrões
abertos, qualquer
desenvolvedor pode programar aplicações de forma a
atender suas
próprias especificações, seja usando a JXTA Shell (ferramenta criada pela
própria Sun), seja usando alguma outra API terceirizada.
Cada
par
JXTA
cria
uma rede sobreposta virtual, permitindo a
interação com
outros pares normalmente inacessíveis, como os protegidos por
dispositivos reguladores de tráfego (como firewalls)
ou
que
utilizem
outro tipo de transporte de rede. Além disso, os
recursos de rede possuem uma identificação única e
constante, de forma
a poder mudar seu endereço de localização
livremente sem perder a
identificação.
JXTA permite conexão P2P entre dispositivos bastante
distintos.
PDA rodando uma aplicação JXTA.
Cada
rede
JXTA
é virtual e possui pares do tipo:
Como a rede é virtual, os pares acessam os mesmos
recursos sem distinção.
Dentro
da
plataforma,
os
pares são organizados em grupos que são
usados para
prover serviços, conexões, recursos, regiões de
acesso controlado,
controle dos demais pares e outras aplicações, embora a
JXTA não defina
nenhum protocolo específico para eles.
Os
pares
são
interligados
através de conexões, que
são canais virtuais
unidirecionais que unem um par de entrada e outro, de saída.
Apesar
disso, é possível implementar um canal bidirecional
utilizando este
mesmo conceito. As conexões possuem uma
identificação própria e, como
são virtuais, não estão associados a nenhum
dispositivo físico em
especial, sendo, na verdade, resolvidas através de um
serviço próprio
da rede.
A
troca
de
mensagens
é baseada em arquivos XML, que contém
informações de
roteamento, direcionamento e a sequência de pares a ser
percorrida até
chegar ao destinatário.
Todos
os
recursos,
grupos e pares dentro da plataforma JXTA são
representadas através de anúncios (advertisements),
que
também
são
documentos XML com informações
sobre eles. Cada recurso,
grupo e par possuem uma identificação bem definida, de
forma que, se o
mesmo está disponível, então seu anúncio
foi criado e difundido pela
rede.
De
forma
a
evitar
o armazenamento de informações sobre recursos
obsoletos
ou expirados, os anúncios possuem um prazo de
duração e, a cada
inicialização do cliente, os anúncios vencidos
são apagados. Enquanto
ao menos um par mantiver uma cópia temporária do
anúncio, o mesmo
estará disponível na rede.
Os
anúncios
podem
ser divididos em 6 tipos, de acordo com a
identificação e as informações relevantes
que armazenam:
Os
serviços
providos
pelos pares ou grupos de pares dentro da rede
podem ser divididos em:
Não é necessário que todos os pares JXTA sejam
capazes de executar todos os protocolos durante todo o tempo. Um par
JXTA é considerado ativo (e, portanto, parte da rede P2P) se
estiver
executando, ao menos, um dos protocolos supracitados. Caso
contrário, o
par não teria sequer acesso aos recursos da rede, pois
não seria capaz
de localizá-los e indexá-los.
Apesar da documentação oficial
incentivar o uso do protocolo de transporte TCP/IP e do HTTP - por
causa de sua simplicidade e popularidade -, os protocolos JXTA podem
ser aplicados sobre qualquer topologia e qualquer transporte,
dependendo da necessidade. Esta flexibilidade está presente
também nos
recursos de programação, pois suas
aplicações podem ser programadas em
qualquer linguagem, sem prejuízos às potencialidades da
rede (embora,
logicamente, Java seja a mais recorrente até pela
ligação com a Sun
Microsystems)..
Por fim, é importante deixar claro que
aplicações construídas em cima da plataforma JXTA
não são
necessariamente portáveis e muito menos intercambiáveis.
Embora as
condições oferecidas diminuam sensivelmente os
esforços de
interoperabilidade, este nível de compatibilidade deve ser
implementado
na camada das aplicações e depende, portanto, da vontade
do
desenvolvedor.