Я удивлен, что во всех ответах на этот вопрос отсутствует ключевая вещь, связанная с GIL .
Главное отличие, о котором вы должны заботиться. в веб-приложениях, например, построенных с использованием Rails, истинный параллелизм («Глобальная блокировка интерпретатора» свободна). Когда два потока работают (например, обслуживают 2 пользовательских запроса) с JRuby, они могут работать одновременно в одном процессе, тогда как в MRI есть GIL (даже с собственными потоками 1.9), который избегает параллельного выполнения кода Ruby.
Для разработчика приложений это первое, что нужно иметь в виду при рассмотрении JRuby, так как оно действительно прекрасно сочетается с config.threadsafe!
, но требует от вас убедиться, что ваш код (и ваш гем-код) действительно «поточно-ориентирован» .