Jigsaw
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:
-
Getting labels with a document transported via a protocol that uses RFC-822
headers (such as HTTP),
-
Getting labels through a label bureau
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 $