Intelligent Agent Technologies and JADE Framework: Part II
Posted On April 17, 2006 by Sneha Philipose filed under Miscellaneous
JADE
JADE is a software framework and middleware enabling technology for developing multi-agent systems. As a FIPA-compliant agent platform, JADE provides an implementation for the following components:
Ø Agent Management System (AMS): This agent is responsible for controlling access to the platform, authentication and registration of participating agents;
Ø Directory Facilitator (DF): This agent provides a yellow page service to the agents in the platform; and
Ø Agent Communication Channel (ACC): This agent provides a white page service. It also supports inter-agent communication and interoperability within and across different platforms.
JADE also provides an implementation of the full FIPA communication model, i.e. agent interaction protocols (AIPs), FIPA Agent Communication Language (ACL), SL content language, ontology support and transport protocols.
JADE is written in Java language and comprises various Java packages, thereby providing application programmers both ready-made pieces of functionality as well as abstract interfaces for custom, application-dependent tasks. Java was the programming language of choice because of its many attractive features, particularly as Java is geared towards object-oriented programming in distributed heterogeneous environments. Some of the features are object serialization, reflection API and remote method invocation (RMI).

JADE is composed of the following main packages:
Ø The jade.core implements the kernel of the system. It includes the Agent class that must be extended by application programmers; besides, a Behaviour class hierarchy is contained in jade.core.behaviours sub-package. Behaviours implement the tasks, or intentions, of an agent. They are logical activity units that can be composed in various ways to achieve complex execution patterns and can be executed concurrently. Application programmers define agent operations writing behaviours and agent execution paths interconnecting them.
Ø The jade.lang.acl sub-package is provided to process Agent Communication Language according to FIPA standard specifications.
Ø The jade.content package contains a set of classes to support user-defined ontologies and content-languages. A separate tutorial describes how to use JADE support to message content. In particular, jade.content.lang.sl contains the SL codec2, both parser and encoder.
Ø The jade.domain package contains all those Java classes that represent the Agent Management entities defined by the FIPA standard, particularly the AMS and DF agents, that provide life cycle, white and yellow page services. The sub-package jade.domain.FIPAAgentManagement contains the FIPA Agent Management Ontology and all the classes representing its concepts.
Ø The sub-package jade.domain.JADEAgentManagement contains, instead, the JADE extensions for Agent Management (e.g. for sniffing messages, controlling the life cycle of agents, etc.), including the ontology and all the classes representing its concepts. The sub-package jade.domain.introspection contains the concepts used for the domain of discourse between the JADE tools (e.g. Sniffer and Introspector) and the JADE kernel. The sub-package jade.domain.mobility contains all concepts used to communicate about mobility.
Ø The jade.gui package contains a set of generic classes useful to create GUIs to display and edit Agent-Identifiers, Agent Descriptions, ACLMessages, etc.
Ø The jade.mtp package contains a Java interface that every Message Transport Protocol should implement in order to be readily integrated with the JADE framework and the implementation of a set of these protocols.
Ø The jade.proto is the package that contains classes to model standard interaction protocols (i.e. fipa-request, fipa-query, fipa-contract-net, fipa-subscribe and soon others defined by FIPA), as well as classes to help application programmers create protocols of their own.
Ø The FIPA package contains the IDL module defined by FIPA for IIOP-based message transport.
Ø Finally, the jade.wrapper package provides wrappers of the JADE higher-level functionalities that allow the usage of JADE as a library, where external Java applications launch JADE agents and agent containers.

JADE comes bundled with some tools that simplify platform administration and application development. Each tool is contained in a separate sub-package of jade.tools. Currently, the following tools are available:
Ø Remote Management Agent, RMA for short, acting as a graphical console for platform management and control. The first instance of an RMA can be started with a command line option ("-gui"), but then more than one GUI can be activated. JADE maintains coherence among multiple RMAs by simply multicasting events to all of them. Moreover, the RMA console is able to start other JADE tools;
Ø Dummy Agent is a monitoring and debugging tool, made of a graphical user interface and an underlying JADE agent. Using the GUI, it is possible to compose ACL messages and send them to other agents; it is also possible to display a list of all the ACL messages sent or received, complete with timestamp information in order to allow agent conversation recording and rehearsal;
Ø Sniffer is an agent that can intercept ACL messages while they are in flight and displays them graphically using a notation similar to UML sequence diagrams. It is useful for debugging your agent societies by observing how they exchange ACL messages;
Ø Introspector is an agent that allows to monitor the life cycle of an agent, its exchanged ACL messages and the behaviours in execution;
Ø DF GUI is a complete graphical user interface that is used by the default Directory Facilitator (DF) of JADE and that can also be used by every other DF that the user might need. As such, the user might create a complex network of domains and sub-domains of yellow pages. This GUI allows a simple and intuitive way to control the knowledge base of a DF, to federate a DF with other DF's and to remotely control (register/deregister/modify/search) the knowledge base of the parent DF's as well as children DF's (implementing the network of domains and subdomains);
Ø LogManagerAgent is an agent that allows setting at runtime logging information, such as the log level, for both JADE and application specific classes that use Java Logging; and
Ø The SocketProxyAgent is a simple agent acting as a bidirectional gateway between a JADE platform and an ordinary TCP/IP connection. ACL messages, traveling over JADE proprietary transport service, are converted into simple ASCII strings and sent over a socket connection. Vice-versa, ACL messages can be tunneled via this TCP/IP connection into the JADE platform. This agent is useful, for example, to handle network firewalls or provide platform interactions with Java applets within a web browser.
Sunil Kr. Pandey is an Asst. Professor at the School of Management Sciences, Varanasi. He can be reached at: sunilmca5@rediffmail.com. R.B. Mishra, a ‘Reader’ with Benaras Hindu University, Varanasi, is available at: rbmbhu@yahoo.com.
JADE is a software framework and middleware enabling technology for developing multi-agent systems. As a FIPA-compliant agent platform, JADE provides an implementation for the following components:
Ø Agent Management System (AMS): This agent is responsible for controlling access to the platform, authentication and registration of participating agents;
Ø Directory Facilitator (DF): This agent provides a yellow page service to the agents in the platform; and
Ø Agent Communication Channel (ACC): This agent provides a white page service. It also supports inter-agent communication and interoperability within and across different platforms.
JADE also provides an implementation of the full FIPA communication model, i.e. agent interaction protocols (AIPs), FIPA Agent Communication Language (ACL), SL content language, ontology support and transport protocols.
JADE is written in Java language and comprises various Java packages, thereby providing application programmers both ready-made pieces of functionality as well as abstract interfaces for custom, application-dependent tasks. Java was the programming language of choice because of its many attractive features, particularly as Java is geared towards object-oriented programming in distributed heterogeneous environments. Some of the features are object serialization, reflection API and remote method invocation (RMI).

