Integrating and Extending JCSP

This paper presents the extended and re-integrated JCSP library of CSP packages for Java. It integrates the differing advances made by Quickstone's JCSP Network Edition and the "core" library maintained at Kent. A more secure API for connecting networks and manipulating channels is provided, requiring signifi- cant internal re-structuring. This mirrors developments in the occam-pi language for mandated direction specifiers on channel-ends. For JCSP, promoting the concept of channel-ends to first-class entities has both semantic benefit (the same as for occam- pi) and increased safety. Major extensions include alting barriers (classes support- ing external choice over multiple multi-way synchronisations), channel output guards (straightforward once we have the alting barriers), channel poisoning (for the safe and simple termination of networks or sub-networks) and extended rendezvouson channel communications (that simplify the capture of several useful synchronisation design patterns). Almost all CSP systems can now be directly captured with the new JCSP. The new library is available under the LGPL open source license.

[1]  Bernhard Herbert Carl Sputh,et al.  Software defined process networks , 2006 .

[2]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[3]  James Pascoe,et al.  Cluster Computing and JCSP Networking , 2002 .

[4]  Peter H. Welch,et al.  Prioritised Dynamic Communicating Processes: Part II , 2002 .

[5]  Fred R. M. Barnes,et al.  Compiling CSP , 2006, CPA.

[6]  Peter H. Welch Java threads in the light of occam/CSP , 1997 .

[7]  Johannes F. Broenink,et al.  Communicating threads for Java , 1999 .

[8]  Peter H. Welch A Fast Resolution of Choice between Multiway Synchronisations (Invited Talk) , 2006, CPA.

[9]  Jeremy M. R. Martin,et al.  Formal Analysis of Concurrent Java Systems , 2000 .

[10]  Peter H. Welch,et al.  Mobile Barriers for occam-pi: Semantics, Implementation and Application , 2005, CPA.

[11]  Peter H. Welch,et al.  Graceful Termination -- Graceful Resetting , 1989 .

[12]  Sarah Clayton,et al.  CSP for .NET Based on JCSP , 2006, CPA.

[13]  Fiona A. C. Polack,et al.  Communicating complex systems , 2006, 11th IEEE International Conference on Engineering of Complex Computer Systems (ICECCS'06).

[14]  Robin Milner,et al.  Communicating and mobile systems - the Pi-calculus , 1999 .

[15]  Peter H. Welch,et al.  Process Oriented Design for Java: Concurrency for All , 2002, International Conference on Computational Science.

[16]  Peter H. Welch,et al.  CSP Networking for Java (JCSP.net) , 2002, International Conference on Computational Science.

[17]  Neil C. C. Brown,et al.  C++CSP Networked , 2004 .

[18]  Adam T. Sampson,et al.  Barrier Synchronisation for occam-pi , 2005, PDPTA.

[19]  Brian Vinter,et al.  Cluster Computing and JCSP Networking , 2002 .

[20]  Peter H. Welch,et al.  An Introduction to the Kent C++CSP Library , 2003 .

[21]  Neil Brown,et al.  Rain: A New Concurrent Process-Oriented Programming Language , 2006, CPA.

[22]  Neil Brown,et al.  C++CSP2: A Many-to-Many Threading Model for Multicore Architectures , 2007, CPA.

[23]  Peter H. Welch,et al.  Communicating Mobile Processes : Introducing occam-pi , 2005 .

[24]  Alex A. Lehmberg,et al.  An Introduction to CSP.NET , 2006, CPA.

[25]  Peter H. Welch,et al.  A process‐oriented architecture for complex system modelling , 2007, Concurr. Comput. Pract. Exp..

[26]  Alistair A. McEwan Concurrent program development , 2006 .

[27]  Johannes F. Broenink,et al.  Redesign of the C++ Communicating Threads Library for Embedded Control Systems , 2004 .

[28]  Bernhard H. C. Sputh,et al.  JCSP-Poison: Safe Termination of CSP Process Networks , 2005, CPA.