Pregunta

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

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

¿Fue útil?

Solución

JRuby es la implementación de Ruby que se ejecuta en una JVM, mientras que Ruby de Matz es una implementación de C.

Las características clave a tener en cuenta son:

  1. Jruby se ejecuta en máquinas virtuales Java y se compila o interpreta en código de bytes Java.
  2. JRuby puede integrarse con código Java. Si tiene bibliotecas de clases Java (.jar's), puede hacer referencia a ellas y utilizarlas desde el código Ruby con JRuby. En la otra dirección, también puede llamar al código JRuby desde Java. JRuby también puede usar la JVM y las capacidades del servidor de aplicaciones.
  3. JRuby generalmente está alojado en servidores de aplicaciones Java como Sun's glassfish o incluso el servidor web Tomcat.
  4. Aunque no puede usar gemas nativas de Ruby con JRuby, existen implementaciones de JRuby para la mayoría de las bibliotecas populares de Ruby.

Hay otras diferencias que se enumeran en la wiki de JRuby:

Otros consejos

Me sorprende que haya una cosa crucial que falta en todas las respuestas a esta pregunta, relacionada con GIL .

La principal diferencia que debería preocuparte especialmente. en aplicaciones web como las creadas con Rails es verdadera concurrencia (" Global Interpreter Lock " gratis). Cuando se ejecutan dos subprocesos (por ejemplo, atiende 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 de 1.9) que evita ejecutar código Ruby en paralelo.

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

Puedo estar equivocado, pero creo que puede empaquetar una aplicación JRuby on Rails de una manera que no puede hacerlo con el RoR normal: mire Mingle o similar. Hace posible vender sin caerse los pantalones / abrir el komono.

Dicho esto, no estoy lo suficientemente familiarizado con el empaquetado RoR, así que no me limites :)

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 implementación.

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 librerías tienen una versión no nativa disponible (al menos las más populares que he encontrado).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top