Skip to main content

Towards Reactive Programming for Object-Oriented Applications

  • Chapter
Transactions on Aspect-Oriented Software Development XI

Part of the book series: Lecture Notes in Computer Science ((TAOSD,volume 8400))

Abstract

Reactive applications are difficult to implement. Traditional solutions based on event systems and the Observer pattern have a number of inconveniences, but programmers bear them in return for the benefits of OO design. On the other hand, reactive approaches based on automatic updates of dependencies – like functional reactive programming and dataflow languages – provide undoubted advantages but do not fit well with mutable objects.

In this paper, we provide a research roadmap to overcome the limitations of the current approaches and to support reactive applications in the OO setting. To establish a solid background for our investigation, we propose a conceptual framework to model the design space of reactive applications and we study the flaws of the existing solutions. Then we highlight how reactive languages have the potential to address those issues and we formulate our research plan.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Similar content being viewed by others

References

  1. Acar, U.A., Ahmed, A., Blume, M.: Imperative self-adjusting computation. In: Proceedings of the 35th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2008, pp. 309–322. ACM, New York (2008)

    Chapter  Google Scholar 

  2. Acar, U.A., Blelloch, G.E., Harper, R.: Adaptive functional programming. ACM Trans. Program. Lang. Syst. 28(6), 990–1034 (2006)

    Article  Google Scholar 

  3. Android developers web site, http://developer.android.com/index.html

  4. Berry, G., Gonthier, G.: The Esterel synchronous programming language: design, semantics, implementation. Science of Computer Programming 19(2), 87–152 (1992)

    Article  MATH  Google Scholar 

  5. Bhatotia, P., Wieder, A., Rodrigues, R., Acar, U.A., Pasquin, R.: Incoop: MapReduce for incremental computations. In: Proceedings of the 2nd ACM Symposium on Cloud Computing, SOCC 2011, pp. 7:1–7:14. ACM, New York (2011)

    Google Scholar 

  6. Bocchino, R.L., Adve, V.S., Chamberlain, B.L.: Software transactional memory for large scale clusters. In: Proceedings of the 13th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP 2008, pp. 247–258. ACM, New York (2008)

    Google Scholar 

  7. Bockisch, C., Kanthak, S., Haupt, M., Arnold, M., Mezini, M.: Efficient control flow quantification. In: Proceedings of the 21st Annual ACM SIGPLAN Conference on Object-oriented Programming Systems, Languages, and Applications, OOPSLA 2006, pp. 125–138. ACM, New York (2006)

    Chapter  Google Scholar 

  8. Bodden, E., Shaikh, R., Hendren, L.: Relational aspects as tracematches. In: Proceedings of the 7th International Conference on Aspect-oriented Software Development, AOSD 2008, pp. 84–95. ACM, New York (2008)

    Google Scholar 

  9. Burchett, K., Cooper, G.H., Krishnamurthi, S.: Lowering: a static optimization technique for transparent functional reactivity. In: Proceedings of the 2007 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-based Program Manipulation, PEPM 2007, pp. 71–80. ACM, New York (2007)

    Chapter  Google Scholar 

  10. Lombide Carreton, A., Mostinckx, S., Van Cutsem, T., De Meuter, W.: Loosely-coupled distributed reactive programming in mobile ad hoc networks. In: Vitek, J. (ed.) TOOLS 2010. LNCS, vol. 6141, pp. 41–60. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  11. Caspi, P., Pilaud, D., Halbwachs, N., Plaice, J.A.: LUSTRE: a declarative language for real-time programming. In: Proceedings of the 14th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, POPL 1987, pp. 178–188. ACM, New York (1987)

    Google Scholar 

  12. Ceri, S., Widom, J.: Deriving production rules for incremental view maintenance. In: Proceedings of the 17th International Conference on Very Large Data Bases, VLDB 1991, pp. 577–589. Morgan Kaufmann Publishers Inc., San Francisco (1991)

    Google Scholar 

  13. Cooper, G.H., Adsul, B.: Embedding dynamic dataflow in a call-by-value language. In: Sestoft, P. (ed.) ESOP 2006. LNCS, vol. 3924, pp. 294–308. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  14. Microsoft Corporation. C# language specification. version 3.0 (2007), http://msdn.microsoft.com/en-us/vcsharp/aa336809.aspx

  15. Cugola, G., Margara, A.: TESLA: a formally defined event specification language. In: Proceedings of the Fourth ACM International Conference on Distributed Event-Based Systems, DEBS 2010, pp. 50–61. ACM, New York (2010)

    Google Scholar 

  16. Cugola, G., Margara, A.: Processing flows of information: From data stream to complex event processing. ACM Comput. Surv. 44(3), 15:1–15:62 (2012)

    Google Scholar 

  17. Dabney, J.B., Harman, T.L.: Mastering SIMULINK 4, 1st edn. Prentice Hall PTR, Upper Saddle River (2001)

    Google Scholar 

  18. Dean, J., Ghemawat, S.: MapReduce: simplified data processing on large clusters. Commun. ACM 51(1), 107–113 (2008)

    Article  Google Scholar 

  19. Demers, A., Gehrke, J., Hong, M., Riedewald, M., White, W.: Towards expressive publish/Subscribe systems. In: Ioannidis, Y., Scholl, M.H., Schmidt, J.W., Matthes, F., Hatzopoulos, M., Böhm, K., Kemper, A., Grust, T., Böhm, C. (eds.) EDBT 2006. LNCS, vol. 3896, pp. 627–644. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  20. Demetrescu, C., Finocchi, I., Ribichini, A.: Reactive imperative programming with dataflow constraints. In: Proceedings of the 2011 ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA 2011, pp. 407–426. ACM, New York (2011)

    Chapter  Google Scholar 

  21. Dyer, R., Rajan, H., Cai, Y.: An exploratory study of the design impact of language features for aspect-oriented interfaces. In: 11th International Conference on Aspect-Oriented Software Development, AOSD 2012 (March 2012)

    Google Scholar 

  22. Eastep, J., Wingate, D., Agarwal, A.: Smart data structures: an online machine learning approach to multicore data structures. In: Proceedings of the 8th ACM International Conference on Autonomic Computing, ICAC 2011, pp. 11–20. ACM, New York (2011)

    Google Scholar 

  23. Eclipse IDE Web site, http://www.eclipse.org/

  24. Eini, O.: The pain of implementing LINQ providers. Queue 9(7), 10:10–10:22 (2011)

    Google Scholar 

  25. Elliott, C.: Functional implementations of continuous modeled animation. In: Palamidessi, C., Meinke, K., Glaser, H. (eds.) ALP 1998 and PLILP 1998. LNCS, vol. 1490, pp. 284–299. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  26. Elliott, C., Hudak, P.: Functional reactive animation. In: Proceedings of the Second ACM SIGPLAN International Conference on Functional Programming, ICFP 1997, pp. 263–273. ACM, New York (1997)

    Chapter  Google Scholar 

  27. Elliott, C.M.: Push-pull functional reactive programming. In: Proceedings of the 2nd ACM SIGPLAN Symposium on Haskell, Haskell 2009, pp. 25–36. ACM, New York (2009)

    Google Scholar 

  28. Eugster, P., Jayaram, K.R.: EventJava: An extension of Java for event correlation. In: Drossopoulou, S. (ed.) ECOOP 2009. LNCS, vol. 5653, pp. 570–594. Springer, Heidelberg (2009)

    Chapter  Google Scholar 

  29. Eugster, P.T., Felber, P.A., Guerraoui, R., Kermarrec, A.-M.: The many faces of publish/subscribe. ACM Comput. Surv. 35(2), 114–131 (2003)

    Article  Google Scholar 

  30. Figueiredo, E., Cacho, N., Sant’Anna, C., Monteiro, M., Kulesza, U., Garcia, A., Soares, S., Ferrari, F., Khan, S., Filho, F.C., Dantas, F.: Evolving software product lines with aspects: an empirical study on design stability. In: Proceedings of the 30th International Conference on Software Engineering, ICSE 2008, pp. 261–270. ACM, New York (2008)

    Google Scholar 

  31. Foster, N., Harrison, R., Freedman, M.J., Monsanto, C., Rexford, J., Story, A., Walker, D.: Frenetic: a network programming language. In: Proceedings of the 16th ACM SIGPLAN International Conference on Functional Programming, ICFP 2011, pp. 279–291. ACM, New York (2011)

    Google Scholar 

  32. FreeCol game Web site, http://www.freecol.org/

  33. Freeman-Benson, B.N.: Kaleidoscope: mixing objects, constraints, and imperative programming. In: OOPSLA/ECOOP 1990, pp. 77–88. ACM, New York (1990)

    Google Scholar 

  34. Gasiunas, V., Satabin, L., Mezini, M., Núñez, A., Noyé, J.: EScala: modular event-driven object interactions in Scala. In: AOSD 2011, pp. 227–240. ACM, New York (2011)

    Google Scholar 

  35. Gautier, T., Le Guernic, P., Besnard, L.: SIGNAL: A declarative language for synchronous programming of real-time systems. In: Kahn, G. (ed.) FPCA 1987. LNCS, vol. 274, pp. 257–277. Springer, Heidelberg (1987)

    Chapter  Google Scholar 

  36. Gelernter, D.: Generative communication in Linda. ACM Trans. Program. Lang. Syst. 7(1), 80–112 (1985)

    Article  MATH  Google Scholar 

  37. Glazed Lists Web site, http://www.glazedlists.com/

  38. Halbwachs, N., Caspi, P., Raymond, P., Pilaud, D.: The synchronous data flow programming language LUSTRE. Proceedings of the IEEE 79(9), 1305–1320 (1991)

    Article  Google Scholar 

  39. Hammer, M.A., Acar, U.A., Chen, Y.: CEAL: a C-based language for self-adjusting computation. In: Proceedings of the 2009 ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2009, pp. 25–37. ACM, New York (2009)

    Chapter  Google Scholar 

  40. Hammer, M.A., Neis, G., Chen, Y., Acar, U.A.: Self-adjusting stack machines. In: Proceedings of the, ACM International Conference on Object-oriented Programming Systems Languages and Applications, OOPSLA 2011, pp. 753–772. ACM, New York (2011)

    Chapter  Google Scholar 

  41. Hannemann, J., Kiczales, G.: Design pattern implementation in Java and AspectJ. In: Proceedings of the 17th ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA 2002, pp. 161–173. ACM, New York (2002)

    Chapter  Google Scholar 

  42. Hapner, M., Burridge, R., Sharma, R., Fialli, J., Stout, K.: Java message service. Sun Microsystems Inc., Santa Clara (2002)

    Google Scholar 

  43. Hudak, P., Courtney, A., Nilsson, H., Peterson, J.: Arrows, robots, and functional reactive programming. In: Jeuring, J., Jones, S.L.P. (eds.) AFP 2002. LNCS, vol. 2638, pp. 159–187. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  44. Ignatoff, D., Cooper, G.H., Krishnamurthi, S.: Crossing state lines: Adapting object-oriented frameworks to functional reactive languages. In: Hagiya, M. (ed.) FLOPS 2006. LNCS, vol. 3945, pp. 259–276. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  45. JMeter developers Web site, http://jakarta.apache.org/jmeter/index.html

  46. Johnson, G.W.: LabVIEW Graphical Programming: Practical Applications in Instrumentation and Control, 2nd edn. McGraw-Hill School Education Group (1997)

    Google Scholar 

  47. Kiczales, G., Mezini, M.: Separation of concerns with procedures, annotations, advice and pointcuts. In: Gao, X.-X. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 195–213. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  48. Kieburtz, R.B.: Implementing closed domain-specific languages (Abstract of invited talk). In: Taha, W. (ed.) SAIG 2000. LNCS, vol. 1924, pp. 1–2. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  49. Krishnaswami, N.R., Benton, N., Hoffmann, J.: Higher-order functional reactive programming in bounded space. In: Proceedings of the 39th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2012, pp. 45–58. ACM, New York (2012)

    Chapter  Google Scholar 

  50. LiveLinq Web site, http://www.componentone.com/SuperProducts/LiveLinq/

  51. Maier, I., Odersky, M.: Deprecating the Observer Pattern with Scala.react. Technical report (2012)

    Google Scholar 

  52. Maier, I., Rompf, T., Odersky, M.: Deprecating the Observer Pattern. Technical report (2010)

    Google Scholar 

  53. McDirmid, S., Hsieh, W.C.: SuperGlue: Component programming with object-oriented signals. In: Thomas, D. (ed.) ECOOP 2006. LNCS, vol. 4067, pp. 206–229. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  54. Meyerovich, L.A., Guha, A., Baskin, J., Cooper, G.H., Greenberg, M., Bromfield, A., Krishnamurthi, S.: Flapjax: a programming language for Ajax applications. In: Proceeding of the 24th ACM SIGPLAN Conference on Object-oriented Programming Systems Languages and Applications, OOPSLA 2009, pp. 1–20. ACM, New York (2009)

    Chapter  Google Scholar 

  55. Moors, A., Rompf, T., Haller, P., Odersky, M.: Scala-virtualized. In: Proceedings of the ACM SIGPLAN 2012 Workshop on Partial Evaluation and Program Manipulation, PEPM 2012, pp. 117–120. ACM, New York (2012)

    Chapter  Google Scholar 

  56. Myers, B.A., Giuse, D.A., Dannenberg, R.B., Kosbie, D.S., Pervin, E., Mickish, A., Zanden, B.V., Marchal, P.: Garnet: Comprehensive support for graphical, highly interactive user interfaces. Computer 23(11), 71–85 (1990)

    Article  Google Scholar 

  57. Myers, B.A., McDaniel, R.G., Miller, R.C., Ferrency, A.S., Faulring, A., Kyle, B.D., Mickish, A., Klimovitski, A., Doane, P.: The Amulet environment: New models for effective user interface software development. IEEE Trans. Softw. Eng. 23(6), 347–365 (1997)

    Article  Google Scholar 

  58. Newton, R., Morrisett, G., Welsh, M.: The Regiment Macroprogramming System. In: 6th International Symposium on Information Processing in Sensor Networks, IPSN 2007, pp. 489–498 (2007)

    Google Scholar 

  59. Nilsson, H., Courtney, A., Peterson, J.: Functional reactive programming, continued. In: Proceedings of the 2002 ACM SIGPLAN Workshop on Haskell, Haskell 2002, pp. 51–64. ACM, New York (2002)

    Google Scholar 

  60. Ostermann, K., Mezini, M., Bockisch, C.: Expressive pointcuts for increased modularity. In: Gao, X.-X. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 214–240. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  61. Pankratius, V., Schmidt, F., Garreton, G.: Combining functional and imperative programming for multicore software: An empirical study evaluating Scala and Java. In: 2012 34th International Conference on Software Engineering (ICSE), pp. 123–133 (2012)

    Google Scholar 

  62. Pearce, D.J., Noble, J.: Relationship aspects. In: Proceedings of the 5th International Conference on Aspect-oriented Software Development, AOSD 2006, pp. 75–86. ACM, New York (2006)

    Google Scholar 

  63. Pouzet, M.: Lucid Synchrone, version 3. Tutorial and reference manual. Université Paris-Sud, LRI (April 2006)

    Google Scholar 

  64. Rajan, H., Leavens, G.T.: Ptolemy: A language with quantified, typed events. In: Vitek, J. (ed.) ECOOP 2008. LNCS, vol. 5142, pp. 155–179. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  65. http://www.stg.tu-darmstadt.de/media/st/publications/oo_reactive_report.pdf

  66. Rothamel, T., Liu, Y.A.: Generating incremental implementations of object-set queries. In: Proceedings of the 7th International Conference on Generative Programming and Component Engineering, GPCE 2008, pp. 55–66. ACM, New York (2008)

    Google Scholar 

  67. Sakurai, K., Masuhara, H., Ubayashi, N., Matsuura, S., Komiya, S.: Association aspects. In: Proceedings of the 3rd International Conference on Aspect-oriented Software Development, AOSD 2004, pp. 16–25. ACM, New York (2004)

    Google Scholar 

  68. Salvaneschi, G., Drechsler, J., Mezini, M.: Towards distributed reactive programming. In: De Nicola, R., Julien, C. (eds.) COORDINATION 2013. LNCS, vol. 7890, pp. 226–235. Springer, Heidelberg (2013)

    Chapter  Google Scholar 

  69. Salvaneschi, G., Hintz, G., Mezini, M.: REScala: Bridging between object-oriented and functional style in reactive applications. In: Proceedings of the 13th International Conference on Aspect-Oriented Software Development, AOSD 2014. ACM, New York (2014)

    Google Scholar 

  70. Salvaneschi, G., Mezini, M.: Reactive behavior in object-oriented applications: an analysis and a research roadmap. In: Proceedings of the 12th Annual International Conference on Aspect-oriented Software Development, AOSD 2013, pp. 37–48. ACM, New York (2013)

    Chapter  Google Scholar 

  71. Shavit, N., Touitou, D.: Software transactional memory. Distributed Computing 10(2), 99–116 (1997)

    Article  Google Scholar 

  72. Sterling, L., Shapiro, E.: The art of Prolog: advanced programming techniques, 2nd edn. MIT Press, Cambridge (1994)

    MATH  Google Scholar 

  73. Tripakis, S., Sofronis, C., Caspi, P., Curic, A.: Translating discrete-time Simulink to Lustre. ACM Trans. Embed. Comput. Syst. 4(4), 779–818 (2005)

    Article  Google Scholar 

  74. Van Ham, J.M., Salvaneschi, G., Mezini, M., Noyé, J.: JEScala: Modular coordination with declarative events and joins. In: Proceedings of the 13th International Conference on Aspect-Oriented Software Development, AOSD 2014. ACM, New York (accepted for publication, 2014)

    Google Scholar 

  75. Wan, Z., Taha, W., Hudak, P.: Real-time frp. In: Proceedings of the Sixth ACM SIGPLAN International Conference on Functional Programming, ICFP 2001, pp. 146–156. ACM, New York (2001)

    Chapter  Google Scholar 

  76. Willis, D., Pearce, D.J., Noble, J.: Caching and incrementalisation in the Java query language. In: Proceedings of the 23rd ACM SIGPLAN Conference on Object-oriented Programming Systems Languages and Applications, OOPSLA 2008, pp. 1–18. ACM, New York (2008)

    Google Scholar 

  77. Wu, E., Diao, Y., Rizvi, S.: High-performance complex event processing over streams. In: Proceedings of the 2006 ACM SIGMOD International Conference on Management of Data, SIGMOD 2006, pp. 407–418 (2006)

    Google Scholar 

  78. Xiao, Y., Li, W., Siekkinen, M., Savolainen, P., Yla-Jaaski, A., Hui, P.: Power management for wireless data transmission using complex event processing. IEEE Trans. Comput. 61(12), 1765–1777 (2012)

    Article  MathSciNet  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2014 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Salvaneschi, G., Mezini, M. (2014). Towards Reactive Programming for Object-Oriented Applications. In: Chiba, S., Tanter, É., Bodden, E., Maoz, S., Kienzle, J. (eds) Transactions on Aspect-Oriented Software Development XI. Lecture Notes in Computer Science, vol 8400. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-55099-7_7

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-55099-7_7

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-55098-0

  • Online ISBN: 978-3-642-55099-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics