Question

Je cherche à essayer JRuby et JRuby on Rails. Je n'arrive pas à trouver des informations sur la différence entre JRuby on Rails et Ruby on Rails.

Quelles différences dois-je rechercher?

Était-ce utile?

La solution

JRuby est l’implémentation Ruby qui s’exécute sur une machine virtuelle alors que Matz's Ruby est une implémentation C.

Les principales caractéristiques à noter sont les suivantes:

  1. Jruby s’exécute sur des machines virtuelles Java. Il est soit compilé, soit interprété en code octet Java.
  2. JRuby peut s’intégrer au code Java. Si vous avez des bibliothèques de classes Java (.jar), vous pouvez les référencer et les utiliser à partir de code Ruby avec JRuby. Dans l'autre sens, vous pouvez également appeler le code JRuby à partir de Java. JRuby peut également utiliser les fonctionnalités de la machine virtuelle Java et du serveur d’applications.
  3. JRuby est généralement hébergé sur des serveurs d’applications Java tels que Glassfish de Sun ou même le serveur Web Tomcat.
  4. Bien que vous ne puissiez pas utiliser les gems Ruby natifs avec JRuby, il existe des implémentations de JRuby pour la plupart des bibliothèques Ruby populaires.

Il existe d'autres différences répertoriées sur le wiki JRuby:

Autres conseils

Je suis surpris qu'il manque un élément crucial dans toutes les réponses à cette question, lié à GIL .

La principale différence dont vous devriez vous soucier, esp. dans les applications Web telles que celles construites avec Rails, concurrence réelle ("Global Interpreter Lock" gratuit). Lorsque deux threads sont en cours d'exécution (par exemple, ils répondent à deux requêtes d'utilisateur) avec JRuby, ils sont capables de s'exécuter simultanément dans un même processus, tandis qu'en IRM, il existe le GIL (même avec les threads natifs de 1.9) qui évite l'exécution de code Ruby en parallèle.

Pour un développeur d’applications, c’est la première chose à garder à l’esprit lorsqu’on envisage JRuby, car cela brille vraiment avec config.threadsafe! , mais vous oblige à vous assurer que votre code (et votre code de gemmes) être " vraiment " thread-safe.

Je me trompe peut-être, mais je pense que vous pouvez créer une application JRuby on Rails d’une manière que vous ne pouvez pas utiliser avec un RoR normal - regardez Mingle ou similaire. Permet de vendre sans laisser tomber votre pantalon / d'ouvrir le komono.

Cela dit, je ne suis pas assez familiarisé avec les emballages RoR, ne me retenez donc pas:)

la plupart du temps, cela devrait fonctionner de la même manière. dans jRoR, vous pouvez accéder à des choses que vous n’auriez pas dans RoR. Habituellement, c'est principalement une préoccupation de déploiement.

Toutefois, si votre application RoR utilise des bibliothèques natives sans équivalent sur la machine virtuelle, cela peut être difficile. Cependant, la plupart des bibliothèques ont une version non native disponible (du moins les plus populaires que j'ai rencontrées).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top