jBACI Concurrency Simulator

jBACI is an integrated development environment for learning concurrent programming by simulating concurrency. It was built from the compilers from BACI (Ben-Ari Concurrency Interpreter), developed by Bill Bynum and Tracy Camp, and from the interpreter BACI Debugger, developed by David Strite.

The BACI compilers translate concurrent programs in (subsets of) Pascal and C into an intermediate language called PCode. They support synchronization primitives like semaphores and monitors. BACI is written in C, so separate versions need to be built for each platform. The BACI Debugger is an interpreter for PCode written in Java so that it is portable. The debugger allows breakpoints and single-stepping by source statement or PCode instruction, and the GUI includes a comprehensive display of source code, PCode, variables, stack and history of executed PCode instructions.

New features in jBACI

  • jBACI is integrated development environment including an editor, the invocation of the compilers and the interpreter.
  • Graphics primitives have been added to the language.
  • Linda tuple space and synchronization primitives are implemented.
  • There is full support for the using keyboard with mnemonics and accelerators.
  • The process table has been expanded to show the status of each process.
  • Extensive onfigurability: strings, keys and fonts are in a compile-time configuration file to facilitate localization of the GUI.
  • The history of executed instructions can be by source statement as well as by PCode instruction. The history entries can also be written to a log file for off-line analysis.
  • The read instruction in processes (other than the main process) is non-blocking for game-like programming.


Download from GitHub: https://github.com/motib/jbaci.