Sponsored Link •
Mobile agents have been around for many years, but they haven't yet entered the mainstream. This article takes a look at aglets, a mobile-agent technology built on top of Java.
Welcome to another edition of Under The Hood. Up to now, this column has focused on the inner workings of the Java virtual machine (JVM). I've written overviews of the JVM, the class file, and garbage collection, and have covered most of the JVM's bytecode instruction set. I have one final bytecode article coming in June, but this month I am going to begin expanding the column's scope. In the future, I plan to explore a broader array of topics. Each month I will focus on a particular aspect or application of Java technology, explain "how it works," and analyze what it means to Java developers.
This month's article looks at aglets, an innovation developed by IBM Japan.
Aglets: Not just for shoelaces anymore
According to Webster's Ninth New Collegiate Dictionary, an aglet is:
In other words, aglets are those little plastic tubes on the ends of your shoelaces. Now, however, there is a new definition of the word aglet: 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. An agent doesn't restart execution from the beginning at the new computer; it continues where it left off. For example, imagine an agent that increments a counter starting with zero. If that agent counts from zero to ten, then halts and ships itself to another computer, it will not start counting again at zero. It will continue counting starting with ten, because that was where it left off when it halted at its previous computer.
Agents are autonomous because they decide where they will go and what they will do. They control their lifetimes. They can receive requests from external sources, such as other agents, but each individual agent decides whether or not to comply with external requests. Also, agents can decide to perform actions, such as travel across a network to a new computer, independent of any external request.