EventJava: An Extension of Java for Event Correlation

Event correlation has become the cornerstone of many reactive applications, particularly in distributed systems. However, support for programming with complex events is still rather specific and rudimentary. This paper presents EventJava, an extension of Java with generic support for event-based distributed programming. EventJava seamlessly integrates events with methods, and broadcasting with unicasting of events; it supports reactions to combinations of events, and predicates guarding those reactions. EventJava is implemented as a framework to allow for customization of event semantics, matching, and dispatching. We present its implementation, based on a compiler transforming specific primitives to Java, along with a reference implementation of the framework. We discuss ordering properties of EventJava through a formalization of its core as an extension of Featherweight Java. In a performance evaluation, we show that EventJava compares favorably to a highly tuned database-backed event correlation engine as well as to a comparably lightweight concurrency mechanism.

[1]  John H. Reppy,et al.  Specialization of CML message-passing primitives , 2007, POPL '07.

[2]  Vladimiro Sassone,et al.  Jeeg: temporal constraints for the synchronization of concurrent objects , 2005, Concurr. Pract. Exp..

[3]  Gavin M. Bierman,et al.  The Essence of Data Access in Comega , 2005, European Conference on Object-Oriented Programming.

[4]  Todd D. Millstein,et al.  Responders: Language Support for Interactive Applications , 2006, ECOOP.

[5]  Charles L. Forgy,et al.  Rete: A Fast Algorithm for the Many Patterns/Many Objects Match Problem , 1982, Artif. Intell..

[6]  Sharma Chakravarthy,et al.  Composite Events for Active Databases: Semantics, Contexts and Detection , 1994, VLDB.

[7]  Ying Xing,et al.  Distributed operation in the Borealis stream processing engine , 2005, SIGMOD '05.

[8]  Erik Ernst,et al.  ECOOP 2007 - Object-Oriented Programming, 21st European Conference, Berlin, Germany, July 30 - August 3, 2007, Proceedings , 2007, ECOOP.

[9]  Philipp Haller,et al.  Implementing Joins Using Extensible Pattern Matching , 2008, COORDINATION.

[10]  David E. Culler,et al.  The nesC language: A holistic approach to networked embedded systems , 2003, PLDI.

[11]  Jan Vitek,et al.  Streamflex: high-throughput stream programming in java , 2007, OOPSLA.

[12]  Luca Cardelli,et al.  Modern concurrency abstractions for C# , 2002, TOPL.

[13]  Mads Haahr,et al.  Filtering and scalability in the ECO distributed event model , 2000, 2000 Proceedings International Symposium on Software Engineering for Parallel and Distributed Systems.

[14]  Torsten Grust,et al.  Advances in database technology - EDBT 2006 : 10th International Conference on Extending Database Technology, Munich, Germany, March 2006; proceedings , 2006 .

[15]  Farhad Arbab,et al.  Coordination Models and Languages , 1998, Adv. Comput..

[16]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 2001, TOPL.

[17]  S. Chiba,et al.  Remote pointcut: a language construct for distributed AOP , 2004, AOSD '04.

[18]  Gary T. Leavens,et al.  Ptolemy: A Language with Quantified, Typed Events , 2008, ECOOP.

[19]  Oscar M. Nierstrasz,et al.  ECOOP’ 93 — Object-Oriented Programming , 2000, Lecture Notes in Computer Science.

[20]  Johannes Gehrke,et al.  Towards Expressive Publish/Subscribe Systems , 2006, EDBT.

[21]  Dave Thomas,et al.  ECOOP 2006 - Object-Oriented Programming , 2006 .

[22]  Farn Wang Formal Techniques for Networked and Distributed Systems - FORTE 2005, 25th IFIP WG 6.1 International Conference, Taipei, Taiwan, October 2-5, 2005, Proceedings , 2005, FORTE.

[23]  Suresh Jagannathan,et al.  Transparently Reconciling Transactions with Locking for Java Synchronization , 2006, ECOOP.

[24]  Peter R. Pietzuch,et al.  Hermes: a distributed event-based middleware architecture , 2002, Proceedings 22nd International Conference on Distributed Computing Systems Workshops.

[25]  Andrew P. Black,et al.  Encapsulating Plurality , 1993, ECOOP.

[26]  Jean-Pierre Briot,et al.  Actalk: A Testbed for Classifying and Designing Actor Languages in the Smalltalk-80 Environment , 1989, ECOOP.

[27]  Gerard Florin,et al.  A new way to design causally and totally ordered multicast protocols , 1992, OPSR.

[28]  Patrick Th. Eugster,et al.  Type-based publish/subscribe: Concepts and experiences , 2007, TOPL.

[29]  Cédric Fournet,et al.  The reflexive CHAM and the join-calculus , 1996, POPL '96.

[30]  Andrew P. Black,et al.  DirectFlow: A Domain-Specific Language for Information-Flow Systems , 2007, ECOOP.

[31]  Qiang Chen,et al.  Aurora : a new model and architecture for data stream management ) , 2006 .

[32]  William Thies,et al.  Linear analysis and optimization of stream programs , 2003, PLDI '03.

[33]  Martin Odersky,et al.  Actors That Unify Threads and Events , 2007, COORDINATION.

[34]  Jan Vitek,et al.  ECOOP 2008 - Object-Oriented Programming, 22nd European Conference, Paphos, Cyprus, July 7-11, 2008, Proceedings , 2008, ECOOP.

[35]  Wolfram Schulte,et al.  The essence of data access in Cω: the power is in the dot! , 2005 .

[36]  G. Stewart Von Itzstein,et al.  The Expression of Common Concurrency Patterns in Join Java , 2004, PDPTA.

[37]  Luis Daniel Benavides Navarro,et al.  Explicitly distributed AOP using AWED , 2006, AOSD '06.

[38]  Andrew P. Black ECOOP 2005 - Object-Oriented Programming, 19th European Conference, Glasgow, UK, July 25-29, 2005, Proceedings , 2005, ECOOP.

[39]  Rachid Guerraoui,et al.  Garf: a tool for programming reliable distributed applications , 1997, IEEE Concurrency.

[40]  César Sánchez,et al.  Expressive Completeness of an Event-Pattern Reactive Programming Language , 2005, FORTE.

[41]  Michael R. Clarkson,et al.  Polyglot: An Extensible Compiler Framework for Java , 2003, CC.