ruby-on-rails ruby jruby jrubyonrails

JRuby on Rails vs. Ruby on Rails, ¿cuál es la diferencia?



ruby-on-rails jrubyonrails (4)

JRuby es la implementación de ruby ​​que se ejecuta en una JVM, mientras que el rubí de Matz es una implementación de C.

Las características clave a tener en cuenta son:

  1. Jruby se ejecuta en Java VM y se compila o interpreta en código de bytes Java.
  2. JRuby puede integrarse con código Java. Si tiene librerías de clases Java (.jar''s), puede hacer referencia y usarlas desde dentro del código Ruby con JRuby. En la otra dirección, también puedes llamar al código Jruby desde Java. JRuby también puede usar las capacidades de JVM y del servidor de aplicaciones.
  3. JRuby generalmente se aloja en servidores de aplicaciones Java, como el glassfish de Sun o incluso el servidor web Tomcat.
  4. Aunque no se pueden usar gemas de rubí nativas con JRuby, existen implementaciones jruby para la mayoría de las bibliotecas populares de ruby.

Hay otras diferencias que se enumeran en la wiki jruby:

Estoy buscando probar JRuby y JRuby en Rails. Tengo problemas para encontrar información sobre la diferencia entre JRuby en Rails y Ruby on Rails.

¿Cuáles son las diferencias que debo tener en cuenta?


Me sorprende que falte algo crucial en todas las respuestas a esta pregunta, relacionadas con GIL .

La principal diferencia que debe importar especialmente en las aplicaciones web, como las construidas con Rails, es la concurrencia verdadera ("Global Interpreter Lock" es gratis). Cuando dos subprocesos se ejecutan (por ejemplo, sirven 2 solicitudes de usuario) con JRuby, son capaces de ejecutarse simultáneamente en un solo proceso, mientras que en MRI está el GIL (incluso con subprocesos nativos 1.9) que evita la ejecución de código Ruby en paralelo.

Para un desarrollador de aplicaciones, esto es lo primero a tener en cuenta al considerar JRuby, ya que realmente brilla con config.threadsafe! pero requiere que se asegure de que su código (y su código de gemas) sea "verdaderamente" seguro para subprocesos.


Puede que me equivoque, pero creo que puedes empacar una aplicación JRuby on Rails de una manera que no puedes hacer con RoR normal: mira a Mingle o similar. Hace posible vender sin dejar caer tus pantalones / abrir el komono.

Dicho esto, no estoy lo suficientemente familiarizado con el empaque RoR, así que no me dejes llevar a eso :)


sobre todo debería funcionar igual. en jRoR puedes acceder a cosas que no tendrías en RoR. Por lo general, es principalmente una preocupación de despliegue.

Sin embargo, si su aplicación RoR usa bibliotecas nativas que no tienen un equivalente que se ejecute en la JVM, eso puede ser un problema. Sin embargo, la mayoría de las libs tienen una versión no nativa disponible (al menos las populares que he encontrado).