Я думаю, вы в значительной степени прибили это.
JRuby - это просто еще один механизм выполнения Ruby, такой же, как MRI, YARV, IronRuby, Rubinius, MacRuby, MagLev, SmallRuby, Ruby.NET, XRuby, RubyGoLightly, tinyrb, HotRuby, BlueRuby, Red Sun и все остальные.
переносимость: например, YARV официально поддерживается только в 32-битной Linux x86. Он не поддерживается в OSX или Windows или 64-битной Linux. Рубиниус работает только в Unix, а не в Windows. JRuby OTOH работает везде : рабочие столы, серверы, телефоны, App Engine, вы называете это. Он работает на виртуальных машинах Oracle JDK, OpenJDK, IBM J9, Apple SoyLatte, RedHat IcedTea и Oracle JRockit (и, возможно, еще нескольких, о которых я забыл), а также на виртуальной машине Dalvik. Он работает на Windows, Linux, OSX, Solaris, нескольких BSD, других проприетарных и открытых Unices, OpenVMS и нескольких ОС мэйнфреймов, Android и Google App Engine. Фактически, в Windows JRuby проходит больше тестов RubySpec, чем сам "Ruby" (то есть MRI или YARV)!
расширяемость: программы на Ruby, работающие на JRuby, могут использовать любую произвольную библиотеку Java. Через JRuby-FFI они также могут использовать любую произвольную C-библиотеку. А благодаря новой поддержке расширений C в JRuby 1.6 они могут даже использовать большое подмножество расширений MRI и YARV C, например, Mongrel. (И обратите внимание, что библиотеки «Java» или «C» на самом деле не означают написанные на этих языках, они означают только API Java или C. Они могут быть написаны на Scala, Clojure, C ++ или Haskell.)
инструмент: всякий раз, когда кто-то пишет новый инструмент для YARV или MRI (например, memprof), оказывается, что 5 лет назад у JRuby уже был инструмент, который делает то же самое, только лучше. В экосистеме Java есть некоторые из лучших инструментов для «понимания поведения во время выполнения» (это термин, который я только что придумал, под которым я имею в виду гораздо больше, чем просто профилирование, я имею в виду инструменты для глубокого понимания того, что именно ваша программа делает во время выполнения, каковы его характеристики производительности, где существуют узкие места, куда идет память, и, что наиболее важно, почему все это происходит) и визуализация, доступная на рынке, и в значительной степени все это работает с JRuby, по крайней мере, в некоторой степени.
развертывание: при условии, что в вашей целевой системе уже установлена JVM, развертывание приложения JRuby (и я говорю не только о Rails, я также имею в виду настольные, мобильные и другие виды серверов) буквально просто копирует один JAR (или WAR) и двойной щелчок.
производительность: у JRuby гораздо больше накладных расходов при запуске. Взамен вы получаете намного более высокую пропускную способность. На практике это означает, что развертывание приложения Rails на JRuby является хорошей идеей, так же как и выполнение ваших интеграционных тестов, но для модульных тестов и сценариев разработчика лучше использовать MRI, YARV или Rubinius. Обратите внимание, что многие разработчики Rails просто разрабатывают и тестируют модули на MRI, тестируют интеграцию и разворачивают на JRuby. Нет необходимости выбирать один механизм исполнения для всего.
параллелизм: JRuby одновременно запускает потоки Ruby. Это означает две вещи: если ваша блокировка правильная, ваша программа будет работать быстрее, и если ваша блокировка неправильная, ваша программа сломается. (К сожалению, ни MRI, ни YARV, ни Rubinius не запускают потоки одновременно, так что есть еще какой-то сломанный многопоточный код Ruby, который не знает, что он сломан, потому что очевидно, что ошибки параллелизма могут отображаться только при наличии реального параллелизма.)
платформ (это в некоторой степени связано с переносимостью): есть несколько удивительных платформ Java, например, Azul JCA с 768 гигабайтами оперативной памяти и 864 ядрами процессора, специально разработанными для безопасных для памяти, безопасных указателей, сборщиков мусора, объектно-ориентированных языков. Android. Google App Engine. Все они работают на JRuby.