EQUIP2 Overview

Chris Greenhalgh, 2007-06-12


For more documentation see index.html

1. Introduction

EQUIP2 is a completely new version of EQUIP which focusses on (what I consider to be) the key essence of EQUIP: providing an integrated state/event model for developing loosely coupled (usually distributed) applications.

At the heart of EQUIP2 is the notion of a dataspace, which is a logical container for data. It can be thought of as a database or tuplespace. However it holds programming language objects rather than tables and rows (relational database) or tuples (tuplespace). It also integrates a flexible change notification system which is comparable to a publish-subscribe event/data distrbution system.

2. The master plan

"It's not a technology, it's a way of life" :-)

The idea is that the application(s) on each device (e.g. phone, pda, server) are constructed around one or more dataspaces on that device. At least one of those dataspaces will be persistent (for configuration), but in some cases most or all of the dataspaces may be persistent.

The dataspace(s) can be thought of as a partially standardised model in the sense of the Model-View-Controller pattern. Like other data- and tuple-spaces they also allow relatively loosely coupled coordination between the different elements of the application, in particular:

Potential benefits of this approach include:

It should be relatively straight-forward to have a persistent dataspace implementation based on the Hibernate Object/Relational dataspace system; this would allow integration with other applications and interface that are based on a common relational database (e.g. simple PHP site, other data logging application(s)).

The session API is intended to support transactions (in the future) and to reflect a "reactive" style of programming which should fit well with enterprise and web-style server applications.

Keeping EQUIP2 relatively focussed, it will hopefully be easier to port to and support in other languages.

It is also intended to have wire-protocol specifications/standard in some places (e.g. remote access to dataspaces for management and configuration, and for server-side integration) to allow cross-language integration/interoperation.

3. Comparison with EQUIP v.1

I'll leave the details for another day, but:

WARNING: Out of the box EQUIP2 currently has simpler distribution that EQUIP version 1 (aka EQUIP4J); if EQUIP 1's distribution/replication model is just right to you then you may want to start (or stay) there (unless you also need J2ME and/or C++ support).

4. Changes