JADE程序员指导
Jade集成开发环境是一个入门级的产品,但是它仍然拥有强大的功能。它提供的用户图形界面包含了大部分SUN SDK工具,可以方便的编辑源代码,生成一个类,执行一个java程序或java applet. Jade提供的高效率的功能可以让你为每个project生成单独的类模板,这个功能包括生成使用AWT或 Swing APIs对话窗口。Jade可以使用Sure shot的Jive Lint支持静态代码检查,同时也提供了入门级的调试功能。新版本提供了如下功能:允许用户在XML编辑器中调用用户提供的函数;方法定位(method location)采用了树形视图。
1简介
程序员指南由管理员指南作为补充,在jade/doc目录下可以到可用的HTML文档。如果本指南和HTML文档之间哪里出现了冲突,以经常更新的HTML文档为准。
JADE(Java Agent Development Framework)是一个软件开发框架,它可以为智能AGENT开发多AGENT系统和遵守FIAP协议的应用程序。它包含两个主要的产品:一个是与FIPA相适应的agent平台,另一个是开发Java agents的包。JADE是完全用JAVA编码的,如果agent程序员想探索本框架,他/她的agents就应该按照这个程序员指南中描述的大纲用Java编码。
这个指南是在假设读者熟悉FIPA标准,至少是熟悉Agent Management specifications(FIPA no.23),Agent Communication Language和ACL Message Structure(FIPA no.61)的基础上编写的
JADE是用JAVA写的由各种JAVA包构成,给程序设计者以完备的功能接口和规范的抽象性界面,具体应用取决与任务。选择JAVA语言是因为它有许多独特的特点,尤其是在分布式异质环境下的面向对象的编程连接方式;这些特点还包括Object Serialization, Reflection API和Remote Method Invocation(RMI)。
JADE由如下的包构成:
-执行系统核心问题,包括必须由软件程序员扩展的Agent类,除此之外一个行为类包含在behaviours子包内。行为执行agent的任务或目的。它们是可以完成不同复杂任务或并行任务的逻辑行为单元。程序员编写行为定义agent的操作,并相互连接他们定义agent执行路径。
jade.lang.acl子包用来根据FIAP标准规范处理ACL的。
ent子包包含了一系列支持用户定义的本体和内容语言的类。单独有一个指南描述如何使用JADE支持消息内容。尤其是t.lang.sl包含了SL编码解码器,包含有皮剖析器和解码器。
jade.domainb包:包含了FIPA标准定义的表示Agent管理实体的所有Java类,特别是AMS agents和DF agents,提供生命周期服务,白页和黄页服务。子包jade.domain.FIPAAgentManagemnt包含FIPA-Agent-Management Ontology和所有表示它的概念的类。而子包jade.domain.JADEAgentManagemnt包含JADE的Agent管理的扩展名(比如,为sniffing messages,controlling the life-cycle of agents,…),包括本体和表示它的概念所有类。子包jade.domain.introspection包含用于JADE工具(比如,sniffer和Introspector)间引用域和JADE核心的概念。子包bility包含用于移动通信的概念。
jade.gui包:包含了一系列有助于创建GUIs的普通类,用于显示和编辑Agent-Identifiers,Agent Descriptions,ACLMessages,…
p包:包含一个为容易地与JADE框架整合,每一个MTP都应该执行的Java接口,和
一系列这些协议的实现。
jade.proto包:包含模拟标准交互协议(例如:fipa-request, fipa-query, fipa-contract-net, fipa-subscribe和由FIPA定义的其它一些协议)的类,和帮助程序员创建他们自己的协议的类。
FIPA包包含由FIPA为基于IIOP的消息传输定义的IDL模块。
最后,jade.wrapper包提供JADE高层次封装功能,这可以将JADE的用法作为库,从而使外部的Java程序启动JADE agents和agent容器(见3.8节)。
JADE还包括一些工具,用来简化平添管理和应用开发。每个工具包含在ls的一个单独的包内。目前,以下工具是可用的:
Remote Management Agent(RMA):作为平台管理和控制的图形控制台。第一个RMA实例可以通过命令行选项(“-gui”)来启动,但是以后可以激活多个GUI。通过简单的用多台调频发射机向所有RMAs播送一个事件,JADE在多RMAs保持一致性。而且,RMA控制台能启动其它JADE工具。
Dummy Agent:是一个监控和调试工具,由图形用户界面和潜在的JADE agent构成。用GUI可能写出ACL消息,并将消息发送给其他agents;也可能显示所有发送或接收到的ACL消息,以及为了便于agent通话记录和复述的时间戳信息。
Sniffer:是一个在ACL消息传输时可以截取ACL消息,并用类似与UML程序表的符号将消息图形式显示的agent。它有助于通过观察agents如何交换ACL消息来调试你的agent社会。
Introspector:可以监控agent生命周期,它交换的ACL消息和执行的行为的agent。
DF GUI:是一个完全的图形用户界面,被默认的JADE DF使用,也可以被其它每一个用户可能需要的DF使用。以这种方式,用户可能创黄页域和子域的复杂网络。GUI可以用简单直觉的方式控制DF的知识库,使DF和其它DF联合,和远程控制(注册/注销/修改/搜索)DF父亲DF和孩子DF的知识库(执行域和子域网络)。
LogManagerAgent:允许在运行时设置日志信息,如日志水平,对于用Java日志的JADE和程序应用的特殊类来说。
SocketProxyAgent:是一个普通的agent,作为JADE平台和普通TCP/IP连接间的双向通道。
仔细考虑JADE所有的传输服务,ACL消息被转换成简单的ASCII字符串并通过套接字连接传输。反过来,ACL消息可以通过TCP/IP连接到JADE平台传送。这个agent是有用的,例如,处理网络防火墙或在Web浏览器中提供与Java applets交互的平台。
JADETM是一个由CSELT3注册的商标。
JADE由五部分组成:混淆器、加密器、封装器、类编辑器和输出工具。
混淆器能够保护软件使之不被反编译。它通过混淆类文件使得反编译无效,并把敏感的名字指代变成另一个名字空间,这样可以使反编译的结果毫无疑义。混淆器有“完全”和“快速”两种选项,能处理任何Java产品包括API,应用程序和小程序。它遵从Java虚拟机规范。
加密器隐藏和加密用户产品的主类,处理的结果是一个类文件。它为编码和反编码提供了一个界面。JADE有一些类用DES完成这个界面。加密和解密的过程对于用户来说是透明的。用户感觉不到使用原始的主类和使用处理后的结果类有什么不同。当然,用户也可以不加密地处理这些主类和产品。
封装器不仅仅处理类文件,它还隐藏和加密在产品根目录下的其它文件。它封装产品并只产生一个类。软件厂商把这个类销售给用户,用户将运行这个类文件,安装买来的软件。封装器使用和加密器相同的安全类。
对于高级Java开发人员,JADE还提供了一个叫做“类编辑器”的工具。它能够直接修改类的代码字节。类编辑器也是一个独立的应用程序,它将把所有的结果生成到jar格式的的文件里。
spring framework 开发参考手册输出工具把所有的结果生成到一个jar格式的文件中,这个文件能够被其它的压缩工具如Unzip, Winzip和Jar处理。
JADE是由上面的工具集成起来的应用程序,它由纯Java语言编写。这些应用既能够在命令行下运行,也可以在图形界面环境下交互使用。用户可以分别使用这些功能,也可以按下图中的序列运行一组特征。JADE允许用户把配置参数存到一个文本文件里,并可以编辑它。这样,下一次只要装入该配置文件就可以在相同的参数下运行了。
2 JADE的特征
下面是JADE为agent程序员提供的特征列表:
●分布式的agent平台:agent平台可以分布在许多主机之中(假设他们通过RMI连接)。在每台主机上只有一个Java应用程序,因此也就只有一个Java虚拟机运行。Agents以Java的思路执行,存在于Agent容器中,agent容易为在运行时为agent执行提供支持。
●图形用户界面:从远程主机来管理若干agents和agents容器。
●调试工具:帮助开发基于JADE的多agents软件程序。
●通过行为模型支持agent活动的多重、平行和并行执行。JADE以非优先权的方式安排agent的行为。
●遵循FIPA的agent平台:它包括AMS、DF和ACC。所有这三个组成都在agent平台启动时自动激活。
●许多遵循FIPA的DFs可以在运行时启动以执行多域程序,一个域是指一系列逻辑agents,它们的服务通过一个共同的facilitator发布。每个DF继承一个GUI和所有由FIPA定义的标准能力(例如,注册,注销,修改和搜索agent描述的能力,DF网络内联盟的能力)。
●在同一个agent平台内有效传输ACL消息。事实上,消息被编译成Java对象而不是字符串的形式进行传输,以避免集结或未编组的程序。当跨越平台边界时,消息自动转换成/自基于FIPA语法、编码和传输协议。这种转换对只需要处理Java对象的agent的执行者是很明显的。
●备用的FIPA交互协议库。
●Agent在AMS上的自动注册和注销。
●遵循FIPA的命名服务:在启动agents时从平台上获取它们的GUID(Globally Unique Identifier)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论