ruby-on-rails ruby jruby

ruby on rails - ¿Cuál es la diferencia entre Ruby y JRuby?



ruby-on-rails (8)

JRuby es principalmente compatible con Ruby. Un aspecto de JRuby es que puede ejecutarlo en modos no compatibles por motivos de rendimiento .

¿Puede alguien proporcionarme en términos sencillos la diferencia entre el desarrollo de un JRuby y una aplicación Ruby, Rails?

Utilizo NetBeans como mi IDE de Ruby on Rails y cada vez que creo un proyecto me hace esa pregunta, y realmente no entiendo la diferencia. ¿Hay algún pro y contras?


JRuby es una implementación Java del lenguaje de programación Ruby.



JRuby se ejecuta en la máquina virtual Java (el intérprete se escribió en Java), mientras que el intérprete original de Ruby se escribió en C. Ambos también tienen ventajas y desventajas (Ruby puede usar extensiones nativas, JRuby puede acceder a tipos de Java, objetos, etc.)

JRuby usa la sintaxis de Ruby 1.8.6, 1.9.x estará disponible pronto. JRuby tiene subprocesos de Java (lo que significa que se escalará a muchas CPU, núcleos, etc.), Ruby tiene algunos problemas con el subproceso del espacio de usuario, el bloqueo de ec.

Personalmente, uso JRuby con Glassfish v3 y Netbeans para el desarrollo de RoR, se escala mucho mejor que el rubí + cargas de mestizos, apaches y es más fácil de manejar.


Por lo que sé, jruby es simplemente una implementación de ruby ​​escrita en java, por lo que permite una fácil integración con el tiempo de ejecución de java.


Ruby corre dentro de un intérprete basado en C nativo. JRuby se ejecuta dentro de la máquina virtual de Java. Hay muchas gemas y complementos que podrían no funcionar dentro de JRuby, específicamente uno con extensiones C nativas, a menos que se hayan reescrito para ejecutarse en Java.

En última instancia, la diferencia llega cuando realmente desea implementar su aplicación (asumiendo que las gemas que desea utilizar no fueron un problema). Si desea implementar un servidor web java, entonces JRuby sería el camino a seguir. Si tiene un entorno * nix, entonces Passenger + Nginx o Apache también es muy popular, que utiliza el intérprete de empresa estándar ruby ​​o ruby. Siempre existe la opción de clúster mestizo o delgado también, de nuevo utilizando el intérprete estándar.


Ruby es un lenguaje de programación. JRuby es una implementación del lenguaje de programación Ruby.

Preguntar acerca de la diferencia entre los dos realmente no tiene sentido: están en dos niveles de abstracción completamente diferentes.

Es similar a preguntar cuál es la diferencia entre un automóvil y un Prius. Tampoco tiene sentido: un Prius es una implementación del concepto general de un automóvil. Podría preguntar cuál es la diferencia entre un Prius y un Hummer o la diferencia entre un automóvil y un avión, pero la diferencia entre un automóvil y un Prius no tiene sentido.

De manera similar, con Ruby, podrías preguntar sobre la diferencia entre Ruby y Python o JRuby y MRI, pero la diferencia entre Ruby y JRuby no tiene sentido.


JRuby es la implementación de Java de Ruby. Es compatible con Ruby 1.8, y se retrasa Ruby actual (1.9). Se ejecuta en una JVM y le permite integrar fácilmente las bibliotecas de Java existentes.