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