将Java与解释语言混合使用Inline :: Java vs. Jython vs. Jruby

时间:2013-07-09 18:51:09

标签: java ruby perl jruby jython

我想知道Perl,Python和他们与Java集成的方法有何不同。

我有通过Inline :: Java模块组合Perl和Java的经验。但没有使用Python的Jython和Ruby的JRuby的经验。

我理解Inline::Java是否可以通过使用Perl代码启动JVM,然后编译内联指定的Java代码到Java字节码或从类路径中的Jars加载请求的Java类。然后,程序员可以在Perl代码中使用这些Java类,此时,Inline::Java使用网络套接字或JNI在Perl空间和JVM之间传输数据。这种方法的优点是Perl代码运行仍然可以在标准的Perl解释器中运行,因此它的行为正常。此外,可以在同一程序中同时使用Inline::Java和基于C的Perl模块。最大的缺点是Perl和JVM存在通信开销,以及运行Perl和JVM进程的复杂性。

有谁能告诉我这种方法与Jython或JRuby相比如何?

我对Jython的理解是它将Python程序转换为Java字节代码并在JVM中运行它们。这样做的好处是调用Java库相对无缝。缺点是基于C的模块如Numpy不能与Jython一起使用。此外,理论上有可能Python代码在Jython下的行为与标准Python解释器不同。

我不太清楚JRuby是如何工作的,并且有兴趣听听人们使用它的经历。

1 个答案:

答案 0 :(得分:0)

您对Jython的理解是准确的。 Jython是用Java编写的,并编译为Java字节码。因此,Jython允许相当无痛地使用Java。你也可以认为differences between Jython and the standard Python是正确的。在许多情况下,差异被认为是特征,Jython认为它的一些差异是优越的,甚至表明CPython是需要修复的。其他是相反的,而其他的则是允许Java易于使用的差异,例如允许将关键字用作关键字之外的其他内容。

JRuby的工作方式与Jython类似,通过编译为Java字节码并用Java编写。我对它不熟悉,是否与标准Ruby有任何显着差异。