jcc: Integrating Timed Default Concurrent Constraint Programming into Java

Vijay Saraswat, Radha Jagadeesan, Vineet Gupta

Abstract

This paper describes jcc, an integration of the timed default concurrent constraint programming framework (tdcc) into Java. jcc is intended for use in education and research, for the programming of embedded reactive systems, for parallel/distributed simulation and modelling (particularly for space, robotics and systems biology applications), and to support the development of constraint-based program analysis and type-checking tools.

In fully implementing the tdcc framework, jcc supports the notion of (typed) logical variables (called "promises"), allows the programmer to add his/her own constraint system (an implementation of the Herbrand constraint system is provided), implements (instantaneous) defaults via backtracking, implements a complete renewal of the constraint-store at each time instant, and implements bounded-time execution of the tcc control constructs.

jcc implements the notion of reactive vats as single threads of execution within the JVM; a vat may be thought of as encapsulating a single synchronous, reactive tcc computation. A computation typically consists of a dynamically changing collection of interacting vats (some of which could potentially be located at different JVMs), with dynamically changing connectivity.

jcc programs fully inter-operate with Java programs, and compile into standard JVM byte-code. jcc programs fully respect the Java type system; logical variables are typed. jcc is compatible with the Generic Java extensions, thereby allowing the use of parameterized types. Indeed, jcc may be viewed as an extension of Java which replaces Java's notoriously difficult imperative thread-based concurrency with the notion of reactive vats interacting via constraints on logical variables.

jcc source code is available under the Lesser GNU licence through SourceForge.

© Springer Verlag, 2003. Published in the Lecture Notes in Computer Science Series.

Postscript file. Pdf file.