JRuby es una de las implementaciones de ruby más completas (hay muchas otras como IronRuby, Maglev, Rubinius, XRuby, YARV, MacRuby). Es muy completo, por lo tanto, a menos que use gemas que usen código C nativo, muy probablemente sea simplemente compatible con la compatibilidad.
JRuby es un poco más rápido que la implementación real de C, pero admite subprocesos reales, mientras que la implementación oficial tiene problemas para conseguirlo (todavía usa Green Threads). Usar hilos Java de JRuby es bastante trivial, aunque requerirá que acople su código con Java (con un pequeño DI, este acoplamiento solo ocurrirá una vez).
Otro beneficio: herramientas de tiempo de ejecución. Java, como una plataforma , en lugar de un idioma, tiene un lote de herramientas de tiempo de ejecución para ayudarlo a diagnosticar problemas y verificar el estado de la aplicación (perfiles, JConsole, etc.).
Twitter ingenieros también mencionaron que el Rubí VM poco tiene problemas para ser un entorno para procesos de larga vida, mientras que el JVM es muy bueno en eso, porque se ha optimizado para que durante los últimos diez años.
Ruby también tuvo un pequeño problema de seguridad recientemente, lo que no afectó la implementación de JRuby.
Por otro lado, su proyecto requiere más artefactos (JVM, JRuby jarras, etc.). Si está utilizando una aplicación que se mantendrá con vida durante mucho tiempo, y desea un mejor soporte en tiempo de ejecución, JRuby puede ser una gran manera de hacerlo. De lo contrario, puedes esperar sin peligro hasta que necesites estas cosas para realizar el cambio (es probable que vaya sin problemas).
excelente respuesta, eso es exactamente lo que necesitaba saber. Gracias. :) –
La versión de los desarrolladores de Twitter sobre Ruby es algo engañosa. Si el problema había sido lo que estaban diciendo, lo sensato habría sido ir con JRuby. No movieron su código de Ruby a Java, lo reescribieron en Scala. Parece que su problema fue más con su código que con MRI. – Chuck
Tenga en cuenta también que el movimiento de Twitter Ruby-Scala fue principalmente en la parte de la aplicación que a) admitieron que estaba mal hecho en Ruby y (b) está bien adaptado a un lenguaje de alto rendimiento de todos modos. –