Какая разница между Ruby и JRuby?
Может ли кто-нибудь предоставить мне в непрофессиональных терминах разницу между разработкой приложения JRuby и Ruby, Rails?
Я использую NetBeans как свою среду Ruby on Rails и каждый раз, когда я создаю проект, задает мне этот вопрос - и я действительно не понимаю. Есть ли за и против?
Ответы
Ответ 1
Ruby работает внутри собственного интерпретатора на основе C. JRuby работает внутри виртуальной машины Java. Есть много драгоценных камней и плагинов, которые могут не работать внутри JRuby, в частности, с родными расширениями C, если только они не были перезаписаны для запуска в Java.
В конечном счете разница возникает, когда вы хотите фактически развернуть свое приложение (если предположить, что драгоценные камни, которые вы хотите использовать, не являются проблемой). Если вы хотите развернуть его на веб-сервере java, то JRuby - это путь. Если у вас есть * nix-среда, то также очень популярен Passenger + Nginx или Apache, в котором используется стандартный интерпретатор рубинового или рубинового предприятия. Всегда есть опция mongrel или тонкого кластера, снова используя стандартный интерпретатор.
Ответ 2
JRuby работает на виртуальной машине Java (интерпретатор был написан на Java), в то время как оригинальный интерпретатор Ruby был написан на C. Оба имеют и вверх и вниз (Ruby может использовать собственные расширения, JRuby может обращаться к типам Java, объектам и др.)
JRuby использует синтаксис Ruby 1.8.6, 1.9.x скоро будет доступен. У JRuby есть потоки Java (это означает, что он будет масштабироваться для многих процессоров, ядер и т.д.), Ruby имеет некоторые проблемы с поточной обработкой пользовательского пространства, блокировкой ec.
Лично я использую JRuby с Glassfish v3 и Netbeans для разработки RoR, он масштабируется намного лучше, чем рубины + нагрузки mogrels, Apaches и его легче управлять.
Ответ 3
Ruby - это язык программирования. JRuby - это реализация языка программирования Ruby.
Вопрос о различии между этими двумя не имеет смысла: они находятся на двух совершенно разных уровнях абстракции.
Это похоже на вопрос, в чем разница между автомобилем и Prius. Это также не имеет смысла: Prius - реализация общей концепции автомобиля. Вы могли бы спросить, какая разница между Prius и Hummer или разница между автомобилем и самолетом, но разница между автомобилем и Prius не имеет смысла.
Аналогично, с Ruby вы можете узнать о различии между Ruby и Python или JRuby и MRI, но разница между Ruby и JRuby не имеет смысла.
Ответ 4
JRuby - это реализация Java Ruby. Он совместим с Ruby 1.8 и отстает от текущего Ruby (1.9). Он работает на JVM и позволяет легко интегрировать существующие библиотеки Java.
Ответ 5
JRuby в основном совместим с Ruby. Один из аспектов JRuby заключается в том, что вы можете запустить его в несовместимых режимах причины производительности.
Ответ 6
Насколько я знаю, jruby - это просто рубиновая реализация, написанная в java, поэтому она позволяет легко интегрироваться со средой java.
Ответ 7
JRuby - это Java-реализация языка программирования Ruby.
Ответ 8
JRuby - это реализация Java-интерпретатора Ruby-интерпретатора. Rails (aka Ruby on Rails) - это платформа веб-приложений, написанная на Ruby.
В этой статье объясняется, как Ruby-код фактически выполняется через JVM http://patshaughnessy.net/2012/2/7/journey-to-the-center-of-jruby