A mobile agent can be written as a program that executes on a set of network hosts. The agent visits the network hosts to execute parts of its program. The agent may need, for example, to access information located on a given network host or there may be some preference to execute parts of its program on various network hosts.
In prior art systems, the sequence of hosts that the agent visits is statically pre-configured when an agent program is written. Furthermore, the agent in these systems must execute an explicit instruction to move to another remote network host. For example, U.S. Pat. No. 5,603,031, issued Feb. 11, 1997, entitled "System and Method for Distributed Computation Based Upon the Movement, Execution, and Interaction of Processes in a Network," by White et al., describes a method for statically pre-configuring an agent's itinerary in a destination list composed of destination objects. Each destination object has a telename and a teleaddress preassigned to specific regions of the network. In the system disclosed in White et al., an agent must execute a "go" statement to move to another network host to access resources located at that host.
There are many other examples of this explicit agent relocation requirement. In Lange et. al., IBM Aglets Workbench--Programming Mobile Agents in Java, Proceedings of 1997 World Wide Computing and Its Applications, Japan, pp. 253-266, the authors suggest that an agent execute the "dispatch" statement to move to another network host. In Cardelli, A Language with Distributed Scope, Computing Systems, Vol. 8, No. 1, Winter 1995, pp. 27-59, Cardelli describes a system wherein object migration is achieved by explicitly copying the object (agent) state. Finally, in Chess et al., Itinerant Agents for Mobile Computing, available as IBM Research Report RC-20010, the authors state the need for explicit primitives and mobility support to make an agent move to another network host.
Systems that require this explicit agent relocation suffer from increased programming complexity because the programmer must be aware of the location where a particular piece of code would execute. As a result, the application code has to be organized into location-sensitive blocks with explicit instructions for agent relocation demarcating the blocks. Location awareness distracts the programmer from focusing solely on developing application logic. This reduces programmer productivity.
Thus, there is a need for a system which permits a program (agent) to execute throughout a network without the need for explicit agent relocation, thereby improving programmer productivity.