Sponsored Link •
Mobile agents have been around for many years, but they haven't yet entered the mainstream. This article answers the question, Why would developers choose mobile agents over other software technologies, such as client/server, applets, and servlets, for solving real-world problems?
This month's Under the Hood is the second in a two-part series of articles about aglets, an innovation developed by IBM Japan. Last month I described the inner workings of aglets, this month I'll discuss the ways in which mobile agent technologies, such as aglets, might fit into the Java developer's toolbox.
Aglets: A refresher
An aglet is a Java-based autonomous software agent. As used here, a software agent is a program that can halt itself, ship itself to another computer on the network, and continue execution at the new computer. The key feature of this kind of software agent is that both its code and state are mobile.
Aglets are autonomous because once you start them, they decide where they will go and what they will do. They can receive requests from external sources, but each individual aglet decides whether or not to comply with external requests. Also, aglets can decide to perform actions, such as travel across a network to a new computer, independent of any external request.
At heart, aglets are mobile
People use the term "software agent" to talk about more than just mobile agents. Two other meanings of the term are intelligent agents and representatives. Intelligent agents are endowed to some degree with artificial intelligence. They may be mobile as well as intelligent, but they don't have to be mobile. A representative is a piece of software that represents you, like an attorney or an assistant. Representatives stand in for you in your absence. Depending on your instructions to them, representatives can make decisions or even consummate deals on your behalf. Representative agents can be mobile or intelligent or both, but they don't have to be mobile.
Aglets can potentially be endowed with artificial intelligence or serve as representatives, but they need not be either. Fundamentally, they are mobile agents: Java programs that can halt execution, travel across the network (both code and state), and continue execution at another host.