AmbientTalk: programming responsive mobile peer-to-peer applications with actors

Abstract The rise of mobile computing platforms has given rise to a new class of applications: mobile applications that interact with peer applications running on neighbouring phones. Developing such applications is challenging because of problems inherent to concurrent and distributed programming, and because of problems inherent to mobile networks, such as the fact that wireless network connectivity is often intermittent, and the lack of centralized infrastructure to coordinate the peers. We present AmbientTalk, a distributed programming language designed specifically to develop mobile peer-to-peer applications. AmbientTalk aims to make it easy to develop mobile applications that are resilient to network failures by design. We describe the language׳s concurrency and distribution model in detail, as it lies at the heart of AmbientTalk׳s support for responsive, resilient application development. The model is based on communicating event loops, itself a descendant of the actor model. We contribute a small-step operational semantics for this model and use it to establish data race and deadlock freedom.

[1]  Edward A. Lee The problem with threads , 2006, Computer.

[2]  Alan Mycroft,et al.  Kilim: Isolation-Typed Actors for Java , 2008, ECOOP.

[3]  José C. Cunha,et al.  Grid Computing: Software Environments and Tools , 2005 .

[4]  Hans-Peter Bischof,et al.  Many-to-many invocation: A New framework for building collaborative applications in ad hoc networks , 2002, OOPSLA 2002.

[5]  Denis Caromel,et al.  Asynchronous and deterministic objects , 2004, POPL '04.

[6]  Amy L. Murphy,et al.  LIME: a middleware for physical and logical mobility , 2001, Proceedings 21st International Conference on Distributed Computing Systems.

[7]  Éric Tanter,et al.  Achieving high and consistent rendering performance of Java AWT-Swing on multiple platforms , 2009 .

[8]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 1999, OOPSLA '99.

[9]  Vijay A. Saraswat,et al.  Concurrent constraint programming , 1989, POPL '90.

[10]  Rachid Guerraoui,et al.  Concurrency and distribution in object-oriented programming , 1998, CSUR.

[11]  Denis Caromel,et al.  Toward a method of object-oriented concurrent programming , 1993, CACM.

[12]  Liuba Shrira,et al.  Promises: linguistic support for efficient asynchronous procedure calls in distributed systems , 1988, PLDI '88.

[13]  Barbara Liskov,et al.  Distributed programming in Argus , 1988, CACM.

[14]  Peter Sewell,et al.  Nomadic pict: Programming languages, communication infrastructure overlays, and semantics for mobile computation , 2010, TOPL.

[15]  Akinori Yonezawa,et al.  Object-oriented concurrent programming ABCL/1 , 1986, OOPLSA '86.

[16]  Robert Hieb,et al.  The Revised Report on the Syntactic Theories of Sequential Control and State , 1992, Theor. Comput. Sci..

[17]  Patrick Th. Eugster,et al.  Location-based Publish/Subscribe , 2005, Fourth IEEE International Symposium on Network Computing and Applications.

[18]  Gerald J. Sussman,et al.  Scheme: A Interpreter for Extended Lambda Calculus , 1998, High. Order Symb. Comput..

[19]  Carlos A. Varela,et al.  Programming dynamically reconfigurable open systems with SALSA , 2001, SIGP.

[20]  Henry Lieberman,et al.  Concurrent object-oriented programming in Act 1 , 1987 .

[21]  Carolyn L. Talcott,et al.  A foundation for actor computation , 1997, Journal of Functional Programming.

[22]  Jeff McAffer Meta-level Programming with CodA , 1995, ECOOP.

[23]  M. Frans Kaashoek,et al.  Rover: a toolkit for mobile information access , 1995, SOSP.

[24]  Akinori Yonezawa,et al.  Reflection in an object-oriented concurrent language , 1988, OOPSLA '88.

[25]  Leslie Lamport,et al.  The Byzantine Generals Problem , 1982, TOPL.

[26]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

[27]  Wolfgang De Meuter,et al.  Linguistic symbiosis between event loop actors and threads , 2009, Comput. Lang. Syst. Struct..

[28]  Randall B. Smith,et al.  Self: The power of simplicity , 1987, OOPSLA 1987.

[29]  Terry A. McKee,et al.  OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications , 1989 .

[30]  Cecilia Mascolo,et al.  Mobile Computing Middleware , 2002, NETWORKING Tutorials.

