Multitier Modules

Authors Pascal Weisenburger, Guido Salvaneschi



PDF
Thumbnail PDF

File

LIPIcs.ECOOP.2019.3.pdf
  • Filesize: 0.65 MB
  • 29 pages

Document Identifiers

Author Details

Pascal Weisenburger
  • Technische Universität Darmstadt, Germany
Guido Salvaneschi
  • Technische Universität Darmstadt, Germany

Acknowledgements

We would like to thank Philipp Schulz for the implementation of the first prototype of this work and all reviewers of this paper for their comments and suggestions.

Cite AsGet BibTex

Pascal Weisenburger and Guido Salvaneschi. Multitier Modules. In 33rd European Conference on Object-Oriented Programming (ECOOP 2019). Leibniz International Proceedings in Informatics (LIPIcs), Volume 134, pp. 3:1-3:29, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2019)
https://doi.org/10.4230/LIPIcs.ECOOP.2019.3

Abstract

Multitier programming languages address the complexity of developing distributed systems abstracting over low level implementation details such as data representation, serialization and network protocols. Since the functionalities of different peers can be defined in the same compilation unit, multitier languages do not force developers to modularize software along network boundaries. Unfortunately, combining the code for all tiers into the same compilation unit poses a scalability challenge or forces developers to resort to traditional modularization abstractions that are agnostic to the multitier nature of the language. In this paper, we address this issue with a module system for multitier languages. Our module system supports encapsulating each (cross-peer) functionality and defining it over abstract peer types. As a result, we disentangle modularization and distribution and we enable the definition of a distributed system as a composition of multitier modules, each representing a subsystem. Our case studies on distributed algorithms, distributed data structures, as well as on the Apache Flink task distribution system, show that multitier modules allow the definition of reusable (abstract) patterns of interaction in distributed software and enable separating the modularization and distribution concerns, properly separating functionalities in distributed systems.

Subject Classification

ACM Subject Classification
  • Computing methodologies → Distributed programming languages
  • Software and its engineering → Modules / packages
Keywords
  • Distributed Programming
  • Multitier Programming
  • Abstract Peer Types
  • Placement Types
  • Module Systems
  • Scala

Metrics

  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    0
    PDF Downloads

