Mobile Agents are autonomous, intelligent programs that move through a network, searching for and interacting with services on the user's behalf. These systems use specialized servers to interpret the agent's behaviour and communicate with other servers. A Mobile Agent has inherent navigational autonomy and can ask to be sent to some other nodes.
Mobile Agents should be able to execute on every machine in a network and the agent code should not have to be installed on every machine the agent could visit. Therefore Mobile Agents use mobile code systems like Java and the Java virtual machine where classes can be loaded at runtime over the network.