Я хочу попробовать JRuby и JRuby на Rails. У меня возникли проблемы с поиском информации о том, какая разница между JRuby on Rails и Ruby on Rails.
Какие различия мне нужно искать?
Я хочу попробовать JRuby и JRuby на Rails. У меня возникли проблемы с поиском информации о том, какая разница между JRuby on Rails и Ruby on Rails.
Какие различия мне нужно искать?
JRuby - это реализация Ruby, которая работает на JVM, тогда как Matz Ruby - это реализация на C.
Ключевые особенности, на которые следует обратить внимание:
Есть другие отличия, которые перечислены на вики JRuby:
Я удивлен, что во всех ответах на этот вопрос отсутствует ключевая вещь, связанная с GIL.
Основное различие, которое вы должны заботиться о esp. в веб-приложениях, таких как построенные с помощью Rails, true concurrency ( "Global Interpreter Lock" бесплатно). Когда два потока работают (например, обслуживают 2 пользовательских запроса) с JRuby, они могут работать одновременно в рамках одного процесса, тогда как в MRI есть GIL (даже с 1,9 родными потоками), который позволяет избежать параллельного выполнения кода Ruby.
Для разработчиков приложений это первое, что нужно учитывать при рассмотрении JRuby, поскольку оно действительно сияет с помощью config.threadsafe!
, но требует, чтобы ваш код (и ваш код драгоценных камней) был "действительно" потокобезопасным.
Возможно, я ошибаюсь, но я думаю, что вы можете упаковать приложение JRuby on Rails так, как вы не можете сделать с обычным RoR - посмотрите на Mingle или подобное. Позволяет продавать, не отбрасывая штаны/открывая комоно.
Тем не менее, я недостаточно знаком с упаковкой RoR, поэтому не держу меня в этом:)
в основном он должен работать одинаково. в jRoR вы можете получить доступ к материалам, которые у вас не были бы в RoR. Обычно это в основном проблема развертывания.
Однако, если ваше приложение RoR использует собственные библиотеки, которые не имеют эквивалента, который работает на JVM, это может быть болью. Однако большинство libs имеют не родную версию (по крайней мере, популярные из них, с которыми я столкнулся).