59 votes

Quelle bibliothèque/framework de modèle d'acteur pour Java ?

Il y a tellement de choses différentes Modèle d'acteur pour Java (et les langages de la JVM).

De nombreuses bibliothèques et structures d'acteurs ont été mises en place pour permettre une programmation de type acteur en Java (qui ne dispose pas d'acteurs intégrés). Je pense que le modèle Actor a de gros avantages, mais les choix pour Java sont écrasants !

Quelqu'un peut-il afficher les plus populaires et donner son avis sur ceux qu'il faut utiliser ? Lesquels ont des points de référence pour le débit en termes de messages transmis par seconde ?

47voto

oluies Points 7682

Ce site est une bonne série d'articles. Voir aussi ce présentation. Carl Hewitt explique l'essence du modèle acteur de l'informatique. ici .

Killim et Akka (scala) a les meilleures performances. Je vous suggère d'utiliser Akka. Démarrage avec Scala 2.11.0 la bibliothèque Scala Actors est obsolète. Déjà dans Scala 2.10.0, la bibliothèque d'acteurs par défaut est Akka. Utilisez Akka comme un frontend et appelez votre code Java si vous ne voulez pas faire tout le codage en Scala. Scala et Akka ont une syntaxe et une API très agréable. Akka a une API Java appelée "Active Objects". Notez qu'il y a beaucoup de choses qui se passent dans Akka en ce moment et que la base de code évolue rapidement. Voir le Manuel de démarrage de Java

Killim est basé sur java mais fait du tissage en temps de compilation.

Jetlang et FonctionnelJava sont des options qui ne font pas de tissage en temps de compilation (??incertain), mais ne sont pas aussi rapides qu'Akka et Killim (pas de données actuelles à ce sujet, mais il y a quelques anciens chiffres dans Jonas Boners et Viktor Klangs parlent aux Scala Days 2010 ).

Une autre option consiste à utiliser le JMS classique (ou un autre MQ / PubSub). Vous pouvez également faire votre propre et simple canaux de publication intra JVM / travailleurs. Ou simplement utiliser java util concurrent ExecutorService ou com.google.common.util.concurrent

D'autres frameworks/bibliothèques basés sur Scala avec des implémentations d'Actor sont les suivants Stambecco , Ascenseur et Scalaz .

D'autres modèles similaires sont Service d'exécuteur distribué Hazlecast Oracle Coherence avec InvocableService, GigaSpaces Executors ou IBM eXtreme Scale. Mais dans tous ces cas, il manque la partie "les acteurs sont des systèmes" dans une certaine mesure.

9voto

Rajesh Karmani Points 1

Nous avons réalisé une étude connexe intitulée "Actor frameworks for the JVM platform : A Comparative Analysis", qui a été publiée l'année dernière et qui compare la syntaxe, la sémantique et les performances de certains des frameworks Actor basés sur la JVM. Elle est disponible à l'adresse suivante http://osl.cs.uiuc.edu/docs/pppj09/paper.pdf . J'espère que vous le trouverez utile.

9voto

Esko Luontola Points 53877

Acteurs de Jumi est une bibliothèque d'acteurs pour Java. Elle a été conçue pour être naturelle à utiliser dans le code Java - vous n'avez pas besoin de créer une classe pour chaque message, mais les messages sont représentés comme des méthodes sur une interface. De plus, ses acteurs sont collectés par les ordures, ils n'ont donc pas besoin d'être explicitement arrêtés. Le code utilisant les acteurs Jumi est testable Les tests unitaires peuvent être effectués sans le conteneur d'acteurs et les tests d'intégration peuvent être effectués à l'aide d'une mise en œuvre déterministe du conteneur à un seul fil.

Par rapport à Acteurs d'Akka il est beaucoup plus petit en taille binaire (33 Ko contre 10+ Mo) et beaucoup plus rapide. En regardant l'exemple Pi dans Akka Tutorial et le même exemple utilisant des acteurs Jumi Avec Akka, le calcul prend environ 480-520 ms, mais avec Jumi Actors seulement 350-390 ms. (La différence serait sans doute encore plus grande si les acteurs ne faisaient aucun travail et que nous ne mesurions que le passage des messages). En comparant les performances de démarrage, le démarrage du conteneur Akka prend 620 ms, mais le démarrage du conteneur Jumi Actors ne prend que 25 ms.

2voto

Philip Points 182

Une autre option est GPars . Groovy, mais peut être appelé depuis Java comme Akka.

1voto

StudiousJoseph Points 3578

Le Scala Actors est ma meilleure suggestion.

Voir http://www.scala-lang.org/node/242 pour un court tutoriel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X