i want a framework for creating and deploying mobile agents in java without using any available technology like jini
## Deliverables
need an interface for agent like described below
abstract public class Agent
{
/**
* The runtime calls initialize() exactly once --
* after the agent is created.
*
*/
abstract public void initialize();
/**
* The runtime calls start() whenever an agent must be
* started.
*
*/
abstract public void start();
/**
* The runtime calls stop() whenever an agent must be
* stopped -- either to transfer it, to store it, or to terminate it.
*
* An agent whose stop() method is called should
* stop all computation, store any intermediate results, join all
* active threads, and promptly return.
*
*/
abstract public void stop();
/**
* The runtime calls conclude() exactly once -- before
* the agent is destroyed.
*
*/
abstract public void conclude();
}
and also
agent should be able to migrate from remotehost to local host as explained below
1. The remote host notifies the local host of its desire to transfer an agent by invoking the remote agent's `requestToSend()` method.
2. The local host marks the beginning of the transfer by invoking the remote host's `beginTransfer()` method. The remote host in turn invokes the agent's `stop()` method. When the `stop()` method returns, the agent is ready for transfer.
3. The local host gets the resource piece of the agent by invoking the remote host's `transferResource()` method. The remote host returns the resource piece as an array of bytes.
4. The local host gets the data piece of the agent by invoking the remote host's `transferData()` method. The remote host returns the data piece as an array of bytes.
5. The local host marks the end of the transfer by invoking the remote host's `endTransfer()` method. It then resurrects the agent by calling the agent's `start()` method
here resources means the instructions which agent should execute and data is the snapshot of agent state i.e snapshot of agent datastructures...
## Platform
java