JCSP is under development at the University of Kent, UK, under the leadership of Peter Welch. A parallel effort called JavePP is underway at the University of Twente under the leadership of Andy Bakkers. The development of a library of classes which provide a CSP style of message passing provides the tools needed to do more reliable concurrent programming in Java and to be able to teach concurrent and parallel programming in Java effectively. CSP found its first major implementation in Occam 2, the language developed for parallel computing in conjunction with the transputer, a processor developed in the mid-1980s for embedded and parallel computing. Channels are intermediate objects between threads that will free the programmer from synchronization, scheduling and data transfer constructs.
Channels are easy to use and one can easily reason about the program.
These constructs can be used to avoid deadlock and free the programmer from low-level synchronization and scheduling constructs, such as monitors and semaphores. Link drivers for connections over the internet have been developed, so that channels can be used to communicate between processes on different machines. Information and the free libraries for the two versions of Java with CSP can be found at the following URLs. Over the coming months we expect these two teams to merge their efforts into one common platform. The development of Java with CSP does not, however, solve the problem of explicitly assigning different threads to different processors for true parallel computing.