Руби на рельсах противRuby on Rails, в чем разница?
-
02-07-2019 - |
Вопрос
Я хочу опробовать JRuby и JRuby on Rails.У меня возникли проблемы с поиском информации о том, в чем разница между JRuby on Rails и Ruby on Rails.
На какие отличия мне нужно обратить внимание?
Решение
JRuby - это реализация Ruby, которая работает на JVM, тогда как Ruby от Matz - это реализация C.
Ключевыми особенностями, на которые следует обратить внимание, являются:
- Jruby работает на виртуальных машинах Java и либо компилируется, либо интерпретируется вплоть до байтового кода Java.
- JRuby может интегрироваться с Java-кодом.Если у вас есть библиотеки классов Java (.jar), вы можете ссылаться на них и использовать из кода Ruby с помощью JRuby.В другом направлении вы также можете вызвать код JRuby из Java.JRuby также может использовать возможности JVM и сервера приложений.
- JRuby обычно размещается на серверах приложений Java, таких как Sun's glassfish или даже на веб-сервере Tomcat.
- Хотя вы не можете использовать собственные 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, это может стать проблемой.Однако большинство библиотек имеют доступную неродную версию (по крайней мере, те популярные, с которыми я сталкивался).