Programming coordinated behavior in java

David Harel, Assaf Marron, Gera Weiss

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

40 Scopus citations


Following the scenario-based approach to programming which centered around live sequence charts (LSCs), we propose a general approach to software development in Java. A program will consist of modules called behavior threads (b-threads ), each of which independently describes a scenario that may cross object boundaries. We identify a protocol and a coordination mechanism that allow such behavioral programming. Essentially, runs of programs are sequences of events that result from three kinds of b-thread actions: requesting that events be considered for triggering, waiting for triggered events, and blocking events requested by other b-threads. The coordination mechanism synchronizes and interlaces b-threads execution yielding composite, integrated system behavior. The protocol idioms and the coordination mechanism of b-threads are implemented as a Java library called BPJ. Throughout the exposition we illustrate benefits of the approach and discuss the merits of behavioral programming as a broad, implementation-independent paradigm.

Original languageEnglish
Title of host publicationECOOP 2010 - Object-Oriented Programming - 24th European Conference, Proceedings
Number of pages25
StatePublished - 3 Aug 2010
Event24th European Conference on Object-Oriented Programming, ECOOP 2010 - Maribor, Slovenia
Duration: 21 Jun 201025 Jun 2010

Publication series

NameLecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
Volume6183 LNCS
ISSN (Print)0302-9743
ISSN (Electronic)1611-3349


Conference24th European Conference on Object-Oriented Programming, ECOOP 2010

ASJC Scopus subject areas

  • Theoretical Computer Science
  • General Computer Science


Dive into the research topics of 'Programming coordinated behavior in java'. Together they form a unique fingerprint.

Cite this