Synchronous Active Objects
Home Page
Introduction
The Laboratory of Teleinformatics has been studying the engineering
of interactive software applications, namely applications that must react
to events produced by the GUIs (graphical user interfaces) and the network,
for many years.
This type of applications is usually made with the help of listeners,
but listeners make it very difficult to understand a program's structure
after it has been completed, and thus to debug and maintain software
applications.
We took thus inspiration from the theories addressing concurrency to develop
a framework and methodologies that could help us better this situation.
We ended up with a concept of synchronous active objects, described in
these pages.
20 lines to describe a synchronous active
object
Two trivial examples
Development Environment and Libraries for Synchronous Active Objects
Introduction to the synchronous active objects
Support and libraries
- Downloading the compiler,
the libraries and the generator (Compiler developped at the LAMP, by Matthias
Zenger).
- Display generator and synchronous GUI
elements : a presentation of our synchronous GUI elements and of a
generator that helps using them (see the javadoc).
- TCP sockets Library of synchronous active
TCP sockets. It is very easy to handle these sockets in an asynchronous manner
(see the javadoc).
- Active RMI stub generator :
generation of stubs under the form of synchronous active objects. The generator
delivers a set of classes that correspond to a runnable prototype. (still under
test).
- Embedded version of Tomcat : There is an
embedded partial version of Tomcat in the standard package that does not
use any XML compilers nor support. We completed that program and packaged
it to provide a simple HTTP access to any application. The accesses offered
by this server can be located in the same program as the modules described
above.
A Generator of Distributed/Interactive Applications
- This generator allows a developer to create
an applications comprising GUIs (Display User Interfaces), RMIs (Remote Method
Invocations), local or remote databases, coordinated with controllers that
are built like standard objects, but have the power of parallel processes.
These controllers can manage all the other components, even while they have
a non-deterministic behavior. They can await several events in parallel
to the select statement. download
Condensed documentation of some important standard Java libraires
- Collections and maps
This is a short synoptic documentation on the collection and map libraries
offered by the Java environment that should allow a developer to determine
quickly which component fits best in a given situation.
- Streams
This page provides an overview of the streams, classifying the stream
classes as sources, sinks and filters within tables, which allows
a quick selection of the classes that realize the service the developer
looks for.
References
The sC++ book (English
version.ps / with
its index ) -- (Version
française)
Synthesis paper:
(IEEE Computer)
C. Petitpierre, Implementing Protocols with Synchronous Objects,
in ed. D. Avresky, Dependable Network Computing, Kluwer, November 1999,
pp. 109-140.
C. Petitpierre, A. Eliens, Active Objects
Provide Robust Event-Driven Applications, SERP'02, Las Vegas, June
2002. Corresponding powerpoint presentation.
C. Petitpierre, Synchronous Active
Objects Introduce CSP's Primitives in Java,
CPA'2002, Reading,
15-18 September 2002, IOS-Press, pp. 109-122.
Corresponding powerpoint and
pdf presentation.
Related links
JCSP
: an introduction of CSP into Java
CTJ
: another introduction of CSP into Java
WoTUG: a forum about CSP and concurrency
February 19, 2003 Claude.Petitpierre@epfl.ch
Java is a trademark
of Sun Microsystems