Frappé: Functional Reactive Programming in Java


Antony Courtney


Functional Reactive Programming (FRP) is a declarative programming model for constructing interactive applications based on a continuous model of time. FRP programs are described in terms of behaviors (continuous, time-varying, reactive values), and events (conditions that occur at discrete points in time).

This paper presents Frappé, an implementation of FRP in the Java progamming language. The primary contribution of Frappeé is its integration of the FRP event/behavior model with the Java Beans event/property model. At the interface level, any Java Beans component may be used as a source or sink for the FRP event and behavior combinators. This provides a mechanism for extending Frappé with new kinds of I/O connections and allows FRP to be used as a high-level declarative model for composing applications from Java Beans components. At the implementation level, the Java Beans event model is used internally by Frappé to propagate FRP events and changes to FRP behaviors. This allows Frappé applications to be packaged as Java Beans components for use in other applications, and yields an implementation of FRP well-suited to the requirements of event-driven applications (such as graphical user interfaces).


  author =      "Antony Courtney",
  title =      "{F}rapp\'{e}: Functional Reactive Programming in {J}ava",
  booktitle =   "Third International Symposium on Pratical Aspects of Declarative Languages~({PADL})",
  year = 2001,
  month = "March",