The Cajo Project is a framework that enables multiple Javaapplications that are spread across multiple machines to work together as one transparently and dynamically. This framework is useful for both open/free and proprietary applications that need distributed computing capabilities. It is capable of being used on almost any Java-equipped platform It is a “drop-in” framework, because it does not impose any structural requirements or source code changes and is 100% pure Java with no XML code. It also is not dependent on any other frameworks and can work behind NAT, firewalls, even HTTPproxies.
The source code is free under the LGPL, and the documentation is free under the GFDL.
Usage
Overview
Using the Cajo Project, ordinary unmodified Java objects, can be remote using a single line of code: These can then be used by remote machines either statically, or dynamically.
Static remote object usage
Static remote object usage is typically performed when there are one or more interfaces to the object, defining how the client may use it, known at Compile time. For example: The remote object implements this interface, and possibly others, then remotes the object as shown previously. Static remote object usage is provided through a TransparentItemProxy. The user of a remote object can create a reference to this object, which actually implements the shared interface, as follows: A remote machine may now invoke methods on the remote object, with the exact Java syntax and semantics, as if it were local.
Dynamic remote object usage is typically performed when the interface to an object will be determinedat runtime. This is often the case when using Cajo remote objects in a scripting. A machine dynamically uses a remote object reference as follows: Object object = Remote.getItem; String someMethod = "someMethod"; Object someArgs = new Object ; This snippet invokes a method on a remote object, providing the arguments, ' and returning the result. ' The cajo framework can allow a machine to remote its object reference using UDP/IP Multicast. This technique lets machines interested to use remote references, simply listen for the announcements. This provides a One-to-manylinkage mechanism, where the users of the remote object do not need to know the TCP/IP address of the host machine.
The Cajo Project is also used to remote graphical user interfaces. This allows an application to run its view on separate machines from its model, and even its controller objects.