Kicking off a series of interviews with developers from some of java.net's most popular and prominent projects, Marla Parker interviews John Catherino about the Cajo project.
How Cajo makes many JVMs look like just one
Kicking off a series of interviews with developers from some of java.net's most popular and prominent projects, Marla Parker interviews John Catherino about the Cajo project. This project distributes objects between multiple JVMs, allowing you to scale large applications, or transparently remote a GUI.
As the community manager of java.net, I am always trying to get
better data about what projects on java.net are really active. One
of my interns recently implemented a great report that shows the
top 50 most active projects on java.net for a given month. "Most
active" means with the largest number of actions (writes of some
sort) that we can detect to the code or mailing lists within each
project. (We also included forums, but that measure is broken at the
I notified the owners of the top 50 projects for February, and
one of them, John Catherino, project owner of the
"https://cajo.dev.java.net/">Cajo project, asked why I don't
make the data public. I said, "Yes, obviously we should and we are
working on how to do that, but also I want to interview the owners
of some of these most active projects," and would he like to be my
first victim? He said yes.
A quick look at Cajo proves not to be so very quick because it
is so interesting: a small, free library that simplifies the use of
Remote Method Invocations; is easy to use; is in use all over the world;
and is a "uniquely 'drop-in' distributed computing framework." And how
could I not click on a link to a blog entry titled "World Wide
Q: How would you describe your project, in a
A: The Cajo project allows people to distribute their
applications across multiple Java Virtual Machines, without source
impact. This makes it exceptionally valuable to scale large,
existing applications. It also allows graphical user interfaces to
be transparently remoted, automatically, through both WebStart and
Q: Who is using Cajo and what are they doing with it?
A: As the Cajo project is quite fundamental in its purpose--i.e.
distributing objects between Java Virtual Machines transparently--it is being used by groups of all sizes; university students,
companies small and large, and even national governments. Its primary
applications are scaling applications, distributing user
interfaces, and remote control.
Q: Can you give me an example?
"http://www.innaworks.com/mBooster.html">mBooster . From their
mBooster is the world-leading optimization suite for J2ME
applications for professional J2ME game and application developers.
"http://www.innaworks.com/Size%20matters.html">reduces the size
and increases the performance of your midlet JAR files.
And you can find the acknowledgment of Cajo as one of the
building blocks on their
license page .
Q: What does it mean to have an official TCP and UDP port
assignment, and an official multicast address, assigned by the
Internet Assigned Numbers
A: It means that TCP and UDP port 1198, and UDP address
126.96.36.199, are registered to the Cajo project for worldwide
operation, on the internet. To me it is an astonishing recognition
of our project's maturity, usefulness, and popularity. We are now
part of the internet infrastructure.
Working on Cajo
Q: What made you decide to start this project?
A: I have been developing network distributed applications for
many years; in that time I have seen too many people struggle, and
decry all of the complexity. Worse yet, some would just give up on
their great ideas. For a long time I tried to individually
people , but there was a limit to how much I could accomplish
this way. I felt the Java Runtime Environment offered such
tremendous capability, I knew there had to be a way to make Java
object distribution over the network
transparent. This would be a revolutionary simplification. Then in
late 1998, when Sun JSE 1.2 introduced reflection, and powerful
enhancements to RMI, I knew I had the foundation I needed. The Cajo
project was ready to be born.
Q: Is working on Cajo part of your day job?
A: Not exactly. I currently work in distributed grid-based
software development, yet building this project has allowed me to
bring a lot of insight to the table. Perhaps one day, the company
may base a project on Cajo; if a customer had a requirement for an
open source implementation, for example.
Q: A popular open source project is a lot of work; what keeps
A: When development gets very busy, it is usually because one or
more individuals, project development teams, or companies are newly
and actively adopting Cajo. I get such tremendous feedback and
satisfaction from helping people achieve (and quite often, wildly
exceed) their goals. That makes it worth all the work to me. The
most common response: "I can't believe it's this easy!"
Q: What would you like to see added to the java.net project
A: More project tracking statistics, visible to everyone: page
hits, downloads, both community and site ranking. It is this type
of information that enables surprisingly emergent development to
Q: Your project home page has some handy links and stats on
the right side, like 168 members, and the percentage breakdown by
continent. How many of them are developers who contribute to
A: I guess it depends on what is considered contribution. A
little over 10 percent suggest actual code improvements. However, well over
half are significantly improving the site, through questions and
comments. Personally, I consider every post to any Cajo project
forum a contribution. There are even
"https://cajo.dev.java.net/acknowlege.html">some who have made
very significant contribution, and aren't even members.
Q: Why did you create a cajo.Contributor role?
A: Currently any java.net role other than Observer, is granted
repository commit privileges. This implies a significant amount of
responsibility, given the large user base of the Cajo project. The
cajo.Contributor role allows members to post to the "Documents
& files" section of the site. I grant this role to anyone with
a plan to extend or add to the project. I find it so useful, I
would recommend it as a an official java.net role.
Q: How do you manage community member contributions?
A: I use two approaches. In the more common case: developers
make suggestions for new features, and we discuss them in the
project forum. Then I go create a proposed implementation for
ratification. Once the version is agreed upon, it is incorporated
into the codebase. In the less common case: members want to make a
significant code contribution to the project, in an area outside of
my expertise. Then they are welcomed to create an add-in
release, and are free to develop and document it as they wish on
the project site. The Cajo
for JEE is an example of this second case.
Q: Why did you chose the GNU LGPL?
A: For two fundamental reasons. First, I wanted the ability for
the Cajo library to be used between both open and proprietary
applications. To me this requirement seemed to allow all but
the GNU GPL. Second I wanted to prohibit distribution of
proprietary versions this library. In light of the first
requirement: to me this requirement seemed to exclude all
but the GNU LGPL. While the selection has caused several
conversations with both developers and companies, so far I have
never had anyone who felt unable to live up to the terms.
Challenges and Surprises
Q: What has been your most difficult challenge?
A: Documentation. Most developers, and I am no exception, do not
like to work on it. However, an open source project without
detailed documentation will most likely be ignored. The Cajo
project source code is nearly half Javadoc! Then I had to generate
all of the web pages. Most challenging is creating good examples.
This is something on which I continue to work. Sometimes I even get
Q: What has been your biggest surprise?
A: To be honest, at the start I worried people would flame what
I thought was the best code of my career. Even worse, I worried
nobody would care. On the whole, open source software developers
are a really very accepting and enthusiastic community. That was
very happily surprising. Yet I'd have to say, recently discovering
that some people had created Wikipedia articles about the Cajo
project, in both
German , for the
first time, I went from pleasantly surprised to completely
overwhelmed with appreciation.
Editor's note: We'd like to thank John for discussing the
Cajo project in this interview. You can look for more interviews
with prominent java.net project leaders in the coming weeks and
- Cajo project
- Some sites using Cajo:
Out of hibernation
Technologies Project 28
width="1" height="1" border="0" alt=" " />