JADE is composed of the following main packages:
Ø The jade.core implements the kernel of the system. It includes the Agent class that must be extended by application programmers; besides, a Behaviour class hierarchy is contained in jade.core.behaviours sub-package. Behaviours implement the tasks, or intentions, of an agent. They are logical activity units that can be composed in various ways to achieve complex execution patterns and can be executed concurrently. Application programmers define agent operations writing behaviours and agent execution paths interconnecting them.
Ø The jade.lang.acl sub-package is provided to process Agent Communication Language according to FIPA standard specifications.
Ø The jade.content package contains a set of classes to support user-defined ontologies and content-languages. A separate tutorial describes how to use JADE support to message content. In particular, jade.content.lang.sl contains the SL codec2, both parser and encoder.
Ø The jade.domain package contains all those Java classes that represent the Agent Management entities defined by the FIPA standard, particularly the AMS and DF agents, that provide life cycle, white and yellow page services. The sub-package jade.domain.FIPAAgentManagement contains the FIPA Agent Management Ontology and all the classes representing its concepts.
Ø The sub-package jade.domain.JADEAgentManagement contains, instead, the JADE extensions for Agent Management (e.g. for sniffing messages, controlling the life cycle of agents, etc.), including the ontology and all the classes representing its concepts. The sub-package jade.domain.introspection contains the concepts used for the domain of discourse between the JADE tools (e.g. Sniffer and Introspector) and the JADE kernel. The sub-package jade.domain.mobility contains all concepts used to communicate about mobility.
Ø The jade.gui package contains a set of generic classes useful to create GUIs to display and edit Agent-Identifiers, Agent Descriptions, ACLMessages, etc.
Ø The jade.mtp package contains a Java interface that every Message Transport Protocol should implement in order to be readily integrated with the JADE framework and the implementation of a set of these protocols.
Ø The jade.proto is the package that contains classes to model standard interaction protocols (i.e. fipa-request, fipa-query, fipa-contract-net, fipa-subscribe and soon others defined by FIPA), as well as classes to help application programmers create protocols of their own.
Ø The FIPA package contains the IDL module defined by FIPA for IIOP-based message transport.
Ø Finally, the jade.wrapper package provides wrappers of the JADE higher-level functionalities that allow the usage of JADE as a library, where external Java applications launch JADE agents and agent containers.

JADE comes bundled with some tools that simplify platform administration and application development. Each tool is contained in a separate sub-package of jade.tools. Currently, the following tools are available:
Ø Remote Management Agent, RMA for short, acting as a graphical console for platform management and control. The first instance of an RMA can be started with a command line option ("-gui"), but then more than one GUI can be activated. JADE maintains coherence among multiple RMAs by simply multicasting events to all of them. Moreover, the RMA console is able to start other JADE tools;
Ø Dummy Agent is a monitoring and debugging tool, made of a graphical user interface and an underlying JADE agent. Using the GUI, it is possible to compose ACL messages and send them to other agents; it is also possible to display a list of all the ACL messages sent or received, complete with timestamp information in order to allow agent conversation recording and rehearsal;
Ø Sniffer is an agent that can intercept ACL messages while they are in flight and displays them graphically using a notation similar to UML sequence diagrams. It is useful for debugging your agent societies by observing how they exchange ACL messages;
Ø Introspector is an agent that allows to monitor the life cycle of an agent, its exchanged ACL messages and the behaviours in execution;
Ø DF GUI is a complete graphical user interface that is used by the default Directory Facilitator (DF) of JADE and that can also be used by every other DF that the user might need. As such, the user might create a complex network of domains and sub-domains of yellow pages. This GUI allows a simple and intuitive way to control the knowledge base of a DF, to federate a DF with other DF's and to remotely control (register/deregister/modify/search) the knowledge base of the parent DF's as well as children DF's (implementing the network of domains and subdomains);
Ø LogManagerAgent is an agent that allows setting at runtime logging information, such as the log level, for both JADE and application specific classes that use Java Logging; and
Ø The SocketProxyAgent is a simple agent acting as a bidirectional gateway between a JADE platform and an ordinary TCP/IP connection. ACL messages, traveling over JADE proprietary transport service, are converted into simple ASCII strings and sent over a socket connection. Vice-versa, ACL messages can be tunneled via this TCP/IP connection into the JADE platform. This agent is useful, for example, to handle network firewalls or provide platform interactions with Java applets within a web browser.
Sunil Kr. Pandey is an Asst. Professor at the School of Management Sciences, Varanasi. He can be reached at: sunilmca5@rediffmail.com. R.B. Mishra, a ‘Reader’ with Benaras Hindu University, Varanasi, is available at: rbmbhu@yahoo.com.
