What is the difference between actors (Akka) and agents (JADE) in distributed systems?

Is there a significant difference in terms of Akka and Jade agents?

From what I know, both implement the distribution of the system, creating independent entities (with pieces of system logic) that can communicate by sending messages between them.

Are there other factors that make them different (for example, performance or purpose)?

+6
source share
3 answers

I did not know about JADE before, and I am the technological leader of Akka, so take my answer with salt.

When renting their site (it is probably assumed that they are browsing on a much smaller screen), it seems that their agents act as part of the message processing, but they have no control and, therefore, fault tolerance, and they seem to encourage either blocking or polling, while Akkas actors are completely event driven and therefore consume less resources (threads). Looking at the Programmers Guide, it seems that the concept was developed mainly for using GUI development, while Akka actors are not specific and can be used to model any calculations or interactions.

One very big difference that I stumbled upon my superficial search is the size of the provided interface for agents and actors: it is possible that the Akkas abstraction is simpler and therefore more powerful.

The ability to move agents between hosts looks interesting, we still need to implement it (see the roadmap ).

If I don’t miss something on the JADE side, Akka has much better support for reactive programming with its completely non-blocking actors, a request template combined with (i.e. not blocking from java.util.concurrent, but with transformation methods for asynchronous composition ), STM support and more.

I don’t know how JADE does it, but in Akka you can resiliently scale and expose your actors by simply changing the configuration, see routing .

And last but not least, support for cluster in Akka, for which I could not find the corresponding function in JADE, but again I did not dig it very deep.

One thing I just noticed: Akka does not require a login to verify it; -)

+15
source

I know this question has been a couple of years, but for the sake of completeness (for those who are looking for information on this topic, like me), I would like to add a point of view in the form of the opposite of Ronald (knowing better than JADE than Akka). I do not participate in JADE, but I worked with him (several years ago) and researched a lot about mobile software agents.

The software agent paradigm has been around for many years, with a good introduction to this topic by Jeffrey M. Bradshaw . He has much more concepts than ordinary actors.

I will not go into the paradigm (you can refer to the article if you are interested), but comparing wireframes without any knowledge of it seems unfair. Just mention that JADE implements many (not all, from the last time) checks of paradigm concepts, and not only the part that can be compared with actors, but also has concepts such as the BDI Model , Ontologies, etc. JADE also implements the FIPA specification , which has several parts.

As I said, several years have passed since I last tested the JADE implementation, so I won’t do a point-to-point technological comparison. As Ronald said, JADE does not implement concepts such as reactive or elastic scale, but keep in mind that these concepts are widely represented today, but not too popular many years ago (when JADE was launched). I want to clarify that JADE has fault tolerance, scalability, and a non-blocking way of working with it (perhaps the website is not clear). The book Development of multi-agent systems with JADE is an excellent introduction to the structure.

To summarize, if the actor’s model is enough for your requirements, I would go with Akka, as she is cleaner (probably finer) and more modern than JADE. If you need / need some of the more advanced / specific features related to (mobile) software agents, JADE is the more widely used framework + platform for this (or at least that was when I was researching).

Just my two cents!

+6
source

Again in a year .... I can confirm that a failure is the key to Jade to mention several mechanisms: backup platforms, the concept of virtual replicated agents, stateless mediation containers (dealing with disconnecting and changing IP addresses), constant delivery of messages. Wade adds more resiliency: http://jade.tilab.com/wade/doc/WADE-User-Guide.pdf .

Jade does not primarily target the development of a graphical interface.

Another important feature in Jade that I would like to mention is that agents do not require open ports for bidirectional communication over the network, only the platform and backups need open ports.

In addition, STM (state machine) is an important part in Jade, FIPA conversation models are implemented using STM. Jade agents do not so much send and receive messages, but they chain in workflows.

Clustering is not available in Jade, although Wade provides custom agent pools where a distributed agent pool performs a specific task.

As for Elastic scaling and Jade, some studies have been done, I do not know the status of this. It might be better to consider elastic scaling at the jvm level.

A topic that needs attention in both Jade and Akka is security (identification, authentication, authorization) in a distributed message-based solution.

Ending this: Jade is much more powerful and rich, and the first glance is revealed. Jade needs modernization.

It would be interesting to explore how Akka and Jade can win, AkkaAgent.

+2
source

All Articles