ninja logo The Ninja Project

Downloads and Documentation

This page contains pointers and documentation for the Ninja project codebase, utilities, and useful tips.


NEW: Ninja 1.5 public release

The Ninja 1.5 public release is now available, in source form. Go here to download it.

This is an update to our earlier Ninja 1.0 release. All new users of the Ninja software should first read Getting Started with Ninja, which explains everything you need to get up and running with our code.


JavaDoc-generated Documentation

Much of the code checked into the Ninja private CVS tree has been annotated for use with javadoc, meaning that documentation on the classes and interfaces can be generated automatically. Click here to access the javadoc documentation.


NinjaRMI

NinjaRMI is a free ground-up reimplementation of Sun's Java Remote Method Invocation (RMI) spec for use by the Ninja project. This was done for several reasons: We wanted to be free to add new RMI features without relying on Sun's code, and having our own implementation, with source, is a great way to build up new systems.

NinjaRMI is available from this page.
The latest version is NinjaRMI v1.2, released on 24 November 1998.

Copyright license: NinjaRMI is covered under a University of California approved license, which makes the software free for distribution and modification as long as the original copyright notice remains entact. Read the license terms here.

If you are on the Ninja project, the code is checked into the CVS repository as classpath/ninja/rmi.


iSpace and MultiSpace

iSpace is the prototype execution environment for Ninja services running on a single-node JVM. iSpace basically provides a "service server" to which individual services can be uploaded, enabled/disabled, named, and accessed remotely. In addition, iSpace enforces protection boundaries between services (by, for example, limiting system resources to externally-uploaded services, and restricting services to their own ThreadGroup).

For services which run on a collection of nodes, Steve Gribble and I are putting together MultiSpace which will do the trick. (The idea is that a MultiSpace is a collection of iSpaces working together to provide scalability and fault-tolerance). Since this represents yet another Ninja project paradigm shift we want to make it easy for people to transition: currently, you should write your services using iSpace and we'll try our best to ease the impact of MultiSpace.


Ninja Paths

The Ninja Paths package is an extension to the Ninja 1.5 distribution which allows services to be automatically discovered and composed into a "path". A path provides a stream-like interface which routes data between services, which may convert or process that data.

The Ninja Paths Package (and requisite documentation) is available from this page.


Ninja Project Glossary

Here is a first cut at a Glossary of terminology to be used by the Ninja project, really an attempt at nailing down concepts.


Hints, Tips, and Techniques.


Back to the Ninja Project Page