The goal of JADE is to simplify the development of multi-agent systems while ensuring standard compliance through a comprehensive set of system services and agents in compliance with the FIPA specifications: naming service and yellow-page service, message transport and parsing service, and a library of FIPA interaction protocols ready to be used.
The JADE Agent Platform complies with FIPA specifications and includes all those mandatory components that manage the platform, that is the ACC, the AMS, and the DF. All agent communication is performed through message passing, where FIPA ACL is the language to represent messages.
The agent platform can be distributed on several hosts. Only one Java application, and therefore only one Java Virtual Machine (JVM), is executed on each host. Each JVM is basically a container of agents that provides a complete run time environment for agent execution and allows several agents to concurrently execute on the same host.
The communication architecture offers flexible and efficient messaging, where JADE creates and manages a queue of incoming ACL messages, private to each agent; agents can access their queue via a combination of several modes: blocking, polling, timeout and pattern matching based. The full FIPA communication model has been implemented and its components have been clearly distincted and fully integrated: interaction protocols, envelope, ACL, content languages, encoding schemes, ontologies and, finally, transport protocols. The transport mechanism, in particular, is like a chameleon because it adapts to each situation, by transparently choosing the best available protocol. Java RMI, event-notification, HTTP, and IIOP are currently used, but more protocols can be easily added via the MTP and IMTP JADE interfaces. Most of the interaction protocols defined by FIPA are already available and can be instantiated after defining the application-dependent behaviour of each state of the protocol. SL and agent management ontology have been implemented already, as well as the support for user-defined content languages and ontologies that can be implemented, registered with agents, and automatically used by the framework.
Basically, agents are implemented as one thread per agent, but agents often need to execute parallel tasks. Further to the multi-thread solution, offered directly by the JAVA language, JADE supports also scheduling of cooperative behaviours, where JADE schedules these tasks in a light and effective way. The run-time includes also some ready to use behaviours for the most common tasks in agent programming, such as FIPA interaction protocols, waking under a certain condition, and structuring complex tasks as aggregations of simpler ones. Among the others, JADE offers also a so-called JessBehaviour that allows full integration with JESS, where JADE provides the shell of the agent and guarantees (where possible) the FIPA compliance, while JESS is the engine of the agent that performs all the necessary reasoning. One of the examples shows integration between JADE, JESS and Protege.
The agent platform provides a Graphical User Interface (GUI) for the remote management, monitoring and controlling of the status of agents, allowing, for example, to stop and restart agents. The GUI allows also to create and start the execution of an agent on a remote host, provided that an agent container is already running. The GUI allows also to control other remote FIPA-compliant agent platforms.
A GUI of the DF can be launched from the Tools menu of the RMA. By using this GUI, the user can interact with the DF: view the descriptions of the registered agents, register and deregister agents, modify the description of registered agent, and also search for agent descriptions. The GUI allows also to federate the DF with other DF’s and create a complex network of domains and sub-domains of yellow pages. Any federated DF, even if resident on a remote non-JADE agent platform, can also be controlled by the same GUI and the same basic operations (view / register / deregister / modify / search) can be executed on the remote DF.
Upon the core of JADE a number of graphical tools have been implemented that supports the debugging phase, usually quite complex in distributed systems.
The Dummy Agent is a simple yet very useful tool for inspecting message exchanges among agents. The dummy agent facilitates validation of an agent interface before integration into the MAS and facilitates interrogative testing in the event that an agent is failing. The graphical interface provides support to edit, compose and send ACL messages to agents, to receive and view messages from agents, and, eventually, to save/ load messages to/from disk.
The Sniffer Agent, as the name itself points out, allows to track messages exchanged in a JADE agent platform. When the user decides to sniff an agent, or a group of agents, every message directed to or coming from that agent, or group of, is tracked and displayed in the sniffer window. The user can view, save, and load, every message track for later analysis.
The Introspector Agent allows to monitor and control the life-cycle of a running agent and its exchanged messages, both the queue of sent and received messages.
The development of JADE is still continuing. Further improvements, enhancements, and implementations have already been planned, most of them in collaboration with interested users of the JADE community.