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 significant 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 occampi) and increased safety. Major extensions include alting barriers (classes supporting 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 rendezvous on 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]  Brian Vinter,et al.  Cluster Computing and JCSP Networking , 2002 .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[21]  Fiona A. C. Polack,et al.  Communicating complex systems , 2006 .

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

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

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

[25]  Carl G. Ritson,et al.  A process-oriented architecture for complex system modelling , 2010, Concurr. Comput. Pract. Exp..