A Language-Independent Platform for Transportable Agent Programming Holger Peine and Torsten Stolpmann University of Kaiserslautern, Germany {peine, stolp}@informatik.uni-kl.de 1. The Situation of Transportable Programs After raising considerable interest as a new concept for networked computing, transportable programs are rapidly entering every-day computing. However, this is happening in a rather ad-hoc manner, while many issues are still debated, as witnessed by the numerous approaches exploring diverging solutions. Besides pragmatic questions of organizing (multi-) agent applications and service infrastructures, many technical problems such as security, portability, efficiency and flexibility still await satisfactory solutions. 2. Rationale of the Ara System The Ara system is a run-time platform for transportable agents. Its basic idea is simply "Give programs the ability to move". That is, mobility is added to the well-developed world of programming, rather than attempt to build a new realm of "mobile programming". Mobility should be integrated as comfortably and unintrusively as possible with existing programming concepts - algorithms, languages, and programs. Ara lets agents move at their own choice and without interfering with their execution, utilizing various existing programming languages. Complementing this, the system provides facilities for access to system resources and agent interaction under the typical requirements of security and portability. The Ara project has been more targeted towards the technical problems of run-time architecture, language integration, and external interface, acting similar to a dedicated operating system for transportable agents. However, based upon this, the project will also address issues closer to the application, e.g. a service infrastructure and agent interaction patterns. 3. The Ara Architecture As in most mobile code platforms, transportable agent programs in Ara are executed by interpretation for reasons of security and portability. However, the relation between the run-time system, called the core, and interpreter is characteristic for Ara: Isolate the language-specific issues (e.g. how to capture the Tcl-specific state of an agent programmed in the Tcl programming language) in the interpreter, while concentrating all language-independent functionality (e.g. how to capture the general state of an agent and use that for transporting the agent) in the core. Thus several interpreters for different programming languages can be employed together on top of the common, generic core, which makes its services, e.g. agent interaction, uniformly available to agents in all languages. Currently, interpreters for Tcl and C/C++ have been adapted to the Ara core, and Java adaption is on the way. The functionality of the core is kept to a minimum, with higher-level services provided by dedicated server agents. Ara agents are autonomous processes, switched using a fast threads package while on one machine, and transparently transformed into a portable representation whenever they choose to move. Agents interact through n:1 synchronous message exchange at named meeting points. Ara uses the "padded cell" security model, with interpreters as cells; however, these cells may be of varying size in several dimensions: Each agent (or group thereof) is equipped with an "allowance" for accounting and (in the future) authorization of access to various resources. Application areas planned for Ara are information research and mobile computing: An application for content-directed searching of the Usenet is being implemented, and another providing meeting scheduling for mobile users is being defined. 4. Current Needs and Steps To Take Most of the technical problems involved with transportable agents appear solvable in principle. However, considerable work is still needed to arrive at a solution which strikes a satisfactory balance between the requirements. The tension between security on the one hand and power and efficiency on the other is a prominent example for this. Transportable agents are often discussed from point of view of programming languages. However, focussing too strongly on the language might unnecessarily impede the deployment of the transportable code concept. Experience from distributed programming rather suggests to employ libraries and run-time systems instead, interfaced from whatever languages seem appropriate for the application. The general justification of mobile code (as opposed to mobile data) is still questioned, apart from the specific application area of information presentation (e.g. web browsing). The perceived benefits of applications will also influence the difficult trade-offs involving security. Convincing applications are needed, and concepts from the work on intelligent agents may provide the missing link here. It seems most plausible that such applications should be developed in the area of information research.