Many programming paradigms, abstractions, design -, and architectural patterns are built on the idiom of application events. However, programming support for event-based applications is still rather specific and rudimentary. 

EventJava is an extension of Java with advanced support for event-based distributed programming. EventJava:

  • promotes fully asynchronous interaction seamlessly integrated with traditional synchronous method invocations. 
  • inherently unifies support for unicasting as well as multicasting of events.  
  • provides increased expressiveness by supporting reactions to event collections and especially correlation predicates guarding those reactions. 
  • Last but not least, EventJava is generic in that it includes a framework for customization of event semantics, to adapt event propagation and dispatching to various application scenarios. This is supported mainly by integrating a notion of event context. 

TechReports:

Patrick Eugster and K. R. Jayaram, A Calculus of Content-aware Channels, July 2008