JRuby: Implementación de Ruby en la JVM

Iniciado por Expermicid, Septiembre 27, 2014, 01:18:36 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

JRuby es una implementación 100% Java del lenguaje de programación Ruby. Básicamente es un intérprete de Ruby escrito en Java y que se ejecuta sobre la máquina virtual. Es una de las tantas implementaciones, de las más completas.


Actualmente Ruby se encuentra en su versión 1.9.2, y la implementación oficial (la más usada – Matz's Ruby Interpreter o MRI) se toma como referencia para la especificación del lenguaje. Esta versión de Ruby corre sobre una máquina virtual específica de Ruby, y está escrita en C. JRuby soporta completamente Ruby 1.8, y se está trabajando en la compatibilidad con 1.9.2. Además de estas dos implementaciones existen también MacRuby (Ruby en Mac OS X), Rubinius, y otras.

La madurez de una implementación es medida (segun Wikipedia) por su habilidad de ejecutar Ruby On Rails. Este punto se denomina la singularidad Rails. Para tener una referencia de la madurez de JRuby, en mayo de 2010 solamente la MRI y JRuby eran capaces de ejecutar Rails sin modificaciones en un ambiente de producción.

¿Porqué JRuby?

No recuerdo cuándo leí por primera vez sobre JRuby, pero esta fue la primer pregunta que vino a mi cabeza. No me terminé de convencer de su utilidad hasta que fui a RubyConf Uruguay.

El tema es que JRuby es solo Ruby, pero no es solo Ruby. Se ejecuta sobre la JVM, que tiene bastante trabajados y aceitados varios aspectos de una máquina virtual como el Garbage Collector. Además, tenemos a disposición las miles de herramientas y bibliotecas ya maduras en el ambiente Java, y la integración con todos los demás lenguajes que corren sobre la JVM. Agregarle a eso la cantidad de plataformas en las que puede correr (y la concurrencia).

En resumen, podemos programar en Ruby dentro del ambiente Java, con todas las ventajas que esto nos aporta.

Usando JRuby

Instalarlo es trivial, en mi caso simplemente usé yaourt para descargar e instalar el paquete, pero pueden visitar el sitio web para descargarlo y ver instrucciones de instalación: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Una vez hecho esto, podemos ejecutar código Ruby con JRuby, o escribir un híbrido Ruby Java. Un ejemplo que Charles Nutter – uno de los lead developers y gran evangelista de JRuby – dió en la RubyConf fue levantar un JFrame con JRuby. Es un código bien sencillo, pero en mi caso fue como el golpe que me hizo dar cuenta que se "programa Ruby con Java" (no sé si me explico, en fin, dejo a libre interpretación):

Código: ruby
#Usar Java
require "java"

#Importar las clases Java requeridas:
include_class javax.swing.JFrame
include_class javax.swing.JLabel

#Crear Frame y agregar etiqueta:
f = JFrame.new 'Ventana - JRuby'
f.setSize 400,400
l = JLabel.new 'Hola mundo desde JRuby'
f.add l
f.show


No hay que olvidar además que podemos hacer uso de Ruby On Rails y desplegarlo junto a otras aplicaciones web en un servidor Java como Tomcat.

JRuby 1.6

Esta entrada fue motivada por el lanzamiento de JRuby 1.6.0 RC1. Se trata de uno de los hitos más importantes para JRuby debido a varias razones. Llevó 9 meses de trabajo y algunas de las características destacadas son la compatibilidad con Ruby 1.9, mejoras en el rendimiento y soporte para Windows.

Respecto a la compatibilidad con el lenguaje y la API de Ruby 1.9.2, está casi terminada. Faltan algunas pocas cosas por implementar antes de la versión final. El rendimiento de las llamadas a métodos Ruby ha sido mejorado, reduciendo sustancialmente los tiempos, además de muchas optimizaciones en respuesta a reportes de los usuarios.

Otras mejoras a destacar:

  • Profiler Gráfico incorporado
  • Cambios en RubyGems – Actualización a RubyGems 1.4.2 y otros cambios
  • Soporte experimental para API de extensión de C
  • Preview de soporte RubyGems para Maven
  • Compatibilidad y experiencia de usuario mejorada en Windows
Además de todo esto, se hicieron más de 2000 commits y se resolvieron 265 problemas. El desarrollo de esta versión contó con la mayor cantidad arreglos, revisiones y contribuciones de usuarios hasta el momento.

Con todo esto podemos suponer que JRuby está creciendo, y seguirá así por un buen tiempo. Ya presenta una alternativa interesante a Ruby en un contexto de desarrollo específico de Java.

Viniendo de desarrollar en Java y queriendo desarrollar en Ruby, mirar JRuby es como un puente entre ambas. Todavía tengo fijada la idea de aprender Ruby, pero JRuby presenta una oportunidad para ir pensando en mechar Ruby con el trabajo diario en Java.

Autor: Fernando Briano
Fuente: picandocodigo

Saludos