Information Technology Reference
In-Depth Information
JavaSpaces is a specification for a Jini service that provides a coordination
framework in the form of a tuple space. The concept of a tuple space was first
introduced in the early 1980s by computer scientists David Gelernter and Nick
Carriero, within the context of the programming language Linda [11] [12]. This
is referred to as a coordination framework since it allows a loose collection of
applications, linked over a common network, to communicate asynchronously.
This communication is so loosely coupled that the applications do not need
to be running, or even exist, at the same time. To take the possibilities to an
extreme, application A can send a message that is ultimately to be read by
application B (and possibly others) which has not yet been written and will
run on a machine that has not yet been built. When application B receives the
message, application A, and the machine it ran on, may no longer exist.
There are many ways to describe the purpose and use of a JavaSpace. The
concept of a coordination framework is a good high-level description. At a lower
level, a JavaSpace can be thought of simply as a shared memory space, accessible
from any machine on the network and addressed using an associative lookup
rather than by memory address. Objects stored in a JavaSpace are instances of
classes in Java that have a few special characteristics needed to support storage
and retrieval from the JavaSpace. So the associative lookup uses the Java class
type system to identify objects to be written or read from the JavaSpace. This
is a very robust addressing scheme, compared to using raw memory addressing
or simple string matching, since it ensures that you receive an object of the
correct type when you read from the space. These objects can store any type
of information that might be needed by the applications. It is also possible to
maintain structures of objects in a JavaSpace, such as a linked list of objects,
a tree of objects, or an array of objects. Objects can also simply be markers,
holding absolutely no data, but giving information simply by their existence or
non-existence in the JavaSpace.
In the VL, a JavaSpace is maintained to allow for the coordination of exper-
iments, visualizations, and interacting collaborators accessing the VL through
their workstation or other supported interface device. Typical information stored
in the VL JavaSpace includes experiment parameters, current status of an ex-
periment such at the latest time-step of a computer simulation, or latest result
from a laboratory experiment.
Of course, applications need not be written in Java to participate in the VL.
In fact, it is expected that most computer simulations will likely be written in
Fortran or C/C++, and most participating laboratory devices will likely not
have direct network access. In Jini, applications and devices that are not capa-
ble of participating directly, either because of insucient resources to run a Java
virtual machine, or because they are closed systems, can still participate through
the use of a surrogate [13]. These surrogates allow the application or device to
participate by performing as a communications gateway to the Jini/JavaSpace
network and also performing any computation needed in the process. The com-
munication between the surrogate and the Jini/JavaSpace network uses the stan-
dard Jini/JavaSpaces protocols. The communication between the surrogate and
Search WWH ::




Custom Search