the cajo project
Welcome to the cajo project   [key-joh]
IANA port 1198, IANA Multicast address 224.0.23.162

The cajo project is a small, 100% Free library, enabling powerful dynamic multi-machine coöperation; both within and between, both free and proprietary Java applications. It is a surprisingly easy to use, yet completely understandable framework, unmatched in performance. It is actively being deployed in Java EE, SE, and ME environments all over the world. It is a uniquely 'drop-in' distributed computing framework: meaning it imposes no structural requirements on your applications, nor source changes. It allows multiple remote JVMs to work together seamlessly, as one. Welcome to our foundation for the World Wide Virtual Machine. (WWVM)

Project goals

  • Establish a free, simple, distributed paradigm; which becomes increasingly valuable with greater adoption.

  • Encourage increased distributed inter-operation; between developers, applications, and component libraries.

Major features

1. The framework allows any number of Java Virtual Machines to work together literally as one. Applications can evolve dynamically: from all objects being in a single Virtual Machine, to all objects being in separate Virtual Machines, to all objects being in separate physical Machines, even at runtime. All without source impact, it works with simple POJOs.

2. Easily create completely safe unsigned rich internet applications (Java RIA) both as Applets and via WebStart, which operate indistinguishably from locally installed applications. Transfer an application's entire user interface to any Java equipped client, automatically. Cleanly separate the components of the model view and the controller portions of an application, between multiple machines.

3. The framework allows both applications, and developers, to collaborate dynamically. This architecture can literally turn the network into one seamless evolving computer; linking everything from mainframes to mobile phones. It can allow applications to be built using optimised components from other distributed applications. Remoting and linking of any object can be done with as little as one additional line of code. Objects can be remoted: Even if their source are not available.

The framework has no dependencies on any 3rd party libraries. It works with all Java Runtime Environments 1.2 and higher. Coöperating Virtual Machines can be behind NAT, firewalls, even HTTP proxies. No special tools or IDE plugins are needed, it can even be used from the humble command prompt. If you are using another distributed computing framework; it is very simple to add support for cajo, and further increase interoperability.
Best of all, this framework is 100% pure Java™: i.e. it uses no bloody <XML>!
Nor " pixie dust" @nnotations: It's not a POJO, if it needs annotations.
The core framework consists of just three, very small, and well documented packages:
  • gnu.cajo (4 classes) provides a high-level functional interface
  • gnu.cajo.invoke (6 classes) defines the architectural core for clients
  • gnu.cajo.utils (8 classes) extends this core for the creation of servers
Quick Find
SDK 123kB
Source 140kB
Binary 63kB
Release07Dec10
Project Membership by Continent
Europe
46%
America
30%
Asia
14%
Australia
10%
Members:
220

Handy Links

cajo article in wikipedia

cajo java.net interview

cajo applet communication

cajo JARS rated

Getting started

The recommended quick start is to visit the SDK page, its simple architecture provides everything you need to start. It will get you up to speed very quickly, and ready to start experimenting. Then, when you are ready to dig deeper, to understand how it all works; have a look at the short overview page, and try some short experiments: For those who want to completely understand the implementation of the framework:
  • The tutorial page is the best place to start
  • Next review the invoke package, it is surprisingly small
  • Then look into the utils package
  • A theory page has also been provided
The discussion fora are an interesting and valuable resource. The Documents & files section holds optional extension classes, and serves as a public developement area. There is also a wiki, where members can offer examples, clarify details, or supplementally create any additional project documentation.

Note: links to all this information, and much more, can be found on the left sidebar.

Attention Java EE Developers: Once you have familiarised yourself with the project, come see the adoption framework we have created, just for you.

Community mission

We hope you find it surprisingly fast and easy to come up to speed. We also hope you find the new possibilities very exciting. This framework is both clear and focused. We are not interested in senselessly making it larger. Rather, the primary goal is promoting and assisting its adoption into new, and existing applications. Of course, comments, suggestions, and improvements are always welcomed, from everyone! However, the interesting challenge is: all proposed changes must be both backward and forward compatible, in order to maintain interoperability with currently running applications. E.g. consider the public telephone network: A 1920's-era rotary phone can call the newest satellite phone, on the other side of the planet, and vice versa.

cajo documentation is GFDL
© 1999-2010 John Catherino. Some rights reserved.

the cajo project