2013-03-08 7 views

Antwort

15

Ich wusste vorher nicht über JADE, und ich bin der Akka Tech Lead, also nehmen Sie meine Antwort mit einem Körnchen Salz.

Skimming ihrer Website (die wahrscheinlich auf einem viel kleineren Bildschirm angezeigt werden soll) sieht aus wie ihre Agenten die serielle Nachricht Verarbeitung Teil der Akteure, aber sie haben keine Aufsicht und daher Fehlertoleranz, und sie scheinen zu ermutigen Sie entweder zu blockieren oder zu pollen, während Akkas Akteure vollständig ereignisgesteuert sind und daher weniger Ressourcen (Threads) verbrauchen. Betrachtet man den Programmierhandbuch, so scheint es, dass das Konzept hauptsächlich für den Anwendungsfall der GUI-Entwicklung entwickelt wurde, während Akka-Akteure nicht spezifisch sind und dazu verwendet werden können, irgendeine Art von Berechnung oder Interaktion zu modellieren.

Ein sehr großer Unterschied, über den ich in meiner oberflächlichen Suche gestolpert bin, ist die Größe der bereitgestellten Schnittstelle für Agenten und Akteure: Es mag sein, dass Akkas Abstraktion einfacher und daher leistungsfähiger ist.

Die Möglichkeit, Agenten zwischen Hosts zu verschieben, sieht interessant aus, wir müssen dies noch implementieren (siehe roadmap).

Wenn ich etwas auf der JADE-Seite nicht vermisse, dann hat Akka viel bessere Unterstützung für die reaktive Programmierung mit seinen vollständig nicht blockierenden Aktoren, das Ask-Muster kombiniert mit composable Futures (also nicht die blockierenden von java.util.concurrent aber mit Transformationsmethoden für die asynchrone Zusammensetzung), STM support und mehr.

Ich weiß nicht, wie JADE es macht, aber in Akka können Sie Ihre Aktoren elastisch vergrößern und verkleinern, indem Sie lediglich die Konfiguration ändern, siehe routing.

Last but not least gibt es die cluster Unterstützung in Akka, für die ich kein entsprechendes Feature in JADE finden konnte, aber auch hier habe ich nicht extrem tief gegraben.

Eine Sache, ich habe gerade bemerkt: Akka keine Anmeldung erforderlich ist es zum Ausprobieren ;-)

+1

Mein Geist ist in Stücke gerissen. Erwartete keine Einblicke aus erster Hand. Vielen Dank! – atok

+0

Ich könnte mich irren, aber ich folgte einem Vortrag über AMUSE (es ist ein spezifischer Rahmen für soziale Videospiele basierend auf JADE) von einem der JADE-Projektleiter. Er sagte uns, dass der JADE-Agent sehr gut auf Änderungen und Fehler reagiert und daher fehlertolerant ist. – Pievis

+0

Eine andere Sache, in meiner Universität ermutigen sie die Bedeutung von Agent als etwas, das mehr von einem Schauspieler entwickelt wird. Sie haben uns gelehrt, dass ein Schauspieler einfach etwas ist, das seinen Kontrollfluss einkapselt, tatsächlich verstehe ich Akka-Schauspieler immer noch nicht, denn für die Vision, die mir beigebracht wurde, sind sie eher Agenten-ähnlich. – Pievis

6

ich diese Frage weiß, ist ein paar Jahre alt, aber aus Gründen der Vollständigkeit (für die Suche nach Informationen, zu diesem Thema, wie ich selbst) Ich möchte einen Standpunkt in einer Position hinzufügen, die das Gegenteil von Ronald ist (er kennt JADE besser als Akka). Ich leiste keinen Beitrag zu JADE, sondern habe (vor einigen Jahren) damit gearbeitet und viel über mobile Software-Agenten recherchiert.

Das Paradigma der Softwareagenten gibt es schon seit vielen Jahren, eine gute Einführung in das Thema ist the paper of Jeffrey M. Bradshaw. Es hat viel mehr Konzepte als einfache Schauspieler.

