3

我想知道 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 是如何工作的,并且有兴趣听听人们使用它的经验。

4

1 回答 1

0

您对 Jython 的理解是准确的。Jython 用 Ja​​va 编写并编译为 Java 字节码。正因为如此,Jython 允许相当轻松地使用 Java。您认为 Jython 和标准 Python 之间可能存在差异也是正确的。在许多情况下,差异被认为是特性,Jython 认为它的一些差异是优越的,甚至建议 CPython 是需要修复的。其他的则相反,还有一些差异使得 Java 易于使用,例如允许将关键字用作关键字之外的东西。

JRuby 的工作方式与 Jython 非常相似,都被编译成 Java 字节码并用 Java 编写。我不太熟悉它以及它与标准 Ruby 是否有任何显着差异。

于 2013-07-09T19:01:16.343 回答