java - 将 Java 与解释型语言混合 Inline::Java vs. Jython vs. Jruby

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

最佳答案

您对 Jython 的理解是准确的。 Jython 是用 Java 编写的,可编译为 Java 字节码。因此,Jython 允许相当轻松地使用 Java。您认为可能存在 differences between Jython and the standard Python 也是正确的.在许多情况下,差异被认为是特性,Jython 认为它的某些差异更优越,甚至暗示 CPython 是需要修复的差异。其他则相反,还有一些是允许易于使用 Java 的差异,例如允许将关键字用作关键字以外的东西。

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

关于java - 将 Java 与解释型语言混合 Inline::Java vs. Jython vs. Jruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17555948/

相关文章:

java - 为什么 Maven 不在多模块项目中安装依赖项?

ruby-on-rails - 在 Rails 中发送电子邮件时事通讯/调查

perl - 从类子例程覆盖模块子例程

java - 单击另一个 portlet 内的链接时显示和隐藏 portlet

java - 难以理解此语法

javaagent(使用 Javassist 编写)无法正常工作

ruby - 简化的 Ruby 代码部署

ruby - 使用 InSpec 检查文件内容是否存在

perl - 安装 Bundle::CPAN 后如何恢复到以前的 Perl 设置?

哈希问题的 Perl 哈希