Какая разница между 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