Введение

JCSP — это реализация концепции взаимодействующих последовательных процессов (CSP) для языка программирования Java. Хотя CSP является математической системой, JCSP не требует глубоких математических знаний, позволяя программистам создавать надежное программное обеспечение, следуя простым правилам.

Обзор

Существует четыре способа, которыми многопоточные программы могут давать невоспроизводимые ошибки. Таким образом, это демонстрирует надежность JCSP, основанную на его математических принципах.

Сетевой слой

Поскольку сокеты протокола управления передачей (TCP) могут быть сконструированы для работы как блокирующие каналы в понимании CSP, становится возможным распределять процессы JCSP между несколькими компьютерами. Это достигается с помощью расширения JCSP Net, которое предоставляет каналы с семантикой CSP, используя TCP. Благодаря композиционности CSP, с точки зрения поведения не имеет значения, выполняются ли процессы локально или распределённо. Разница заключается только в относительной производительности. Таким образом, например, можно разработать приложение на одном сервере, а затем сравнить многопроцессорную версию этого же приложения с целью оптимизации его производительности.

Издание роботов

JCSP re – это значительно упрощенная версия пакетов JCSP, разработанных примерно в 2008 году в Эдинбургском университете Нейпира профессорами Джоном Керриджем, Алексом Панайотопулосом и Патриком Лисмором. Исследования в области применения JCSP в робототехнических и мобильных средах продолжаются в Эдинбургском университете Нейпира. Рабочая реализация «JCSP re» позволяет разрабатывать один и тот же параллельный программный код для роботов. В частности, в рамках этого исследования использовались роботы Lego Mindstorms NXT, поскольку они поддерживают популярную виртуальную машину LeJOS NXJ, которая выполняет исходный код на Java.

Использование JCSP из других языков

JCSP по сути является чистым Java API (хотя существует исследовательская альтернатива, использующая расширение C CSP для JVM). В силу этого, он в принципе прекрасно подходит для организации параллельного выполнения в приложениях Scala и Groovy, а также в Java. Таким образом, JCSP может служить альтернативой модели акторов Scala. JCSP использует синхронизированную коммуникацию, а акторы – буферизованную (асинхронную), и каждый из этих подходов имеет свои преимущества в определенных ситуациях. JCSP позволяет буферизировать свои каналы и, следовательно, легко эмулировать модель акторов; обратное утверждение неверно.