web-dev-qa-db-fra.com

Quelle est la différence entre Ruby et JRuby?

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

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

52
Ash

Ruby s'exécute dans un interpréteur natif basé sur C. JRuby s'exécute à l'intérieur de la machine virtuelle Java. Il existe de nombreux joyaux et plugins qui pourraient ne pas fonctionner à l'intérieur de JRuby, en particulier l'un avec des extensions C natives, sauf s'ils ont été réécrits pour s'exécuter en Java.

En fin de compte, la différence survient lorsque vous souhaitez réellement déployer votre application (en supposant que les gemmes que vous souhaitez utiliser n'étaient pas un problème). Si vous souhaitez déployer sur un serveur Web Java, alors JRuby serait le chemin à parcourir. Si vous avez un environnement * nix, Passenger + Nginx ou Apache est également très populaire, qui utilise l’interpréteur d’entreprise standard Ruby ou Ruby. Il y a toujours l’option métisse ou cluster léger également, toujours en utilisant l’interpréteur standard).

58
danivovich

JRuby s'exécute sur Java VM (l'interpréteur a été écrit en Java), tandis que l'original Ruby interprète a été écrit en C. Les deux ont aussi des avantages et des inconvénients (Ruby peut utiliser des extensions natives, JRuby peut accéder à Java, objets, etc.)

JRuby utilise Ruby 1.8.6, 1.9.x sera bientôt disponible. JRuby a Java threads (ce qui signifie qu'il évoluera sur de nombreux processeurs, cœurs, etc.). ), Ruby a quelques problèmes avec le threading de l'espace utilisateur, le verrouillage ec.

Personnellement, j'utilise JRuby avec Glassfish v3 et Netbeans pour le développement de RoR, il évolue beaucoup mieux que Ruby + charges de bâtards, Apaches et c'est plus facile à gérer.

24
Tamas Mezei

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

Demander la différence entre les deux n'a pas vraiment de sens: ils sont à deux niveaux d'abstraction complètement différents.

Cela revient à demander quelle est la différence entre une voiture et une Prius. Cela n'a pas de sens non plus: une Prius une mise en œuvre du concept général d'une voiture. Vous pourriez vous demander quelle est la différence entre une Prius et une 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 pouvez 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 .

5
Jörg W Mittag

JRuby est principalement Ruby compatible. Un aspect de JRuby est que vous pouvez l'exécuter en modes non compatibles pour - raisons de performances .

4
Thomas Jung

JRuby est l'implémentation Java de Ruby. Il est compatible avec Ruby 1.8 et est en retard Ruby (1.9). Il s'exécute sur une machine virtuelle Java et vous permet d'intégrer facilement les bibliothèques Java existantes.

4
Brian Agnew

JRuby est un Java implémentation de Ruby interpreter. Rails (aka Ruby on Rails) est un cadre d'application Web écrit en Ruby. Cet article explique comment le code Ruby est réellement exécuté via JVM http://patshaughnessy.net/2012/2/7/journey). -au-centre-de-jruby

0
RushabhM

Pour autant que je sache, jruby est simplement une implémentation Ruby écrite en Java donc elle permet une intégration facile avec le Java runtime .

0
ennuikiller

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

0
user1866653