137 votes

JRuby sur Rails vs Ruby on Rails, quelle différence?

Je cherche à essayer JRuby et JRuby sur 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?

163voto

user23117 Points 1292

JRuby est le rubis de mise en œuvre qui s'exécute sur une machine virtuelle java alors que Matz ruby est un C mise en œuvre.

Principales caractéristiques à prendre en compte sont:

  1. Jruby s'exécute sur la machine virtuelle Java et il est compilé ou interprété en bas à Java byte code.
  2. JRuby peut s'intégrer avec du code Java. Si vous avez des bibliothèques de classes java (.jar), vous pouvez référencer et de les utiliser à partir de l'intérieur du code ruby avec JRuby. Dans l'autre sens, vous pouvez également appeler Jruby code à partir de Java. JRuby pouvez également utiliser la JVM et de l'application des capacités du serveur.
  3. JRuby est généralement hébergés par des serveurs d'applications Java, telles que Sun glassfish ou même le serveur web Tomcat.
  4. Bien que vous ne pouvez pas utiliser natif de gems ruby, avec JRuby il y a jruby pour les implémentations les plus populaires, les bibliothèques ruby.

Il existe d'autres différences qui sont énumérés à l'jruby wiki:

62voto

kares Points 2682

Je suis surpris, il y a une chose essentielle manquant dans toutes les réponses à cette question, liée à GIL.

La principale différence faut-il se préoccuper de l'esp. dans les web-applications tels que ceux construits avec des Rails est vrai simultanéité ("Global Interprète de Verrouillage"). Lorsque deux threads en cours d'exécution (par exemple, desservant 2 demandes de l'utilisateur) avec JRuby ils sont capables de fonctionner simultanément dans un même processus, alors que dans l'IRM, il y a la GIL (même avec 1,9 natif des threads) qui évite d'exécuter du code Ruby en parallèle.

Pour le développeur de l'application, c'est la première chose à garder à l'esprit tout en tenant compte de JRuby, comme il brille vraiment avec config.threadsafe! mais exige de vous assurez-vous que votre code (et vos gemmes code) pour être "vraiment" thread-safe.

7voto

Nic Wise Points 4722

Je peux me tromper, mais je pense que vous pouvez emballer 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 :)

4voto

Michael Neale Points 7704

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. Généralement, il s'agit principalement d'un problème de déploiement.

Toutefois, si votre application RoR utilise des bibliothèques natives ne disposant pas d'un équivalent s'exécutant sur la machine virtuelle Java, cela peut s'avérer difficile. Cependant, la plupart des librairies ont une version non native disponible (du moins les plus populaires que j'ai rencontrées).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X