[31]  Hans-Peter Bischof,et al.  Many-to-Many Invocation: a new object oriented paradigm for ad hoc collaborative systems , 2002, OOPSLA '02.

[32]  Andrew P. Black,et al.  Fine-grained mobility in the Emerald system , 1987, TOCS.

[33]  Jim Waldo Constructing ad hoc networks , 2001, Proceedings IEEE International Symposium on Network Computing and Applications. NCA 2001.

[34]  Matthias Felleisen,et al.  Semantics Engineering with PLT Redex , 2009 .

[35]  Gul A. Agha,et al.  Open Heterogeneous Computing in Actor Space , 1994, J. Parallel Distributed Comput..

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

[37]  David Gelernter,et al.  Generative communication in Linda , 1985, TOPL.

[38]  Andreas Paepcke,et al.  Conference proceedings on Object-oriented programming systems, languages, and applications , 1991, Conference on Object-Oriented Programming Systems, Languages, and Applications.

[39]  J.-P. Briot,et al.  From objects to actors: study of a limited symbiosis in smalltalk-80 , 1988, OOPSLA/ECOOP '88.

[40]  Denis Caromel,et al.  Programming, Composing, Deploying for the Grid , 2006, Grid Computing: Software Environments and Tools.

[41]  Éric Tanter,et al.  Mirror-based Reflection in Ambienttalk † , 2022 .

[42]  Gilad Bracha,et al.  Mirrors: design principles for meta-level facilities of object-oriented programming languages , 2004, OOPSLA.

[43]  Alexandre Bergel,et al.  Adding State and Visibility Control to Traits Using Lexical Nesting , 2009, ECOOP.

[44]  Adele Goldberg,et al.  SmallTalk 80: The Language , 1989 .

[45]  Jessie Dedecker,et al.  AmbientTalk: Object-oriented Event-driven Programming in Mobile Ad hoc Networks , 2007, XXVI International Conference of the Chilean Society of Computer Science (SCCC'07).

[46]  Luca Cardelli,et al.  Mobile Ambients , 1998, FoSSaCS.

[47]  Robin Milner,et al.  A Calculus of Mobile Processes, II , 1992, Inf. Comput..

[48]  Jan Schäfer,et al.  A Programming Model and Language for Concurrent and Distributed Object-Oriented Systems , 2011 .

[49]  Jonathan S. Shapiro,et al.  Concurrency among strangers: programming in E as plan coordination , 2005 .

[50]  Anne-Marie Kermarrec,et al.  The many faces of publish/subscribe , 2003, CSUR.

[51]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[52]  Theo D'Hondt,et al.  Ambient-Oriented Programming in AmbientTalk , 2006, ECOOP.

[53]  Zahir Tari,et al.  On the Move to Meaningful Internet Systems. OTM 2018 Conferences , 2018, Lecture Notes in Computer Science.

[54]  Oscar Nierstrasz,et al.  Traits: Composable Units of Behaviour , 2002, ECOOP.

[55]  Theo D'Hondt,et al.  Context-Aware Tuples for the Ambient , 2010, OTM Conferences.

[56]  David R. Cheriton,et al.  Leases: an efficient fault-tolerant mechanism for distributed file cache consistency , 1989, SOSP '89.

[57]  ROBIN MILNER,et al.  Edinburgh Research Explorer A Calculus of Mobile Processes, I , 2003 .

[58]  Gul Agha,et al.  Proceedings of the 1988 ACM SIGPLAN workshop on Object-based concurrent programming , 1988 .

[59]  Franco Zambonelli,et al.  Programming pervasive and mobile computing applications with the TOTA middleware , 2004, Second IEEE Annual Conference on Pervasive Computing and Communications, 2004. Proceedings of the.

[60]  Siobhán Clarke,et al.  Proximity-Based Service Discovery in Mobile Ad Hoc Networks , 2005, DAIS.

[61]  Joe Armstrong,et al.  Concurrent programming in ERLANG , 1993 .

[62]  Theo D'Hondt,et al.  A Leasing Model to Deal with Partial Failures in Mobile Ad Hoc Networks , 2009, TOOLS.

[63]  John K. Ousterhout,et al.  Why Threads Are A Bad Idea , 2013 .

[64]  Arnd Poetzsch-Heffter,et al.  JCoBox: Generalizing Active Objects to Concurrent Components , 2010, ECOOP.