Writing concurrent desktop applications in an actor-based programming model

GUI frameworks, like Swing, are typically not thread-safe. Desktop applications are thus often written in a purely single-threaded, event-based style. Introducing threads into such applications is not an easy task as potentially all parts of the application may be affected by this change. Instead of using a thread-based programming model, actor models are regaining attention lately. The actor-based CoBox model is based on isolated object-oriented components communicating via asynchronous method calls. The model is implemented in a Java extension, called JCoBox, and has been successfully used to implemented several concurrent desktop applications. In this paper we show how a typical desktop application is designed and implemented in JCoBox.

[1]  Martin Odersky,et al.  Scala Actors: Unifying thread-based and event-based programming , 2009, Theor. Comput. Sci..

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

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

[4]  Jan Vitek,et al.  Thorn: robust, concurrent, extensible scripting on the JVM , 2009, OOPSLA '09.

[5]  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).

[6]  Akinori Yonezawa,et al.  Object-oriented concurrent programming in ABCL/1 , 1986, OOPSLA 1986.

[7]  Erik Poll,et al.  Immutable Objects for a Java-Like Language , 2007, ESOP.

[8]  Michael R. Clarkson,et al.  Polyglot: An Extensible Compiler Framework for Java , 2003, CC.

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

[10]  Erik Poll,et al.  Type-based Object Immutability with Flexible Initialization - extended version , 2009 .

[11]  Einar Broch Johnsen,et al.  An Asynchronous Communication Model for Distributed Concurrent Objects , 2004, Proceedings of the Second International Conference on Software Engineering and Formal Methods, 2004. SEFM 2004..

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

[13]  Einar Broch Johnsen,et al.  Intra-Object versus Inter-Object: Concurrency and Reasoning in Creol , 2009, TTSS.

[14]  Joe Armstrong,et al.  Making reliable distributed systems in the presence of software errors , 2003 .

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

[16]  Frank S. de Boer,et al.  A Complete Guide to the Future , 2007, ESOP.

[17]  Carl Hewitt,et al.  A Universal Modular ACTOR Formalism for Artificial Intelligence , 1973, IJCAI.

[18]  Michael D. Ernst,et al.  Practical pluggable types for java , 2008, ISSTA '08.

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

[20]  Eric Dean Tribble,et al.  Concurrency Among Strangers , 2005, TGC.

[21]  Noemi de La Rocque Rodriguez,et al.  Integrating Remote Invocations with Asynchronism and Cooperative Multitasking , 2008, Parallel Process. Lett..

[22]  Robert H. Halstead,et al.  MULTILISP: a language for concurrent symbolic computation , 1985, TOPL.

[23]  Jan Vitek,et al.  Thorn: robust, concurrent, extensible scripting on the JVM , 2009, OOPSLA 2009.

[24]  John K. Ousterhout,et al.  Why Threads Are A Bad Idea (for most purposes) , 2003 .

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

[26]  Erika Ábrahám,et al.  Behavioral interface description of an object-oriented language with futures and promises , 2009, J. Log. Algebraic Methods Program..

[27]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[28]  Pierre America,et al.  Issues in the design of a parallel object-oriented language , 1989, Formal Aspects of Computing.

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

[30]  Carl Hewitt,et al.  The incremental garbage collection of processes , 1977, Artificial Intelligence and Programming Languages.

[31]  Einar Broch Johnsen,et al.  Minimal Ownership for Active Objects , 2008, APLAS.

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