53 votes

Quelle est la différence entre Ruby et JRuby ?

Quelqu'un peut-il m'expliquer en termes simples la différence entre le développement d'une application JRuby et Ruby, Rails ?

J'utilise NetBeans comme IDE Ruby on Rails et chaque fois que je crée un projet, il me pose cette question - et je ne vois pas vraiment la différence. Y a-t-il des avantages et des inconvénients ?

60voto

danivovich Points 3067

Ruby s'exécute au sein d'un interpréteur natif basé sur le langage C. JRuby fonctionne au sein de la machine virtuelle Java. Il y a beaucoup de gemmes et de plugins qui peuvent ne pas fonctionner dans JRuby, en particulier ceux qui ont des extensions en C natif, à moins qu'ils n'aient été réécrits pour fonctionner en Java.

En fin de compte, la différence intervient lorsque vous souhaitez réellement déployer votre application (en supposant que les gemmes que vous souhaitez utiliser ne posent pas de problème). Si vous souhaitez déployer votre application sur un serveur web java, alors JRuby est la meilleure solution. Si vous disposez d'un environnement *nix, Passenger + Nginx ou Apache est également très populaire et utilise l'interpréteur standard ruby ou ruby enterprise. Il existe toujours l'option mongrel ou thin cluster, qui utilise également l'interpréteur standard.

25voto

Tamás Mezei Points 769

JRuby fonctionne sur la machine virtuelle Java (l'interpréteur a été écrit en Java), tandis que l'interpréteur Ruby original a été écrit en C. Les deux ont également des avantages et des inconvénients (Ruby peut utiliser des extensions natives, JRuby peut accéder aux types Java, aux objets, etc.)

JRuby utilise la syntaxe de Ruby 1.8.6, la 1.9.x sera bientôt disponible. JRuby a des threads Java (ce qui signifie qu'il s'adaptera à de nombreux processeurs, cœurs, etc.), Ruby a quelques problèmes avec les threads de l'espace utilisateur, le verrouillage, etc.

Personnellement, j'utilise JRuby avec Glassfish v3 et Netbeans pour le développement de RdR. Il est beaucoup plus facile à gérer que ruby + des tas de bâtards et d'Apaches.

4voto

Jörg W Mittag Points 153275

Ruby est un langage de programmation. JRuby est une implémentation du langage de programmation Ruby.

Poser la question de la différence entre les deux n'a pas vraiment de sens : ils se situent à deux niveaux d'abstraction totalement différents.

C'est un peu comme demander quelle est la différence entre une voiture et une Prius. Cela n'a pas de sens non plus : une Prius est une mise en œuvre du concept général d'une voiture. Vous pourriez demander quelle est la différence entre une Prius et un Hummer ou la différence entre une voiture et un avion, mais la différence entre une voiture et une Prius n'a pas de sens.

De même, avec Ruby, vous pourriez demander la différence entre Ruby et Python ou JRuby et MRI, mais la différence entre Ruby et JRuby n'a pas de sens.

4voto

Brian Agnew Points 143181

JRuby est l'implémentation Java de Ruby. Elle est compatible avec Ruby 1.8, et en retard sur Ruby actuel (1.9). Elle fonctionne sur une JVM et vous permet d'intégrer facilement les bibliothèques Java existantes.

4voto

Thomas Jung Points 17692

JRuby est principalement compatible avec Ruby. L'un des aspects de JRuby est que vous pouvez l'exécuter en mode non compatible modes pour raisons de performance .

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