References

  1. Jonathan Aldrich, Craig Chambers, and David Notkin. ArchJava: Connecting software architecture to implementation. In Proceedings of the 24th International Conference on Software Engineering, ICSE '02, New York, NY, USA, 2002. ACM. Google Scholar
  2. Jonathan Aldrich, Vibha Sazawal, Craig Chambers, and David Notkin. Language Support for Connector Abstractions. In Proceedings of the 17th European Conference on Object-Oriented Programming, ECOOP '03, Berlin, Heidelberg, 2003. Springer. Google Scholar
  3. Henry C. Baker, Jr. and Carl Hewitt. The Incremental Garbage Collection of Processes. SIGPLAN Notices, 12(8), 1977. Google Scholar
  4. Gilad Bracha and William Cook. Mixin-based Inheritance. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications / European Conference on Object-Oriented Programming, OOPSLA/ECOOP '90, New York, NY, USA, 1990. ACM. Google Scholar
  5. Gilad Bracha, Martin Odersky, David Stoutamire, and Philip Wadler. Making the Future Safe for the Past: Adding Genericity to the Java Programming Language. In Proceedings of the 13th ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA '98, New York, NY, USA, 1998. ACM. Google Scholar
  6. Gilad Bracha, Peter von der Ahé, Vassili Bykov, Yaron Kashai, William Maddox, and Eliot Miranda. Modules As Objects in Newspeak. In Proceedings of the 24th European Conference on Object-Oriented Programming, ECOOP '10, Berlin, Heidelberg, 2010. Springer-Verlag. Google Scholar
  7. Oliver Bračevac, Sebastian Erdweg, Guido Salvaneschi, and Mira Mezini. CPL: A core language for cloud computing. In Proceedings of the 15th International Conference on Modularity, MODULARITY '16, New York, NY, USA, 2016. ACM. Google Scholar
  8. Eugene Burmako. Scala Macros: Let Our Powers Combine!: On How Rich Syntax and Static Types Work with Metaprogramming. In Proceedings of the 4th Workshop on Scala, SCALA '13, New York, NY, USA, 2013. ACM. Google Scholar
  9. Paris Carbone, Asterios Katsifodimos, Stephan Ewen, Volker Markl, Seif Haridi, and Kostas Tzoumas. Apache Flink: Stream and batch processing in a single engine. IEEE Data Engineering Bulletin, 38, 2015. Google Scholar
  10. Luca Cardelli and Andrew D. Gordon. Mobile ambients. Theoretical Computer Science, 240(1), 2000. Google Scholar
  11. Satish Chandra, Vijay Saraswat, Vivek Sarkar, and Rastislav Bodik. Type Inference for Locality Analysis of Distributed Data Structures. In Proceedings of the 13th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP '08, New York, NY, USA, 2008. ACM. Google Scholar
  12. James Cheney and Ralf Hinze. Phantom Types. Technical report, Cornell University, 2003. Google Scholar
  13. Adam Chlipala. Ur/Web: A simple model for programming the web. In Proceedings of the 42nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL '15, New York, NY, USA, 2015. ACM. Google Scholar
  14. Ezra Cooper, Sam Lindley, Philip Wadler, and Jeremy Yallop. Links: Web programming without tiers. In Proceedings of the 5th International Conference on Formal Methods for Components and Objects, FMCO '06, Berlin, Heidelberg, 2007. Springer-Verlag. Google Scholar
  15. Vincent Cremet, François Garillot, Sergueï Lenglet, and Martin Odersky. A Core Calculus for Scala Type Checking. In Proceedings of the 31st International Conference on Mathematical Foundations of Computer Science, MFCS '06, Berlin, Heidelberg, 2006. Springer-Verlag. Google Scholar
  16. Ivica Crnkovic, Severine Sentilles, Vulgarakis Aneta, and Michel R. V. Chaudron. A Classification Framework for Software Component Models. IEEE Transactions on Software Engineering, 37(5), September 2011. Google Scholar
  17. Mattias De Wael, Stefan Marr, Bruno De Fraine, Tom Van Cutsem, and Wolfgang De Meuter. Partitioned Global Address Space Languages. ACM Computing Surveys, 47(4), May 2015. Google Scholar
  18. Erik Ernst, Klaus Ostermann, and William R. Cook. A Virtual Class Calculus. In Proceedings of the 33rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL '06, New York, NY, USA, 2006. ACM. Google Scholar
  19. Cédric Fournet and Georges Gonthier. The Reflexive CHAM and the Join-calculus. In Proceedings of the 23rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL '96, New York, NY, USA, 1996. ACM. Google Scholar
  20. Vaidas Gasiunas, Mira Mezini, and Klaus Ostermann. Dependent Classes. In Proceedings of the 22nd ACM SIGPLAN Conference on Object-oriented Programming Systems and Applications, OOPSLA '07, New York, NY, USA, 2007. ACM. Google Scholar
  21. D. S. Hirschberg and J. B. Sinclair. Decentralized Extrema-finding in Circular Configurations of Processors. Communications of the ACM, 23(11), 1980. Google Scholar
  22. Barbara Liskov. Keynote Address - Data Abstraction and Hierarchy. In Addendum to the Proceedings on Object-Oriented Programming Systems, Languages and Applications (Addendum), OOPSLA '87, New York, NY, USA, 1987. ACM. Google Scholar
  23. Matthew L. Massie, Brent N. Chun, and David E. Culler. The ganglia distributed monitoring system: design, implementation, and experience. Parallel Computing, 30(7):817-840, 2004. Google Scholar
  24. Nenad Medvidovic, David S. Rosenblum, and Richard N. Taylor. A Language and Environment for Architecture-based Software Development and Evolution. In Proceedings of the 21st International Conference on Software Engineering, ICSE '99, New York, NY, USA, 1999. ACM. Google Scholar
  25. R. Milner, L. Morris, and M. Newey. A Logic for Computable Functions with Reflexive and Polymorphic Types. In Proceedings of the Conference on Proving and Improving Programs, Arc-et-Senans, 1975. Google Scholar
  26. Tom Murphy, VII., Karl Crary, and Robert Harper. Type-safe Distributed Programming with ML5. In Proceedings of the 3rd Conference on Trustworthy Global Computing, TGC '07, Berlin, Heidelberg, 2008. Springer-Verlag. Google Scholar
  27. Nathaniel Nystrom, Stephen Chong, and Andrew C. Myers. Scalable Extensibility via Nested Inheritance. In Proceedings of the 19th ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA '04, New York, NY, USA, 2004. ACM. Google Scholar
  28. Nathaniel Nystrom, Xin Qi, and Andrew C. Myers. J&: Nested Intersection for Scalable Software Composition. In Proceedings of the 21st ACM SIGPLAN Conference on Object-oriented Programming Systems, Languages, and Applications, OOPSLA '06, New York, NY, USA, 2006. ACM. Google Scholar
  29. Martin Odersky, Guillaume Martres, and Dmitry Petrashko. Implementing Higher-kinded Types in Dotty. In Proceedings of the 7th ACM SIGPLAN Symposium on Scala, SCALA '16, New York, NY, USA, 2016. ACM. Google Scholar
  30. Martin Odersky and Matthias Zenger. Scalable Component Abstractions. In Proceedings of the 20th ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA '05, New York, NY, USA, 2005. ACM. Google Scholar
  31. Bruno C.d.S. Oliveira, Adriaan Moors, and Martin Odersky. Type Classes As Objects and Implicits. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA '10, New York, NY, USA, 2010. ACM. Google Scholar
  32. Diego Ongaro and John Ousterhout. In Search of an Understandable Consensus Algorithm. In Proceedings of the 2014 USENIX Annual Technical Conference, USENIX ATC '14, Berkeley, CA, USA, 2014. USENIX Association. Google Scholar
  33. D. L. Parnas. On the Criteria to Be Used in Decomposing Systems into Modules. Communications of the ACM, 15(12), December 1972. Google Scholar
  34. Laure Philips, Coen De Roover, Tom Van Cutsem, and Wolfgang De Meuter. Towards Tierless Web Development Without Tierless Languages. In Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software, Onward! 2014, New York, NY, USA, 2014. ACM. Google Scholar
  35. Gabriel Radanne and Jérôme Vouillon. Tierless Modules, 2017. Google Scholar
  36. Gabriel Radanne and Jérôme Vouillon. Tierless Web Programming in the Large. In Companion Proceedings of the The Web Conference 2018, WWW '18, Republic and Canton of Geneva, Switzerland, 2018. International World Wide Web Conferences Steering Committee. Google Scholar
  37. David Rajchenbach-Teller and Franois-Régis Sinot. Opa: Language support for a sane, safe and secure web. In Proceedings of the OWASP AppSec Research, 2010. Google Scholar
  38. Andreas Rossberg and Derek Dreyer. Mixin' Up the ML Module System. ACM Transactions on Programming Languages and Systems, 35(1), April 2013. Google Scholar
  39. Nicola Santoro. Design and analysis of distributed algorithms, volume 56. John Wiley & Sons, 2006. Google Scholar
  40. Manuel Serrano, Erick Gallesio, and Florian Loitsch. Hop: A language for programming the web 2.0. In Companion to the 21th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, Companion to OOPSLA '06, New York, NY, USA, 2006. ACM. Google Scholar
  41. Manuel Serrano and Vincent Prunet. A Glimpse of Hopjs. In Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming, ICFP '16, New York, NY, USA, 2016. ACM. Google Scholar
  42. Marc Shapiro, Nuno Preguiça, Carlos Baquero, and Marek Zawirski. A comprehensive study of Convergent and Commutative Replicated Data Types. Research Report RR-7506, Inria - Centre Paris-Rocquencourt; INRIA, January 2011. Google Scholar
  43. Marc Shapiro, Nuno Preguiça, Carlos Baquero, and Marek Zawirski. Conflict-free Replicated Data Types. In Proceedings of the 13th International Conference on Stabilization, Safety, and Security of Distributed Systems, SSS '11, Berlin, Heidelberg, 2011. Springer-Verlag. Google Scholar
  44. Clemens Szyperski. Component Software: Beyond Object-Oriented Programming. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 2nd edition, 2002. Google Scholar
  45. Peri Tarr, Harold Ossher, William Harrison, and Stanley M. Sutton, Jr. N Degrees of Separation: Multi-dimensional Separation of Concerns. In Proceedings of the 21st International Conference on Software Engineering, ICSE '99, New York, NY, USA, 1999. ACM. Google Scholar
  46. Kresten Krab Thorup. Genericity in Java with Virtual Types. In Proceedings of the 11th European Conference on Object-oriented Programming, ECOOP '97, Berlin, Heidelberg, 1997. Springer-Verlag. Google Scholar
  47. Werner Vogels. Eventually Consistent. Communications of the ACM, 52(1), January 2009. Google Scholar
  48. Pascal Weisenburger, Mirko Köhler, and Guido Salvaneschi. Distributed System Development with ScalaLoci. Proceedings of the ACM on Programming Languages, 2(OOPSLA '18), 2018. Google Scholar
  49. Yizhou Zhang, Matthew C. Loring, Guido Salvaneschi, Barbara Liskov, and Andrew C. Myers. Lightweight, Flexible Object-oriented Generics. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '15, New York, NY, USA, 2015. ACM. Google Scholar
  50. Yizhou Zhang and Andrew C. Myers. Familia: Unifying Interfaces, Type Classes, and Family Polymorphism. Proceedings of the ACM on Programming Languages, 1(OOPSLA), October 2017. Google Scholar
Questions / Remarks / Feedback
X

Feedback for Dagstuhl Publishing


Thanks for your feedback!

Feedback submitted

Could not send message

Please try again later or send an E-mail