Відповіді:
JRuby - це реалізація Ruby, яка працює на JVM, тоді як Matz's Ruby - це C-реалізація.
Основні особливості, які слід зазначити:
Є інші відмінності, які перелічені на вікі JRuby:
Я здивований, що у всіх відповідях на це питання, пов’язаних з GIL , бракує важливої речі .
Основна відмінність, яку ви повинні дбати про esp. у веб-додатках, таких як побудовані за допомогою Rails, справжня паралельність ("Global Interpreter Lock" безкоштовно). Коли в JRuby запущено два потоки (наприклад, що обслуговують 2 запити користувачів), вони можуть працювати одночасно в рамках одного процесу, тоді як в MRI є GIL (навіть з рідними потоками 1.9), що дозволяє уникнути паралельного виконання коду Ruby.
Для розробника додатків це перше, що потрібно пам’ятати, розглядаючи JRuby, оскільки він справді світить, config.threadsafe!
але вимагає, щоб ви переконалися, що ваш код (і ваш код дорогоцінного каміння) є справді безпечним для потоків.
Можливо, я помиляюся, але я думаю, що ви можете упакувати додаток JRuby on Rails таким чином, що не можете зробити із звичайним RoR - подивіться на Mingle чи подібне. Дозволяє продати, не скидаючи штани / відкриваючи комоно.
Це сказав, що я недостатньо знайомий з упаковкою RoR, тому не тримайте мене за це :)
в основному це має працювати так само. в jRoR ви можете отримати доступ до речей, яких у вас би не було в RoR. Зазвичай, головним чином, це стосується розгортання.
Однак якщо ваш додаток RoR використовує вбудовані бібліотеки, які не мають еквівалента, який працює на JVM, це може викликати біль. Однак у більшості мов доступна не рідна версія (принаймні, популярна, яку я натрапив).
Тут вже є кілька чудових відповідей.
eebbesen вже охопив основи, а Карес (сам!) сказав нам, що JRuby не має GIL.
Додам з більш практичної точки зору, я запустив програми на Ruby on Rails, а потім міркував на JRuby з міркувань продуктивності.
Були дві основні переваги від продуктивності: JRuby за певних обставин просто (або був) просто швидший, ніж Рубі, і два, відсутність згадок про замку Global Interpreter Lock дозволило мені зробити багатопотокове читання, що, хоча і хитрі, розблоковані накази на величину, приносить користь .
Дуже велике додаток Ruby on Rails перенеслось і пробігло через годину, дорогоцінні камені та все. Єдиним фактичним збоєм було те, що реджекси Java трохи відрізняються від рубі. Це монументальне досягнення з боку JRuby.