Última Atualização: 9 Dezembro de 2001, 13:13 BRDT
O projeto tenciona permitir o uso de um sitema distribuído de alocação de objetos em Java. Através do pacote,
será possível desenvolver aplicações que usam
memória distribuída como se elas usassem memória compartilhada
local. Também seria interessante reaproveitar código desenvolvido
no segundo modelo para construir aplicações rodando modelo
distribuído sem grande esforço.
Uma pesquisa preliminar mostrou que diversos esforços
foram feitos nesse sentido, muitos deram certo. Todos eles são melhores
para algumas aplicações e piores para outras. Nosso projeto
também não promete ser definitivo e/ou melhor que os outros,
mas pode se tornar ponto de partida para algo maior.
Nosso primeiro protótipo funcional já pode ser baixado na página de downloads.
O controle de concorrência ficou bastante simples, mas causa uma pequena sobrecarga na rede, uma vez que os locks de escrita ficam no servidor, e é necessário trocar mensagens com ele mesmo que o lock tenha sido pego por uma thread do mesmo host. Ao contrário do que pensávamos, o pacote do Doug Lea que tencionávamos usar não foi muito útil. Apenas utilizamos um semáforo para exclusão mútua. O pacote seria mais útil se a arquitetura ficasse mais complexa (veja O que falta para ficar perfeito).
A parte de segurança de dados e autenticação de dados e hosts também ficou muito simples: A confiança ficou inteiramente depositada no servidor: os clientes só aceitam timestamps gerados pelo servidor, e identificam outros clientes verificando suas assinaturas com as chaves públicas que ele fornece. O Servidor foi construído de tal forma que ele aceita qualquer login. Fica a cargo da aplicação extender o br.shmem.server.Server para restringir o acesso ao espaço global.
Como todos os timestamps são gerados pelo servidor e a consistência dos dados não é muito rígida, não é necessário sincronizar relógios entre os hosts da aplicação. Isso torna o pacote muito mais maleável e permite que usuários sem direito de modificar o relógio do seu host criem aplicações com ele.
Autores: