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
?
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.
Les Akka Streams basés sur des acteurs assurent l'interopérabilité entre les acteurs et les flux, par exemple: