Developing Scalable Applications with Actors AGOSTINO POGGI Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Viale G.P. Usberti 181A, Parma, 43124 ITALY agostino.poggi@unipr.it http://www.ce.unipr.it/people/poggi Abstract: - This paper presents a software framework aimed at both simplifying the development of large and distributed complex systems and guarantying an efficient execution of applications. This software framework takes advantage of a concise actor model that makes easy the development of the actor code by delegating the management of events (i.e., the reception of messages) to the execution environment. Moreover, it allows the development of scalable and efficient applications through the possibility of using different implementations of the components that drive the execution of actors. In particular, the paper introduces the software framework and presents the first results of its experimentation. Key-Words: - Actor model, software framework, concurrent systems, distributed systems, Java 1 Introduction Distributed and concurrent programming have lately received enormous interest because multi-core processors make concurrency an essential ingredient of efficient program execution and because distributed architectures are inherently concurrent. However, distributed and concurrent programming is hard and largely different from sequential programming. Programmers have more concerns when it comes to taming parallelism. In fact, distributed and concurrent programs are usually bigger than equivalent sequential ones and models of distributed and concurrent programming languages are different from familiar and popular sequential languages [1][2]. Message passing is the most attractive solution because it is a concurrent model that is not based on the sharing of data and so its techniques can be used in distributed computation too. One of the well-known theoretical and practical models of message passing is the actor model [3]. Using such a model, programs become collections of independent active objects (actors) that exchange messages and have no mutable shared state. Actors can help developers to avoid issues such as deadlock, live-lock and starvation, which are common problems for shared memory based approaches. There are a multitude of actor oriented libraries and languages, and each of them implements some variants of actor semantics. However, such libraries and languages use either thread-based programming, which makes easy the development of programs, or event-based programming, which is far more practical to develop large and efficient concurrent systems, but also is more difficult to use. This paper presents an actor based software framework, called CoDE (Concurrent Development Environment), that has the suitable features for both simplifying the development of large and distributed complex systems and guarantying scalable and efficient applications. The next section presents relate work. Section 3 introduces the software framework. Section 4 details its implementation. Sections 5 shows how to write the code of an application and how to configure it. Section 6 presents an analysis of the performances varying both the type of application and the type of configuration. Section 7 presents the results of the initial experimentation of the software framework. Finally, section 8 concludes the paper by discussing its main features and the directions for future work. 2 Related Work Several actor-oriented libraries and languages have been proposed in last decades and a large part of them uses Java as implementation language [4]. The rest of the section presents some of the most interesting works. Salsa [5] is an actor-based language for mobile and Internet computing that provides three significant mechanisms based on the actor model: token-passing continuations, join continuations, and WSEAS TRANSACTIONS on COMPUTERS Agostino Poggi E-ISSN: 2224-2872 660 Volume 13, 2014