No entiendo completamente lo que estoy preguntando (¡jaja!), Bueno, en el sentido de si es posible, eso es. Si no es así, lo siento.
Supongamos que tengo un programa Java. Tiene una Main
y una JavaCalculator
clase. JavaCalculator
tiene algunas funciones básicas como
public int sum(int a,int b) {
return a + b
}
Ahora supongamos que tengo un archivo ruby. Llamado MyProgram.rb
.
MyProgram.rb
puede contener cualquier cosa que pueda esperar de un programa ruby. Supongamos que contiene lo siguiente:
class RubyMain
def initialize
print "The sum of 5 with 3 is #{sum(5,3)}"
end
def sum(a,b)
# <---------- Something will happen here
end
end
rubyMain = RubyMain.new
Bueno. Ahora bien, es posible que ya sospeches lo que quiero hacer:
- Quiero ejecutar mi programa Java
- Quiero que ejecute el archivo Ruby
MyProgram.rb
- Cuando se ejecuta el programa Ruby, creará una instancia de
JavaCalculator
, ejecutará lasum
función que tiene, obtendrá el valor y luego lo imprimirá. - El archivo ruby se ha ejecutado con éxito.
- Quiero que ejecute el archivo Ruby
- El programa Java se cierra.
Nota : "Crear una instancia de JavaCalculator
" no es completamente necesario. Estaría satisfecho con solo ejecutar una sum
función desde, digamos, la Main
clase.
Mi pregunta: ¿es posible? ¿Puedo ejecutar un programa Java que ejecute internamente un archivo Ruby que sea capaz de ordenar al programa Java que haga ciertas cosas y obtenga resultados? En el ejemplo anterior, el archivo Ruby le pide al programa Java que haga una suma y dé el resultado.
Esto puede sonar ridículo. Soy nuevo en este tipo de cosas (si es posible, eso es).
¿Por qué estoy preguntando esto?
Tengo un programa Java, que es una especie de motor de juego. Sin embargo, mi público objetivo es un grupo de codificadores de Ruby. No quiero que aprendan Java en absoluto. Así que pensé que tal vez el programa Java podría simplemente ofrecer la funcionalidad (capacidad para crear ventanas, mostrar sprites, reproducir sonidos ...) y luego, mi audiencia puede simplemente codificar con Ruby la lógica, que básicamente le pide a mi motor Java que haga cosas como mostrar sprites o reproducir sonidos.
Entonces pensé en preguntar esto.
fuente
Respuestas:
Lo que probablemente realmente buscas es JRuby -> http://jruby.org/
JRuby es una implementación de Ruby compatible con todas las funciones en la máquina virtual Java. Según algunos Rubyists, también es el más rápido (suponiendo que se esté ejecutando en una VM compatible con Java 7). JRuby puede llamar a bibliotecas Java y tomar valores de retorno de esas llamadas, en resumen, puede tener lo mejor de ambos mundos.
fuente
Ya que no pareces creernos.
Aquí se explica cómo ejecutar código ruby desde Java, utilizando JRuby. JRuby no es "una herramienta diferente", es solo el archivo JAR que necesita para poder ejecutar Ruby sobre Java. Es tan simple como
Como puede ver, es muy inteligente traducir de Ruby's
hello_world
a lagetHelloWorld
convención de nomenclatura de Java .fuente
"JRuby 1.7.2 Complete.jar"
archivo de jruby.org/download (también encontrará instalaciones de idiomas en la misma página, que son útiles para el desarrollo, ¡pero su sistema final solo requerirá el complete.jar!)