Akka演员和Jade代理的概念有实质性的区别吗?
据我所知,两者都通过创建独立实体(带有系统逻辑块)并使它们之间通过发送消息来通信来实现系统分布。
它们之间还有其他因素使它们不同(例如性能或预期目的)吗?
Akka演员和Jade代理的概念有实质性的区别吗?
据我所知,两者都通过创建独立实体(带有系统逻辑块)并使它们之间通过发送消息来通信来实现系统分布。
它们之间还有其他因素使它们不同(例如性能或预期目的)吗?
我以前不知道JADE,我是Akka技术负责人,所以请将我的回答视为参考。
浏览他们的网站(可能应该在更小的屏幕上查看),看起来他们的代理执行了actors的串行消息处理部分,但是他们缺乏监督和因此容错性,并且他们似乎鼓励阻塞或轮询,而Akka的actors完全是事件驱动的,因此消耗更少的资源(线程)。查看程序员指南,似乎该概念主要是为GUI开发而开发的用例,而Akka actors并不具体,可以用于模拟任何类型的计算或交互。
我在我的表面搜索中遇到的一个非常大的区别是提供给Agents和Actors的接口大小:可能是Akka的抽象更简单,因此更强大。
移动代理在主机之间的能力看起来很有趣,我们仍然需要实现它(请参见roadmap)。
如果我没有漏掉JADE方面的任何内容,那么Akka在反应式编程方面有更好的支持,它具有完全非阻塞的actor,可组合的Futures(即不是来自java.util.concurrent的阻塞Futures,而是具有用于异步组合的转换方法),STM支持等等。我知道这个问题已经有几年了,但是为了完整性(对于那些像我一样寻找关于这个主题的信息的人),我想提出一个观点,与Ronald的立场相反(比Akka更了解JADE)。我不是JADE的贡献者,但曾经使用过它(几年前)并且进行了(大量的)移动软件代理方面的研究。
软件代理范式已经存在多年了,Jeffrey M. Bradshaw的论文是该主题的良好介绍。它涵盖了比纯粹的actors更多的概念。
我不会对这种范式进行介绍(如果您感兴趣,可以参考论文),但是没有一些关于它的知识就比较这些框架似乎是不公平的。只是提一下,JADE 实现了许多(并非全部,因为上次我检查时并非如此)范式概念,不仅仅是可以与演员进行比较的部分,还有像 BDI 模型、本体论等概念。此外,JADE 还实现了FIPA 规范,该规范有多个部分。
就像我说的,距离我上次检查JADE实现已经过了几年,因此我不会逐点进行技术比较。正如Ronald所说,JADE没有实现响应式或弹性扩展等概念,但必须考虑到这些概念今天广泛存在,但在许多年前(JADE开始时)并不太流行。我想要澄清的是,JADE确实具有容错性、可扩展性和非阻塞工作方式(也许网站上不太清楚)。书籍使用JADE开发多代理系统是该框架的一份绝佳介绍。