Je cherche à essayer JRuby et JRuby on Rails. J'ai du mal à trouver des informations sur la différence entre JRuby on Rails et Ruby on Rails.
Quelles sont les différences que je dois rechercher?
ruby-on-rails
ruby
jruby
jrubyonrails
epochwolf
la source
la source
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 est une véritable concurrence ("Global Interpreter Lock" gratuit). Lorsque deux threads sont en cours d'exécution (par exemple, servant 2 requêtes utilisateur) avec JRuby, ils sont capables de fonctionner simultanément dans un seul processus, tandis que dans MRI il y a le GIL (même avec les threads natifs de 1.9) qui évite d'exécuter du code Ruby en parallèle.
Pour un développeur d'application, c'est la première chose à garder à l'esprit lors de l'examen de JRuby, car il brille vraiment
config.threadsafe!
mais vous oblige à vous assurer que votre code (et votre code de gemmes) est "vraiment" thread-safe.la source
Je me trompe peut-être, mais je pense que vous pouvez empaqueter une application JRuby on Rails d'une manière que vous ne pouvez pas faire avec un RoR normal - regardez Mingle ou similaire. Permet de vendre sans laisser tomber votre pantalon / ouvrir le komono.
Cela dit, je ne connais pas assez bien les emballages RoR, alors ne me retenez pas :)
la source
la plupart du temps, cela devrait fonctionner de la même manière. dans jRoR, vous pouvez accéder à des éléments que vous n'auriez pas dans RoR. Habituellement, c'est principalement un problème de déploiement.
Cependant, si votre application RoR utilise des bibliothèques natives qui n'ont pas d'équivalent qui s'exécute sur la JVM, cela peut être pénible. Cependant, la plupart des bibliothèques ont une version non native disponible (du moins les plus populaires que j'ai rencontrées).
la source
Il y a déjà de bonnes réponses ici.
eebbesen a déjà couvert les bases, et kares (lui-même!) nous a dit que JRuby n'avait pas de GIL.
J'ajouterai d'un point de vue plus pratique, j'ai lancé des applications sur Ruby on Rails, puis migré vers JRuby pour des raisons de performances.
Il y avait deux principaux avantages en termes de performances: JRuby est (ou était) tout simplement plus rapide que Ruby dans certaines circonstances, et deuxièmement, l'absence de mentions Global Interpreter Lock kares m'a permis de faire du multithreading, ce qui, bien que délicat, débloque des avantages en termes de performances. .
Une très grande application Ruby on Rails portée et exécutée en une heure, des gemmes et tout. Le seul problème réel était que les expressions rationnelles de Java sont légèrement différentes de celles de Ruby. C'est une réalisation monumentale de la part de JRuby.
la source