SugarCubes are a set of Java classes for implementing
software systems such as:
event based systems, especially those where events are
instantly broadcast throughout system. Communicating in this
framework is like in radio transmissions, where emitters send information
that is instantaneously received by all receivers. This communication paradigm
gives a very modular way of system structuring. For example, adding
new receivers to a system is totally transparent for the existing
components (which is not the case with other communication mechanisms
like message passing or ``rendez-vous'').
parallel systems, in particular thread-less ones. Here,
parallelism is a logical programming construct to implement activities
which are supposed to proceed concurrently and not one after the
other. Such parallel activities need not to be executed by distinct
threads, but instead may be automatically ``interleaved'' to get the
desired result. This avoids well-known problems related to threads
(thread-unsafe classes).
reactive systems, which continuously react to activations.
A natural way of programming these systems is by combining reactive
instructions whose semantics are defined by reference to
activation/reaction couples, also named instants.
The end of the reaction provoked by an activation gives a natural way
for determining stable states, where an instruction or a system is
only waiting for the next activation to resume execution. The
existence of stable states is of major importance for
agent migration over the network.
SugarCubes basically introduce the notion of a global
logical clock, and system runs are decomposed into instants
shared by all parallel components.
This is the reactive paradigm of which the
description can be found at
http://www.inria.fr/meije/rc.
Presently, two main applications are implemented using SugarCubes:
rsi-java which is the implementation of
reactive scripts on top
of Java. Reactive scripts will give a very flexible and powerful means to
program over Internet.