Проект Cajo - это фреймворк, который позволяет использовать несколько Java приложения, которые распределены по нескольким машинам для прозрачной и динамической совместной работы. Эта структура полезна как для открытых / бесплатных, так и для проприетарных приложений, которым требуются возможности распределенных вычислений. Его можно использовать практически на любой платформе, оснащенной Java (JRE / JME 1.2 или выше) (мобильные телефоны, мэйнфреймы, серверы, встроенные устройства и т. Д.) Это «подключаемая» структура, поскольку она не предъявляет никаких структурных требований или изменений исходного кода и представляет собой 100% чистую Java без каких-либо XML-код. Он также не зависит от других фреймворков и может работать за NAT, межсетевыми экранами, даже HTTP прокси.
Проект Cajo был выпущен с использованием номера порта IANA 1198 и адреса многоадресной рассылки UDP 224.0.23.162.
Исходный код предоставляется бесплатно по LGPL, а документация бесплатна по GFDL.
Используя проект Cajo, обычные немодифицированные объекты Java можно удалить с помощью одной строки кода:
Затем они могут использоваться удаленными машинами либо статически, либо динамически.
Использование статического удаленного объекта обычно выполняется при наличии одного или нескольких интерфейсов к объекту, определяющих, как клиент может его использовать, известно в Время компиляции. Например:
Удаленный объект реализует этот интерфейс и, возможно, другие, а затем удаляет объект, как показано ранее.
Использование статического удаленного объекта обеспечивается через TransparentItemProxy
. Пользователь удаленного объекта может создать ссылку на этот объект, который фактически реализует общий интерфейс, следующим образом:
Теперь удаленный компьютер может вызывать методы удаленного объекта с точным синтаксисом и семантикой Java, как если бы он был локальным.
Использование динамического удаленного объекта обычно выполняется, когда интерфейс для объекта будет определен во время выполнения. Это часто имеет место при использовании удаленных объектов Cajo в сценарии . Машина динамически использует ссылку на удаленный объект следующим образом:
Object object = Remote.getItem ("// someHost: 1198 / someName");
String someMethod = "someMethod";
Object someArgs = new Object [...] {someArgs,...};
Этот фрагмент кода вызывает метод удаленного объекта, предоставляя аргументы (если есть) и возвращая результат. (если есть)
Фреймворк cajo может позволить машине удалить ссылку на объект с помощью UDP /IP Multicast. Этот метод позволяет машинам, заинтересованным в использовании удаленных ссылок, просто слушать объявления. Это обеспечивает механизм связывания «один ко многим», при котором пользователям удаленного объекта не нужно знать адрес TCP / IP хост-машины.
Проект Cajo также используется для удаленных графических пользовательских интерфейсов. Это позволяет приложению запускать свое представление на отдельных машинах от его модели и даже от его объектов контроллера.