"Реальной" проблемой, решенной рекурсией, были бы матрешки. Вашей функцией является OpenDoll ().
, Учитывая стек их, Вы были бы recursilvey открывать куклы, называя OpenDoll (), если Вы будете, пока Вы не достигли самой внутренней куклы.
Ruby работает в собственном интерпретаторе на основе C. JRuby работает внутри виртуальной машины Java. Есть много драгоценных камней и подключаемых модулей, которые могут не работать внутри JRuby, особенно с собственными расширениями C, если они не были переписаны для работы на Java.
В конечном итоге разница возникает, когда вы действительно хотите развернуть свое приложение (при условии, что драгоценные камни, которые вы хотите использовать, не были проблемой). Если вы хотите выполнить развертывание на веб-сервере java, то вам подойдет JRuby. Если у вас есть среда * nix, очень популярны также Passenger + Nginx или Apache, которые используют стандартный корпоративный интерпретатор ruby или ruby. Также всегда есть вариант «дворняга» или «тонкий кластер», опять же с использованием стандартного интерпретатора.
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, он сильно масштабируется лучше, чем рубин + куча дворняг, апачей и им легче управлять.
Ruby - это язык программирования. JRuby - это реализация языка программирования Ruby.
Спрашивать о разнице между ними на самом деле не имеет смысла: они находятся на двух совершенно разных уровнях абстракции.
Это похоже на вопрос, в чем разница между машина и Приус. Это тоже не имеет смысла: Prius - это воплощение общей концепции автомобиля. Вы можете спросить, в чем разница между Prius и Hummer или между автомобилем и самолетом, но разница между автомобилем и Prius не имеет смысла.
Точно так же с Ruby вы можете спросить о разница между Ruby и Python или JRuby и MRI, но разница между Ruby и JRuby не имеет смысла.
JRuby в основном совместим с Ruby. Одним из аспектов JRuby является то, что вы можете запускать его в несовместимых режимах по соображениям производительности .
JRuby - это Java-реализация Ruby. Он совместим с Ruby 1.8 и отстает от текущего Ruby (1.9). Он работает на JVM и позволяет легко интегрировать существующие библиотеки Java.
Насколько я знаю, jruby - это просто реализация Ruby, написанная на java, поэтому она позволяет легко интегрироваться со средой выполнения java.