MODE: A JAVA-LIKE ENVIRONMENT FOR EXPERIMENTING MOBILITY POLICIES Giuliano Armano (1) , Antonio Corradi (2) , Letizia Leonardi (3) , and Eloisa Vargiu (4) (1) DIEE, Dipartimento di Ingegneria Elettrica ed Elettronica, Università di Cagliari, Piazza d’Armi, I-09123, Cagliari (Italy), email: armano@diee.unica.it (2) DEIS, Dipartimento di Ingegneria Elettronica, Informatica e Sistemistica, Università di Bologna, Viale Risorgimento, 2, I-40136 Bologna (Italy), email: acorradi@deis.unibo.it (3) DSI, Dipartimento di Scienze dell’Ingegneria, Università di Modena, via G. Campi, 213/b, I-41100 Modena (Italy), email: letizia.leonardi@unimo.it (4) CRS4, Centro di Ricerca, Sviluppo e Studi Superiori in Sardegna, VI Strada OVEST Z.I. Macchiareddu I- 09010 UTA (CA), Italy, email: eloisa@crs4.it Abstract The wide acceptance of object-oriented environments and proposals has renewed interest in all the class inheritance related issues; in particular its implementation in distributed architectures. The paper focuses on how the inheritance relationship could impact on (possibly heterogeneous) distributed systems that do not assume co-residence of objects and their classes / superclasses. In these systems, the object computation requires either to move / copy the (class) inheritance graph or to move the objects themselves. Several policies are feasible, depending on the decisions about moving / copying the data / code part of objects, and also depending on when these actions should take place. The paper presents MODE, an environment that, other than being very useful in promoting collaborative work, allows to assess and compare different mobility policies. Java has been adopted as a common underlying language, able to confer portability to all modern and widely used architectures. 1. Introduction In the past, a lot of work has been done on mobility and distribution issues related to object- based languages, systems, and environments (see, for example Eden [1], Emerald [2], and Obliq [3]). More recently, such issues have been receiving attention from the object-oriented community (see, for example, Distributed Oz [4]). In fact, the wide acceptance of object-oriented environments and proposals, such as Java [5] and CORBA [6], has renewed interest in several issues related with class inheritance and object mobility in distributed architectures. In addition, there has been a general and wide discussion on how reuse can derive from the identification of classes and types (see, for example, [7]). These problems are amplified in distributed architectures because classes and objects can be allocated to different, possibly heterogeneous, nodes. In particular, object-oriented systems have to consider all aspects related to the implementation of class inheritance, and tackle all corresponding problems. The paper presents solutions that originate from agent mobility proposals ([8], [9]) and that overcome the heterogeneity problem by assuming a common interpreted language portable to all sites of the architecture [10]. In particular, two complementary directions for component mobility are considered: solutions can follow either code mobility (CM) or data mobility (DM). CM implies moving / copying the code toward the node where object data is allocated; conversely, DM moves / copies the object data toward the node where the code is allocated. In particular, an environment –called MODE– is described that permits: to promote distributed program development by several teams of people pursuing a common goal; to evaluate different method lookup strategies based on data / code mobility, with the aim of comparing different implementation solutions, both in terms of efficiency and usability. We have chosen Java as the implementation language to achieve interoperability. The features that promoted Java as de-facto standard (such as serialization and dynamic class loading) dictated this choice.