Lorsque l’on compare les principes d’architecture et les styles de codage pour les Acteurs Akka et les Enterprise JavaBeans de Java EE 7, en particulier les Stateless Session Bean et les JMS message-driven beans, il existe des points communs. Par exemple, les trois types sont capables d’évoluer à la fois verticalement et horizontalement. Or, il y a des différences telle que la gestion des exceptions et des transactions. C’est ce qu’a conclu Dr Gerald Loeffler lors d’une discussion d'introduction récente pour expliquer et comparer les trois approches d'un point de vue concurrence haut niveau.
Dans son discours, Gerald, Architecte principal d'intégration, définit la concurrence haut niveau comme étant un paradigme de programmation où la concurrence est assurée au niveau des composants et où elle demeure abstraite ailleurs autant que possible, sans se soucier de la manipulation des threads individuels ou des tâches individuelles et de les soumettre aux pool de threads.
Il articule son discours autour de l'idée du modèle de conception des objets actifs, vaguement lié au modèle de conception classique, mais avec le même genre d'idées. Les exemples sont en Scala, mais il prétend que le discours serait également pertinent pour Java.
Pour Gerald, un modèle mental simple, d'un point de vue objets actifs :
- Les Acteurs Akka reçoivent les messages comme étant des objets arbitraires, enfilés dans une boîte à messages. Ils sont explicitement gérés et traités individuellement via une interface commune.
- Les Stateless Session Beans exposent des méthodes asynchrones exécutées dans un serveur d'application avec un cycle de vie contrôlé par le conteneur.
- Les JMS Beans Message-Driven reçoivent et traitent les messages de types prédéfinis à partir d'une file d'attente/sujet JMS. Ils sont gérés par le conteneur de la même manière que les sessions beans.
Un comportement commun est que les trois types s'exécutent de manière asynchrone sur les threads, généralement à partir d'un lot, avec un accès sérialisé à la même instance.
Gerald utilise trois modèles pour sa comparaison avec des exemples de code pour les trois types :
- Demande asynchrone locale à sens unique où une demande asynchrone est envoyée d'un demandeur à un répondeur, qui ne donnera pas de réponse.
- Demande asynchrone d’une demande hors contexte où un demandeur envoie un message à un répondeur qui renvoie un message de retour et lors de sa réception, le demandeur doit rétablir le contexte.
- Demande asynchrone d’une demande dans un contexte où le contexte a été conservé d'une certaine manière par le demandeur lorsque le message de retour a été reçu.
Enfin, Gerald finit par un bref résumé, d'une part concernant les points communs, avec par exemple les trois approches qui utilisent des pools de threads et qui sont capables d’évoluer à la fois verticalement et horizontalement, et d'autre part à l’égard de certaines différences, tels que la gestion des exceptions, les stratégies de supervision ainsi que la gestion des transactions.
Akka est une boîte à outils open source permettant la création d'applications simultanées et événementielles sur la JVM.
Les Enterprise Java Beans (EJB) font partie de la spécification plus large Java EE, actuellement Java EE 7.