web-dev-qa-db-fra.com

Différence entre Java Concurrence, Akka et RxJava?

Aujourd'hui, j'ai constaté que, pour la concurrence dans Java, nous avons un bon cadre comme Akka et j'ai également constaté qu'il existe des cadres de programmation réactifs comme RxJava pour effectuer multithreading dans l'application. Mais je suis toujours confus! Pourquoi sont-ils meilleurs que Java Concurrency cadre?

De nos jours, la programmation réactive est un sujet mature, et la plupart des langues prennent en charge Functional Reactive Programing comme Netflix fournit des API concernant Reactive programming pour plusieurs langues. Rxjava est l'un des api utilisé pour Java, scala etc. Selon RxJava, ils utilisent en interne des acteurs pour maintenir multithreading et Akka utilise également Actors pour la programmation multithreading.

Alors, quelle est la différence entre Akka et Reactive Programming approche et pourquoi ils sont bons de Java Concurrency?

30
Harmeet Singh Taara

Selon Mathias Doenitz à l'heure actuelle, RxJava n'a pas de contre-pression contrairement à la mise en œuvre d'Akkas Reactive Streams. Mais RxJava semble travailler sur l'ajout de contre-pression.

Les deux frameworks pourront interagir via le spi de streaming réactif. Vous pourrez donc faire des choses très très similaires. Selon Mathias, la différence sera que l'implémentation d'Akka est basée en interne sur les acteurs, pas sur le multi-threading. Et en conséquence sera plus performant.

Ma source pour cette information est n exposé que Mathias a donné la semaine dernière au groupe d'utilisateurs néerlandais Scala.

edit: je suis corrigé par le support de la contre-pression dans RxJava. Si vous suivez le lien Eriks, vous pouvez lire ce que signifie la contre-pression.

19
Joost de Vries

Les Akka Streams basés sur des acteurs assurent l'interopérabilité entre les acteurs et les flux, par exemple:

  • lire l'acteur et le transmettre à des ruisseaux et
  • lecture à partir de flux et transmission aux acteurs
0
denis631