Вопрос

Я хочу опробовать JRuby и JRuby on Rails.У меня возникли проблемы с поиском информации о том, в чем разница между JRuby on Rails и Ruby on Rails.

На какие отличия мне нужно обратить внимание?

Это было полезно?

Решение

JRuby - это реализация Ruby, которая работает на JVM, тогда как Ruby от Matz - это реализация C.

Ключевыми особенностями, на которые следует обратить внимание, являются:

  1. Jruby работает на виртуальных машинах Java и либо компилируется, либо интерпретируется вплоть до байтового кода Java.
  2. JRuby может интегрироваться с Java-кодом.Если у вас есть библиотеки классов Java (.jar), вы можете ссылаться на них и использовать из кода Ruby с помощью JRuby.В другом направлении вы также можете вызвать код JRuby из Java.JRuby также может использовать возможности JVM и сервера приложений.
  3. JRuby обычно размещается на серверах приложений Java, таких как Sun's glassfish или даже на веб-сервере Tomcat.
  4. Хотя вы не можете использовать собственные Ruby gems с JRuby, существуют реализации JRuby для большинства популярных библиотек Ruby.

Есть и другие отличия, которые перечислены в JRuby wiki:

Другие советы

Я удивлен, что во всех ответах на этот вопрос отсутствует важная вещь, связанная с ДЖИЛ.

Главное отличие, о котором вам следует позаботиться, - esp.в веб-приложениях, таких как те, что построены с помощью Rails, есть истинный параллелизм ("Глобальная блокировка интерпретатора" бесплатна).Когда запущены два потока (например,обслуживающие 2 пользовательских запроса) с JRuby они способны выполняться одновременно в рамках одного процесса, в то время как в MRI есть GIL (даже с собственными потоками 1.9), который позволяет избежать параллельного выполнения кода Ruby.

Для разработчика приложений это первое, что нужно иметь в виду при рассмотрении JRuby, поскольку он действительно обладает config.threadsafe! но требует, чтобы вы убедились, что ваш код (и ваш код gems) "действительно" потокобезопасен.

Возможно, я ошибаюсь, но я думаю, что вы можете упаковать приложение JRuby на Rails так, как вы не можете сделать с обычным RoR - посмотрите на Mingle или что-то подобное.Позволяет продавать, не снимая штанов и не открывая комоно.

Тем не менее, я недостаточно знаком с упаковкой RoR, так что не держи меня за это :)

в основном это должно работать так же.в jRoR вы можете получить доступ к тому, чего у вас не было бы в RoR.Обычно это в основном связано с развертыванием.

Однако, если ваше приложение RoR использует собственные библиотеки, у которых нет эквивалента, работающего на JVM, это может стать проблемой.Однако большинство библиотек имеют доступную неродную версию (по крайней мере, те популярные, с которыми я сталкивался).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top