很可能是一个愚蠢的问题,因为我对Java / Jython / JRuby /字节码不太了解,但是......
今天我偶然发现了_why's unholy ..它允许你从Ruby代码输出Python字节码。基本上允许它们生成相同的字节码..
Jython输出Java字节码,就像JRuby一样。由于这些都编译为相同的字节码,这是否意味着您可以使用Ruby中的任何Python库和Python中的Ruby库?
答案 0 :(得分:7)
答案 1 :(得分:5)
有两种方法可以做到这一点。两者都提供静态编译代码并从脚本生成真正的Java类的能力。在这种情况下,Jython AFAIK生成Java源代码,然后通过jythonc脚本调用javac。但这需要编译。
对于两个解释器,您可以从脚本调用Java代码,并且可以将解释器嵌入Java应用程序中。
例如,从Python调用Java:
>>> from java.util import Random
>>> r = Random()
>>> r.nextInt()
501203849
要在Java中嵌入JRuby解释器,你可以这样做(注意,也有基于JSR223的方法,这是核心方法):
package vanilla;
import org.jruby.embed.ScriptingContainer;
public class HelloWorld {
private HelloWorld() {
ScriptingContainer container = new ScriptingContainer();
container.runScriptlet("puts Hello world");
}
public static void main(String[] args) {
new HelloWorld();
}
你可以从Jyton做同样的事情(我想你需要正确地给出jruby路径):
import org.jruby.embed.ScriptingContainer
container = ScriptingContainer()
container.runScriptlet("puts Hello world")
反过来也可以这样做。
您不会通过导入将整个ruby stdlib导出到python解释器。您需要事先将ruby的stdlib预编译为字节码。
然而,通过上述技术,并添加了几个辅助脚本和已定义的接口,您可以将特定功能从一种语言桥接到另一种语言。