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.