【问题标题】:JNI: Connecting Java with modules in other programming languagesJNI:将 Java 与其他编程语言中的模块连接起来
【发布时间】:2013-11-25 15:33:38
【问题描述】:

如果我有 Java 后端,并且我有多个使用非 JVM 语言(如 PHP、Python、Perl、Ruby、Node.js 等)编写的 Web 层应用程序,并且如果我想获得 Java 和非 JVM 部分已连接,我可以使用 JNI 将它们绑定在一起吗?我知道有 REST/SOAP Web 服务选项,但是如果我使用 JNI 直接连接 Java 和非 JVM 部分,它是否比使用 Web 服务更直接和高效?有没有一种简单通用的方法来使用 JNI 连接 Java 和所有其他非 JVM 语言?

【问题讨论】:

    标签: java php python ruby node.js


    【解决方案1】:

    我不知道简单和通用。除了JNI,还有

    1. Simplified Wrapper and Interface Generator
    2. Java Native Access
    3. ActiveMQ
    4. Apache Camel

    但如果我是你,我真的会看 SWIG(例如上面的 1 号)。

    您可能还想查看Apache Commons Bean Scripting Framework。 最后,您列出的所有语言都有 JVM 可托管的对应语言。例如,RhinoQuercusJythonjRubyjerlsisc

    【讨论】:

    • 谢谢艾略特。 SWIG 在 Java 和所有非 JVM 语言的本机引擎(如 C-Python 解释器)之间的互操作性如何?我可以直接从 Java 调用 Python/PHP/Node 函数吗?反之亦然?
    • @tonga 有多种方法可以做到这一切。我需要比可能的更具体的东西吗?答案几乎肯定是肯定的。
    • 如果我不想使用这些语言的 JVM 对应物,如 Jython/JRuby,那么如果我想通过 JNI 调用其他语言,那么 SWIG 可能是最好的方法吗?我假设的场景是一些由 Django/Rails/Node 等编写的 Web 层前端,我想使用 Java 后端与它们通信以连接到持久层。
    • Java Native Access 或 SWIG(我认为),但不要忘记选项 3 和 4。
    • 好的,我都试试看。谢谢。
    猜你喜欢
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    相关资源
    最近更新 更多