Je cherche à essayer JRuby et JRuby on Rails. J'ai du mal à trouver des informations sur la différence entre JRuby sur Rails et Ruby on Rails.
Quelles sont les différences que je dois rechercher?
JRuby est l'implémentation Ruby qui s'exécute sur une machine virtuelle Java tandis que Ruby est une implémentation C de Matz).
Les principales caractéristiques à noter sont les suivantes:
Il existe d'autres différences qui sont répertoriées sur le wiki JRuby:
Je suis surpris qu'il manque une chose cruciale dans toutes les réponses à cette question, liée à GIL .
La principale différence dont vous devriez vous soucier, en particulier. dans les applications Web telles que celles construites avec Rails est true concurrency ("Global Interpreter Lock" gratuit). Lorsque deux threads sont en cours d'exécution (par exemple, en servant 2 demandes d'utilisateurs) avec JRuby, ils sont capables de s'exécuter simultanément dans un seul processus, tandis qu'en IRM, il y a le GIL (même avec les threads natifs de 1.9) qui évite d'exécuter Ruby code en parallèle).
Pour un développeur d'applications, c'est la première chose à garder à l'esprit lorsque l'on considère JRuby, car il brille vraiment avec config.threadsafe!
mais vous oblige à vous assurer que votre code (et votre code gemmes) est "vraiment" thread-safe.
Je peux me tromper, mais je pense que vous pouvez empaqueter un JRuby sur Rails application d'une manière que vous ne pouvez pas faire avec un RoR normal - regardez Mingle ou similaire. Permet de vendre sans perdre) votre pantalon/ouverture du komono.
Cela dit, je ne suis pas assez familier avec l'emballage RoR, alors ne m'y tenez pas :)
il devrait surtout fonctionner de la même manière. dans jRoR, vous pouvez accéder à des choses que vous n'auriez pas dans RoR. Il s'agit généralement d'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 (au moins les plus populaires que j'ai rencontrées).