2.2 A Short History of Mobile Agents 17
execution state. At site S
, virtual machine M
executes the code, providing
access to the resources located at S
. Later, the code may decide that it needs
other resources at other sites, (e.g., S
), in which case the code will migrate
to another computer again.
Mobile Agents Need an Environment
Obviously, mobile agents need some kind of environment to become “alive.”
What we have simpliﬁed as virtual machine in Figure 2.2 actually consists
not only of the interpreter for the programming language but also of the
execution environment for agents, which is called the agent server or agency.
An agency is responsible for hosting and executing agents in parallel and
provides them with an environment so that they can access services, commu-
nicate with each other, and, of course, migrate to other agencies. An agency
also controls the execution of agents and protects the underlying hardware
from unauthor ized access by malicious agents.
Today, many different types of agencies exist. Many universities and also
some companies have developed their own product, and we will use the
name mobile agent toolkit in the following to describe such a product. The
most prominent examples today are Aglets by IBM and Grasshopper by IKV.
Later in this book, we introduce Tracy, which is the mobile agent toolkit that
was developed by our team at the University of Jena.
A single agency only rarely makes sense, particularly in the case of mobile
agents. In addition, even a network of several agencies is still not thrilling
unless some mobile agents are roaming the network, using services to fulﬁll
some task. Therefore, we will discuss at least two agencies, which then form
a mobile agent system that deﬁnes the space in which agents live.
2.2 A Short History of Mobile Agents
As we have pointed out, the mobile agent paradigm relies heavily on the idea
of mobile code. Thus, to some extent, we must consider mobile code as an
ancestor of mobile agents.
2.2.1 The Early Approaches of Mobile Code
The idea of sending code in an architecture-independent for mat to dif-
ferent hosts via a network was mentioned, probably for the ﬁrst time, by