Projeto Cajo - Cajo project
O Projeto Cajo é uma estrutura que permite que vários aplicativos Java que estão espalhados por várias máquinas trabalhem juntos de forma transparente e dinâmica. Essa estrutura é útil para aplicativos abertos / gratuitos e proprietários que precisam de recursos de computação distribuída. É capaz de ser usado em quase todas as plataformas equipadas com Java ( JRE / JME 1.2 ou superior) ( telefones celulares , mainframes , servidores , dispositivos incorporados etc.). É um framework “drop-in”, porque não impõe nenhum requisitos estruturais ou mudanças de código-fonte e é 100% puro Java sem código XML. Ele também não depende de nenhuma outra estrutura e pode funcionar por trás de NAT , firewalls e até proxies HTTP .
História
O projeto Cajo foi emitido pela porta IANA número 1198 e endereço UDP Multicast 224.0.23.162.
Licença
O código-fonte é gratuito sob a LGPL e a documentação é gratuita sob a GFDL .
Uso
visão global
Usando o Projeto Cajo, objetos Java comuns não modificados podem ser remotos usando uma única linha de código:
- Itemserver.bind (someObject, "someName")
Eles podem então ser usados por máquinas remotas estaticamente ou dinamicamente.
Uso de objeto remoto estático
O uso de objetos remotos estáticos é tipicamente realizado quando há uma ou mais interfaces para o objeto, definindo como o cliente pode utilizá-lo, conhecido em tempo de compilação . Por exemplo:
- interface pública SomeInterface {... // assinaturas de método}
O objeto remoto implementa esta interface, e possivelmente outras, e então remota o objeto conforme mostrado anteriormente.
O uso de objeto remoto estático é fornecido por meio de a TransparentItemProxy
. O usuário de um objeto remoto pode criar uma referência a esse objeto, que realmente implementa a interface compartilhada, da seguinte maneira:
- SomeInterface si = (SomeInterface) TransparentItemProxy.getItem ("// someHost: 1198 / someName", nova classe [...] {SomeInterface.class})
Uma máquina remota agora pode invocar métodos no objeto remoto, com a sintaxe e semântica exata do Java, como se fosse local.
Uso de objetos remotos dinâmicos
O uso de objetos remotos dinâmicos normalmente é executado quando a interface para um objeto é determinada no tempo de execução. Geralmente, esse é o caso ao usar objetos remotos Cajo em um script . Uma máquina usa dinamicamente uma referência de objeto remoto da seguinte maneira:
- // obter referência
Object object = Remote.getItem ("// someHost: 1198 / someName");
- // normalmente obtido em tempo de execução
String someMethod = "someMethod";
- // também obtido em tempo de execução
Objeto someArgs = new Object [...] {someArgs, ...};
- Resultado do objeto = Remote.invoke (object, someMethod, someArgs);
Este trecho invoca um método em um objeto remoto, fornecendo os argumentos (se houver) e retornando o resultado. (caso existam)
A estrutura cajo pode permitir que uma máquina remova sua referência de objeto usando UDP / IP Multicast . Esta técnica permite que máquinas interessadas utilizem referências remotas, bastando escutar os anúncios. Isso fornece um mecanismo de ligação Um-para-muitos , em que os usuários do objeto remoto não precisam saber o endereço TCP / IP da máquina host.
Interfaces gráficas de usuário remotas
O Projeto Cajo também é usado para interfaces gráficas de usuário remotas. Isso permite que um aplicativo execute sua visualização em máquinas separadas de seu modelo e até mesmo em seus objetos de controlador .
Veja também
Referências
links externos
- https://web.archive.org/web/20060925101254/https://cajo.dev.java.net/ A página do projeto cajo
- http://java.net/projects/cajo A página do projeto cajo SDK
- Anúncio oficial do número da porta IANA
- Anúncio de endereço multicast da IANA
- Endereços de multicast da Internet