Como sabemos JADE es un framework para el desarrollo de sistemas multiagentes desarrollado completamente en java y que cumple al 100% con las especificaciones de FIPA. Para instalarlo en una distribución linux es necesario seguir los siguientes pasos:
- Registrarse como usuario en la página principal de tilab
- Descargar la última versión de Jade all, que es un zip que contiene los binarios, los fuentes, la documentación y los ejemplos.
- Descomprimirla en /home/Documents/Frameworks, lo que nos creará una carpeta llamada JADE-all-4.1, dentro de la que encontraremos cuatro archivos comprimidos.
- Descomprimimos JADE-bin-4.1.zip, lo que nos creará una carpeta llamada jade, dentro de la cual aparecen dos carpetas (lib y demo), la carpeta lib/ contiene los binarios de JADE.
- Agregamos la ruda al classpath para no tener que escribirla cada que se ejecute el jar.
- Abrimos un terminal y escribimos gedit .bashrc, agregamos las siguientes lineas:
export JADE_HOME=/home/nvcesar/Documents/Frameworks/JADE-all-4.1/jade
export CLASSPATH=$JADE_HOME/lib/jade.jar:$JADE_HOME/lib/commons-codec/commons-codec.jar:$CLASSPATH:.
export CLASSPATH=$JADE_HOME/lib/jade.jar:$JADE_HOME/lib/commons-codec/commons-codec.jar:$CLASSPATH:.
- Guardamos y cerramos.
- Por último, sin importar en que ruta nos encontremos, en una consola ejecutamos:
java jade.Boot -gui -host localhost
Despues de hecho lo anterior nos aparece la ventana de RMA, que podemos utilizar para probar el funcionamiento y comportamiento de los agentes que se desarrollen.
Ahora para la creación de los proyectos se utilizará el IDE de desarrollo Netbeans 7.0 con maven debido a la facilidad que se obtiene con maven en el manejo de dependencias. Es por ello que debido a que en los repositorios de Maven no se encuentran aun alojadas las librerias de jade, es necesario instalarlas manualmente, para ello desde una consola ejecutamos:
mvn install:install-file -DgroupId=com.tilab.jade -DartifactId=jade-core -Dversion=4.1 -Dpackaging=jar -Dfile=$JADE_HOME/lib/jade.jar
Con esto queda instalada en nuestro repositorio central de maven y podemos incluirla en nuestros proyectos agregando la siguiente dependencia al archivo pom.xml:
<dependency>
<groupId>com.tilab.jade</groupId>
<artifactId>jade-core</artifactId>
<version>4.1</version>
</dependency>
<groupId>com.tilab.jade</groupId>
<artifactId>jade-core</artifactId>
<version>4.1</version>
</dependency>
Ahora cuando compilamos un proyecto con maven, dentro de la carpeta de nuestro proyecoto que generalmente es /ruta/NetBeansProjects/proyecto nos crea una carpeta llamada target/classes, dentro de una consola nos posicionamos en esa carpeta y ejecutamos
java jade.Boot -gui -host localhost miAgente:paquete.Agente
Donde miAgente es el nombre que quieres que tenga el agente y paquete.Agente es el nombre de la clase java compilada sin el .class. La salida de la consola deberá ser parecida a la siguiente:
Nov 16, 2011 2:26:36 PM jade.core.Runtime beginContainer
INFO: ----------------------------------
This is JADE 4.1 - revision 6431 of 2011/07/12 18:53:42
downloaded in Open Source, under LGPL restrictions,
at http://jade.tilab.com/
----------------------------------------
Retrieving CommandDispatcher for platform null
Nov 16, 2011 2:26:36 PM jade.imtp.leap.LEAPIMTPManager initialize
INFO: Listening for intra-platform commands on address:
- jicp://127.0.1.1:1099
Nov 16, 2011 2:26:37 PM jade.core.BaseService init
INFO: Service jade.core.management.AgentManagement initialized
Nov 16, 2011 2:26:37 PM jade.core.BaseService init
INFO: Service jade.core.messaging.Messaging initialized
Nov 16, 2011 2:26:37 PM jade.core.BaseService init
INFO: Service jade.core.resource.ResourceManagement initialized
Nov 16, 2011 2:26:37 PM jade.core.BaseService init
INFO: Service jade.core.mobility.AgentMobility initialized
Nov 16, 2011 2:26:37 PM jade.core.BaseService init
INFO: Service jade.core.event.Notification initialized
Nov 16, 2011 2:26:37 PM jade.mtp.http.HTTPServer <init>
INFO: HTTP-MTP Using XML parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
Nov 16, 2011 2:26:37 PM jade.core.messaging.MessagingService boot
INFO: MTP addresses:
http://nvcesar-ThinkCentre-M58:7778/acc
Nov 16, 2011 2:26:37 PM jade.core.AgentContainerImpl joinPlatform
INFO: --------------------------------------
Agent container Main-Container@127.0.1.1 is ready.
--------------------------------------------
El agente miAgente@127.0.1.1:1099/JADE está listo
INFO: ----------------------------------
This is JADE 4.1 - revision 6431 of 2011/07/12 18:53:42
downloaded in Open Source, under LGPL restrictions,
at http://jade.tilab.com/
----------------------------------------
Retrieving CommandDispatcher for platform null
Nov 16, 2011 2:26:36 PM jade.imtp.leap.LEAPIMTPManager initialize
INFO: Listening for intra-platform commands on address:
- jicp://127.0.1.1:1099
Nov 16, 2011 2:26:37 PM jade.core.BaseService init
INFO: Service jade.core.management.AgentManagement initialized
Nov 16, 2011 2:26:37 PM jade.core.BaseService init
INFO: Service jade.core.messaging.Messaging initialized
Nov 16, 2011 2:26:37 PM jade.core.BaseService init
INFO: Service jade.core.resource.ResourceManagement initialized
Nov 16, 2011 2:26:37 PM jade.core.BaseService init
INFO: Service jade.core.mobility.AgentMobility initialized
Nov 16, 2011 2:26:37 PM jade.core.BaseService init
INFO: Service jade.core.event.Notification initialized
Nov 16, 2011 2:26:37 PM jade.mtp.http.HTTPServer <init>
INFO: HTTP-MTP Using XML parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
Nov 16, 2011 2:26:37 PM jade.core.messaging.MessagingService boot
INFO: MTP addresses:
http://nvcesar-ThinkCentre-M58:7778/acc
Nov 16, 2011 2:26:37 PM jade.core.AgentContainerImpl joinPlatform
INFO: --------------------------------------
Agent container Main-Container@127.0.1.1 is ready.
--------------------------------------------
El agente miAgente@127.0.1.1:1099/JADE está listo
Hola amigo,
ResponderEliminarExcelente guia, me ayudo mucho, te lo agradezco, solo un detalle minusculo esta línea:
export CLASSPATH=$JADE_HOME/lib/jader.jar:$JADE_HOME/lib/commons-codec/commons-codec.jar:$CLASSPATH:.
escribiste jader.java y es jade.java
se que es pequeño pero ello evita que se pueda ejecutar bien.
muchas gracias por todo ...