JRuby on Rails против Ruby on Rails, в чем разница?

ruby-on-rails ruby jruby jrubyonrails

57704 просмотра

4 ответа

8718 Репутация автора

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

Какие различия мне нужно искать?

Автор: epochwolf Источник Размещён: 30.09.2008 03:00

Ответы (4)


3 плюса

13633 Репутация автора

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

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

Автор: Michael Neale Размещён: 30.09.2008 03:53

157 плюса

1782 Репутация автора

Решение

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

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

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

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

Автор: user23117 Размещён: 30.09.2008 04:13

7 плюса

6913 Репутация автора

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

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

Автор: Nic Wise Размещён: 07.10.2008 02:42

55 плюса

6254 Репутация автора

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

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

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

Автор: kares Размещён: 29.06.2012 07:52
Вопросы из категории :
32x32