web-dev-qa-db-fra.com

Différence entre vert.x et RxJava

Nous évaluons des cadres de programmation réactifs pour l'un de nos projets. Je viens de parcourir les tutoriels vert.x. J'ai un peu vérifié la présentation de RxJava. RxJava semblait plus proche de CompletableFuture. Malgré les schémas sous-jacents, RxJava et Vert.x donnent accès à une programmation non bloquante. Je suis confus quant à quelle est la différence entre eux. J'apprécierai toute aide à cet égard.

10
user3276247

VertX est une infrastructure de serveur pour serveurs asynchrones, tandis que RxJava est une infrastructure pour les calculs asynchrones. VertX supporte RxJava et beaucoup les utilisent ensemble.

Si vous envisagez de créer une application Web et souhaitez un backend évolutif, utilisez VertX, éventuellement avec RxJava. Mais si vous êtes sur une autre plate-forme, utilisez simplement RxJava.

En savoir plus sur l’utilisation conjointe de VertX et de RxJava dans API Vert.x pour RxJava

20
Jonas

De leur propre site:

Eclipse Vert.x est une boîte à outils permettant de créer des applications réactives sur la machine virtuelle Java.

Il définit les API fondamentales pour l'écriture d'applications en réseau asynchrones (par exemple: connexion à une base de données, surveillance, authentification, découverte de service, clustering, etc.).

En interne, il est basé sur le projet Netty, une bibliothèque réseau asynchrone hautes performances pour la machine virtuelle Java. Cependant, il fournit une API de niveau supérieur plus facile à raisonner et toujours très performante.

Vous pouvez utiliser exclusivement les API basées sur le rappel Vert.x, mais Vert.x implémente également une API Rxified équivalente utilisant RxJava sous le capot. Cela fournit une excellente plateforme pour intégrer les modules Vert.x dans les applications RxJava. 

Vert.x est polyglotte car il prend en charge de nombreuses autres API de langages basés sur JVM, telles que Kotlin, Groovy, Ruby, Scala et Ceylan. De plus, étant donné que Vert.x est basé sur les événements et sur les messages, il fournit également une API JavaScript très utile pour intégrer les interfaces entre le backend et le backend.

Vert.x fournit des points de terminaison HTTP fluides et une configuration de routage appuyés par des gestionnaires dans lesquels la logique métier est implémentée. Mais le véritable système nerveux est le bus d’événements qui joue le rôle de fournisseur de télécommunications pour tous les composants locaux ou distribués de Vert.x.

Ce bus très événementiel prend en charge:

  1. Point-à-point, demande-réponse et messagerie pub-sub
  2. Communication entre des verticules polyglottes au sein d'une même instance de machine virtuelle Java
  3. Communication en cluster entre des verticules polyglottes dans plusieurs instances de JVM
  4. Bridge to Stomp ou implémentations AMQP pour l'intégration avec d'autres applications
  5. Bridge to SockJS pour une intégration directe avec les interfaces Javascript 

Le bus d'événements est supporté par:

  1. Les gestionnaires de cluster tels que Hazelcast, InfiniSpan, Ignite ou ZooKeeper, qui fournissent des cartes, des verrous et des compteurs distribués via un accès API de niveau supérieur.

  2. API de découverte de service Vert.x fournissant une abstraction basée sur l'adresse aux schémas d'adressage complexes sous-jacents

  3. Points d'accès au service TCP compatibles SSL pour une communication sécurisée bidirectionnelle et des performances maximales

Enfin, Vert.x peut être utilisé seul pour développer une application complète ou en collaboration avec des frameworks tels que SpringBoot, Fibers, etc. 

Plus de détails ici , ici et ici .

J'espère que cela t'aides,

Softjake

1
softjake