ABSTRACT
Distributed applications are traditionally developed using separate modules for each component in the distributed system, which can even be written in different programming languages. Those modules react on events such as user input, which are produced by other modules, and may in turn produce new events to be handled by different modules. Thus, most distributed applications are reactive in nature. Distributed event-based data flow makes it is hard to reason about the system and therefore makes the development of distributed systems challenging.
In this paper, we present language abstractions for distributed reactive programming easing the development of such applications and supporting various distributed architectures.
- A. Carzaniga, D. S. Rosenblum, and A. L. Wolf. Design and evaluation of a wide-area event notification service. ACM Transactions on Computer Systems, 2001. Google ScholarDigital Library
- A. Chlipala. Ur/Web: A simple model for programming the web. POPL ’15. ACM, 2015. Google ScholarDigital Library
- E. Cooper, S. Lindley, P. Wadler, and J. Yallop. Links: Web programming without tiers. FMCO ’06. Springer-Verlag, 2007. Google ScholarDigital Library
- G. H. Cooper and S. Krishnamurthi. Embedding dynamic dataflow in a call-by-value language. ESOP ’06, 2006. Google ScholarDigital Library
- J. Edwards. Coherent reaction. OOPSLA ’09. ACM, 2009. Google ScholarDigital Library
- C. Elliott and P. Hudak. Functional reactive animation. ICFP ’97. ACM, 1997. Google ScholarDigital Library
- J. Fischer, R. Majumdar, and T. Millstein. Tasks: Language support for event-driven programming. PEPM ’07. ACM, 2007. Google ScholarDigital Library
- I. Maier, T. Rompf, and M. Odersky. Deprecating the observer pattern. Technical report, 2010.Google Scholar
- D. Manolescu, B. Beckman, and B. Livshits. Volta: Developing distributed applications by recompiling. IEEE Software, 2008. Google ScholarDigital Library
- R. Meier and V. Cahill. Taxonomy of distributed event-based programming systems. In Distributed Computing Systems Workshops, 2002. Google ScholarDigital Library
- L. A. Meyerovich, A. Guha, J. Baskin, G. H. Cooper, M. Greenberg, A. Bromfield, and S. Krishnamurthi. Flapjax: A programming language for Ajax applications. OOPSLA ’09. ACM, 2009. Google ScholarDigital Library
- A. Ranganathan and R. H. Campbell. What is the complexity of a distributed system? Technical report, University of Illinois at Urbana-Champaign, 2005.Google Scholar
- B. Reynders, D. Devriese, and F. Piessens. Multi-tier functional reactive programming for the web. Onward! 2014. ACM, 2014. Google ScholarDigital Library
- M. Serrano, E. Gallesio, and F. Loitsch. Hop: A language for programming the web 2.0. In P. L. Tarr and W. R. Cook, editors, Companion to OOPSLA ’06. ACM, 2006.Google Scholar
- C. A. Thekkath, H. M. Levy, and E. D. Lazowska. Separating data and control transfer in distributed operating systems. ASPLOS VI. ACM, 1994. Google ScholarDigital Library
Index Terms
- Multitier reactive abstractions
Recommendations
Developing Distributed Systems with Multitier Programming
DEBS '19: Proceedings of the 13th ACM International Conference on Distributed and Event-based SystemsDeveloping distributed systems is a complex task that requires to program different peers, often using several languages on different platforms, writing communication code and handling data serialization and conversion.
We show how the multitier ...
Distributed REScala: an update algorithm for distributed reactive programming
OOPSLA '14Reactive programming improves the design of reactive applications by relocating the logic for managing dependencies between dependent values away from the application logic to the language implementation. Many distributed applications are reactive. Yet, ...
Distributed REScala: an update algorithm for distributed reactive programming
OOPSLA '14: Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & ApplicationsReactive programming improves the design of reactive applications by relocating the logic for managing dependencies between dependent values away from the application logic to the language implementation. Many distributed applications are reactive. Yet, ...
Comments