Ich werde keine Einführung in das Paradigma geben (Sie können sich auf das Papier beziehen, wenn Sie interessiert sind), aber das Vergleichen der Frameworks ohne etwas Wissen darüber scheint unfair. Nur um zu erwähnen, dass JADE viele (nicht alle, seit dem letzten Mal, das ich überprüft habe) der Konzepte des Paradigmas implementiert, nicht nur den Teil, der mit Schauspielern verglichen werden kann, sondern auch Konzepte wie BDI model, Ontologien usw.Auch implementiert JADE die FIPA specification, die mehrere Teile hat.

Wie ich schon sagte, es ist einige Jahre her, dass ich die JADE-Implementierung zuletzt überprüft habe, also werde ich keinen Punkt für Punkt Technologievergleich machen. Wie Ronald sagte, implementiert JADE keine Konzepte wie reaktive oder elastische Skalierung, aber man muss berücksichtigen, dass diese Konzepte heute weit verbreitet sind, aber vor vielen Jahren nicht populär waren (als JADE begann). Was ich klarstellen möchte, ist, dass JADE Fehlertoleranz, Skalierbarkeit und nicht blockierende Arbeitsweise integriert hat (vielleicht ist das auf der Website nicht klar). Das Buch Developing Multi-Agent Systems with JADE ist eine gute Einführung in das Framework.

Zusammenfassend, wenn das Akteurmodell für Ihre Anforderungen genug ist, würde ich mit Akka gehen, da es sauberer (vermutlich dünner) und moderner als JADE ist. Wenn Sie einige der fortgeschritteneren/spezifischen Funktionalitäten in Bezug auf (mobile) Softwareagenten benötigen/wollen, ist JADE die am weitesten verbreitete Framework + Plattform dafür (oder zumindest war es, als ich recherchierte).

Nur meine zwei Cent!

2

Wieder ein Jahr später .... Ich kann bestätigen, Fail-Over ist der Schlüssel zu Jade, um einige der Mechanismen zu erwähnen: Backup-Plattformen, das Konzept der virtuellen replizierten Agenten, zustandslose Mediator Container (Deal mit Trennung und IP ändern), persistente Nachrichtenübermittlung. Wade fügt der Fehlertoleranz mehr hinzu: http://jade.tilab.com/wade/doc/WADE-User-Guide.pdf.

Jade zielt nicht hauptsächlich auf GUI-Entwicklung ab.

Ein weiteres starkes Feature in Jade möchte ich erwähnen, dass Agenten keine offenen Ports für bidirektionale Kommunikation über das Netzwerk benötigen, nur die Plattform und Backups müssen offene Ports.

Darüber hinaus ist STM (Finite State Machine) ein wichtiger Teil in Jade, FIPA Konversationsmodelle werden mit STM implementiert. Jade-Agenten senden und empfangen nicht so viele Nachrichten, sondern führen Konversationen in Workflows aus.

Clustering ist in Jade nicht verfügbar, obwohl Wade konfigurierbare Agentenpools bietet, in denen sich ein Pool verteilter Agenten um eine bestimmte Aufgabe kümmert.

In Bezug auf Elastic Scaling und Jade wurden einige Untersuchungen durchgeführt, ich weiß nicht den Status davon. Vielleicht ist es besser, die elastische Skalierung auf Java-Ebene zu behandeln.

Ein Thema, das in Jade und Akka Aufmerksamkeit erfordert, ist die Sicherheit (Identität, Authentifizierung, Autorisierung) in einer verteilten nachrichtenbasierten Lösung.

Fazit: Jade ist viel mächtiger und reichhaltiger, als auf den ersten Blick zu erkennen ist. Jade braucht Modernisierung.

Es wäre interessant zu untersuchen, wie Akka und Jade für sich, den AkkaAgent, profitieren können.

Verwandte Themen