A scalable Internet services architecture.
This page is Matt Welsh's Ninja
project webspace. This page contains information on various aspects of the
Ninja project that I'm working on, which is by no means the whole project.
For the rest you need to see the overall Ninja project pages.
|Nonblocking I/O for Java.||
Lately I have been working on the performance-engineering aspects of
building highly concurrent systems in Java. I have released a small
library, NBIO, which provides nonblocking socket I/O for Java,
as well as a select()-like mechanism. This is intended to
support scalable Internet services in Java without the use of many
threads. Here is the NBIO web page.
You can also read a paper on some of our preliminary work on defining a new concurrent systems design framework.
|Jaguar.||Jaguar is a system which enables direct Java access to underlying machine resources through an extensible compiler. Find out more about it right here.|
NinjaRMI is a free ground-up implementation of Java
Remote Method Invocation (RMI) 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.
Download NinjaRMI and get documentation from
the NinjaRMI page.
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.
|Keiretsu.||Keiretsu is a demonstration of the Ninja architecture, an instant-messaging service which provides access from a number of client devices (web page applet, Palm Pilot application, or e-mail gateway to hand-held pagers). More information is available here.|
|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, we have designed MultiSpace. The idea is that a MultiSpace is a collection of iSpaces working together to provide scalability and fault-tolerance. For more information on MultiSpace, see our USENIX paper.
|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.|
|Pilot PPP Information.||Here's a page on connecting the Palm Pilot to the Internet using Linux, PPP, and IP Masquerading.|
|Pilot IR Information.||Here's a page on using the Palm Pilot III IR to HotSync to your ThinkPad.|
|Java Benchmarking.||Here's a page on Java Benchmarks which might clear up some of the performance issues with the Java development environment.|