Ich verstehe nicht ganz, was ich frage (lol!), Nun, in dem Sinne, ob es überhaupt möglich ist, das heißt. Wenn nicht, tut mir leid.
Angenommen, ich habe ein Java-Programm. Es hat eine Main
und eine JavaCalculator
Klasse. JavaCalculator
hat einige Grundfunktionen wie
public int sum(int a,int b) {
return a + b
}
Angenommen, ich habe eine Ruby-Datei. Angerufen MyProgram.rb
.
MyProgram.rb
kann alles enthalten, was Sie von einem Ruby-Programm erwarten können. Nehmen wir an, es enthält Folgendes:
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
Gut. Dann ahnen Sie vielleicht schon, was ich tun möchte:
- Ich möchte mein Java-Programm ausführen
- Ich möchte, dass die Ruby-Datei ausgeführt wird
MyProgram.rb
- Wenn das Ruby-Programm ausgeführt wird, erstellt es eine Instanz von
JavaCalculator
, führt diesum
Funktion aus, ruft den Wert ab und druckt ihn dann aus. - Die Ruby-Datei wurde erfolgreich ausgeführt.
- Ich möchte, dass die Ruby-Datei ausgeführt wird
- Das Java-Programm wird geschlossen.
Hinweis : Das "Erstellen einer Instanz von JavaCalculator
" ist nicht unbedingt erforderlich. Ich würde mich damit zufrieden geben, nur eine sum
Funktion von beispielsweise der Main
Klasse aus auszuführen .
Meine Frage: ist so etwas möglich? Kann ich ein Java-Programm ausführen, das intern eine Ruby-Datei ausführt, die das Java-Programm anweisen kann, bestimmte Dinge zu tun und Ergebnisse zu erzielen? Im obigen Beispiel fordert die Ruby-Datei das Java-Programm auf, eine Summe dafür zu erstellen und das Ergebnis anzugeben.
Das mag lächerlich klingen. Ich bin neu in solchen Dingen (wenn es möglich ist, das heißt).
Warum frage ich das?
Ich habe ein Java-Programm, das eine Art Spiel-Engine ist. Meine Zielgruppe sind jedoch einige Ruby-Codierer. Ich möchte nicht, dass sie Java lernen. Also dachte ich mir, dass das Java-Programm vielleicht einfach die Funktionalität bieten könnte (Fähigkeit, Fenster zu erstellen, Sprites anzuzeigen, Sounds abzuspielen ...), und dann kann mein Publikum einfach mit Ruby die Logik codieren, was im Grunde nur meine Java-Engine verlangt Dinge wie das Anzeigen von Sprites oder das Spielen von Sounds.
Dann habe ich darüber nachgedacht.
quelle
Antworten:
Was Sie wahrscheinlich wirklich suchen, ist JRuby -> http://jruby.org/
JRuby ist eine voll funktionsfähige, kompatible Ruby-Implementierung auf der Java Virtual Machine. Laut einigen Rubyisten ist es auch das schnellste (vorausgesetzt, Sie arbeiten auf einer Java 7-kompatiblen VM). JRuby kann Java-Bibliotheken aufrufen und Rückgabewerte von diesen Aufrufen übernehmen. Kurz gesagt, Sie können das Beste aus beiden Welten haben.
quelle
Da scheinen Sie uns nicht zu glauben.
Hier erfahren Sie, wie Sie mit JRuby Ruby-Code von Java aus ausführen. JRuby ist kein „anderes Tool“, sondern nur die JAR-Datei, die Sie benötigen, um Ruby auf Java ausführen zu können. Es ist so einfach wie
Wie Sie sehen, ist es sogar so klug, von Rubys
hello_world
in JavasgetHelloWorld
Namenskonvention zu übersetzen .quelle
"JRuby 1.7.2 Complete.jar"
Datei von jruby.org/download herunter (auf derselben Seite finden Sie auch Sprachinstallationen, die für die Entwicklung nützlich sind, für Ihr endgültiges System ist jedoch nur die Datei complete.jar erforderlich!)