W3CJigsaw

W3C Activity: Jigsaw

Introduction

Jigsaw is an object-oriented web server, written in Sun's Java language: each exported resource is mapped to a Java object. The HTTP protocol is used as an object-oriented protocol (following its original design) to trigger method calls on these resources. Each resource can be configured independantly of the others, and maintains its own state through some persistancy mechanism provided by the Jigsaw runtime.

The main purpose of this project for the consortium is to acquire the implementation experience needed for designing the next generation of the WWW protocols. Designing new protocols require a tremendous experience. Jigsaw has been designed with modularity and flexibility as one of its main goal, so that whole parts of it can be replaced by better, or different implementations.

Requirements

A full featured server

Jigsaw already comes with most of the currently supported server-side features (see the Jigsaw feature list). The consortium will use Jigsaw as a way of implementing features that are felt important, but which are not yet currently deployed (such as content negotiation).

A reference implementation of HTTP-NG

As stated above, one of the first goal of Jigsaw is to be used as an experimental tool for the design of new protocols. The current Jigsaw release comes with a Java implementation of the MUX protocol, some experimental work has been sone to plug it into Jigsaw itself.

Implements the PICS specification

The PICS specification includes several means to get document labels. Of interest here are:

Jigsaw provides extensions to support these two ways of retreiving document labels.

Caching proxy

One of the great strength of the CERN server was its ability to be used as a cahing proxy server. Caching in the WWW is an active research area, and Jigsaw will take over as the sample implementation of a caching proxy.

Products

Jigsaw has been released at the beginning of May to consoritum members. It will be public by the 1st of June, 1996. The current release includes:

The full Java implementation
The full documented sources are available, under the MIT copyright. The distribution file also come with all the classes pre-compiled, so that you can use it straight out of the box.
Extension API
Jigsaw can be extended in a number of ways. Jigsaw API is fully documented, and also comes with a tutorial on how to write new resource classes.
User's manual
A user's manual is also provided. It is targeted as web masters willing to install Jigsaw as their regular server. This section of the documentation also comes with a tutorial on Jigsaw configuration.
Introductory documentation
Finally, on-line documents are available on Jigsaw design, and why it is the way it is.

Next move

The next Jigsaw milestone is the December  96 release. We hope to stabilize the current design and APIs, and to mature it through extensive testing and source code distribution. Some of the features we would like to see in this next release include:

HTTP/1.1
Jigsaw will be fully compliant with the HTTP/1.1 specification, and will come with a caching proxy module.
Improved performance
As testing goes on, we will try to improve Jigsaw performace. Also, the much expected release of Java JIT compilers should significantly enhance Jigsaw's performance.
Better User Interface
Jigsaw configuration is entirely accessible through HTML forms, and can be done without any server restart. We will focus on providing a simpler user interface, probably using a combination of applets and RMI.

We also have longer term goals, amongst which:

Mobile code experimentations
As Jigsaw is written in Java, it should be able to receive code from the outside for local execution. The W3C already follows this research area, Jigsaw should provide us the opportunity to actually implement some of the ideas floating around.
Code replication
Internally Jigsaw maintains each exported resource as a self-contained object. These objects are used as repositories for their configuration, and their behavior is written in Java. This should allow us to experiment with the idea of code replication. An increasing number of documents on the web are the result of some computation on their origin server. In Jigsaw, these computation are encapsulated into these resource objects that can be moved (and copied) around (along with their state).
Applets bring computations all the way to clients, CGI keeps computation on the origin server, what we would like to expriment with is someone in between of these two boundaries, taking advantage of replication protocols to actually disseminate agents around the world.


Anselm Baird-Smith
$Id: Activity.html,v 1.6 1996/05/29 22:44:40 abaird Exp $