Java Agent DEvelopment Framework, o JADE, es una plataforma software para el desarrollo de agentes, implementada en Java. La plataforma JADE soporta la coordinación de múltiples agentes FIPA y proporciona una implementación estándar del lenguaje de comunicación FIPA-ACL, que facilita la comunicación entre agentes y permite la detección de servicios que se proporcionan en el sistema. JADE fue desarrollado originalmente por Telecom Italia y se distribuye como software libre.
JADE | ||
---|---|---|
Información general | ||
Tipo de programa | Sistema multi-agente Marco de software | |
Lanzamiento inicial | 2000 | |
Licencia | GNU Lesser General Public License | |
Idiomas | inglés | |
Información técnica | ||
Programado en | Java | |
Plataformas admitidas | Java | |
Versiones | ||
Última versión estable | 4.5.0 ( 08 de junio de 2017 (7 años, 6 meses y 3 días)) | |
Enlaces | ||
Sitio web oficial
| ||
JADE es un middleware que facilita el desarrollo de sistemas multi-agente bajo el estándar FIPA para lo cual crea múltiples contenedores destinados a los agentes, cada uno de los cuales puede ejecutarse en uno o en varios sistemas. Queda establecido que un conjunto de contenedores constituye una plataforma.
Adicionalmente JADE proporciona:
JADE fue desarrollado inicialmente por Telecom Italia Lab. Este sector es la rama de I + D del Grupo Telecom Italia que se encarga de promover la innovación tecnológica. Telecom Italia concibió y promovió JADE, fundándolo en el año 2000. La última versión disponible data del mes de marzo de 2013 (versión 4.3) La primera versión de JADE distribuida como software libre está disponible desde el mes de febrero del 2000 (versión 1.3).[1]
En marzo de 2003 Motorola y Telecom Italia crearon la JADE Governing Board con el objetivo de promover la evolución y la adopción de JADE en la industria de las telecomunicaciones móviles como middleware de base. Dicha organización (JADE Governing Board) acepta a toda empresa y/o organización interesada en el uso comercial y explotación de JADE que se comprometan a su desarrollo y promoción.
Se trata de una plataforma de agentes distribuida, que tiene un contenedor por cada host en el que se están ejecutando los agentes. De manera adicional la plataforma posee diferentes herramientas de depuración, movilidad de los agentes de código y contenido, la posibilidad de la ejecución paralela del comportamiento de los agentes, así como el soporte para la definición de lenguajes y ontologías. Cada plataforma debe tener un contenedor principal que tiene dos agentes especiales denominados AMS y DF.[2]
Para acceder al agente DF se usa la clase "jade.domain.DFService" y sus métodos estáticos: register, deregistrer, modify y Search.
Para acceder a la información del AMS Service se crea un agente el cual se ejecuta automáticamente el método register del AMS por defecto antes de ejecutar el método setup del nuevo agente. Cuando se destruye un agente se ejecuta su método takedown() y automáticamente se llama a deregister del AMS por defecto.
La clase Agent es una super clase común que permite a los usuarios crear software de agentes JADE. Para crear un agente solo hay que heredar de la clase Agent(). Habitualmente cada agente registrará varios servicios los cuales a su vez deberían de ser implementados por uno o más comportamientos.
Esta clase suministra métodos que permiten ejecutar las tareas básicas de los agentes como:
El ciclo de vida de un agente JADE sigue el ciclo propuesto por FIPA. Estos agentes pasaran por diferentes estados definidos como:
El comportamiento define las acciones bajo un determinado evento. Dicho comportamiento del agente se define en el método setup mediante el método addBehaviour. Los diferentes comportamientos que el agente adoptará se definen a partir de la clase abstracta Behaviour. La clase Behaviour contiene los métodos abstractos:
Por otra parte el usuario puede redefinir los métodos onStart() y onEnd() que el agente poseerá. Adicionalmente existen otros métodos como block() y restart() usados para la modificación del comportamiento del agente. Cuando un agente esté bloqueado se puede desbloquear de diferentes maneras.
El paso de mensajes ACL (Agent Communication Language) es la base de la comunicación entre agentes. El envío de mensajes se realiza mediante el método send de la clase Agent. A dicho método hay que pasarle un objeto de tipo ACLMessage que contiene la información de los destinatarios, lenguaje, codificación y el contenido del mensaje. Estos mensajes se envían de modo asíncrono, mientras que los mensajes que se van recibiendo se irán almacenando en una cola de mensajes. Existen dos tipos de recepción de los mensajes ACL, bloqueante o no bloqueante. Para ello se proporcionan los métodos blockingReceive() y receive() respectivamente. En ambos métodos se puede hacer filtrado de los mensajes que se quieren recuperar de la cola estableciendo diferentes plantillas.
JADE tiene una extensión denominada WADE (Workflows and Agents Development Environment) que es un sistema de workflow que permite crear procesos mediante un editor gráfico llamado WOLF.