gpt4 book ai didi

java - 将不同语言的插件集成到一个框架中

转载 作者:行者123 更新时间:2023-12-01 19:22:33 25 4
gpt4 key购买 nike

我有一个问题要问:假设我创建一个具有插件架构的可扩展软件应用程序,以便新的应用程序可以集成到这个工具中。如果一个新应用程序是用不同的语言编写的,并且需要集成到我的这个应用程序中,我是否需要使用 SWIG 和 Java Native Interface 等工具(当然取决于所使用的语言)?如果没有,我需要什么?

最佳答案

suppose I create a extensible software application with a plug in architecture

好的。您已经编写了一些代码。我会假装它是用 Java 编写的,因为您提到了 SWIG 和 JNI。

If a new application is written in a different language

这是怎么发生的?

  1. 你已经计划好了。在这种情况下,您的应用程序有一个支持至少一种附加语言的 API。 “不同的语言”并没有多大意义,因为作为开发人员,您需要决定您可以容忍哪些语言。新语言并不是一个随机事件。它们是您设计的目的。

  2. 你没有计划。在这种情况下,其他人(与您的设计相反)需要另一种语言。一种并非您设计的语言。

选择 1 是最常见的。您规划了特定的语言,并为这些语言编写了特定的 API 库。您用其他语言编写了必要的 API 库,使这些语言能够与您的应用程序配合使用。

您可能不使用 SWIG 和 Java Native Interface 等工具来创建此 API。如果您想支持 Python,您需要使用一堆 Python 工具来允许 Python 程序员使用您的应用程序。

选择 2 不太常见。要么是您没有计划,要么是有人坚持根据自己选择的语言编写自己的 API 库。

您可能不使用 SWIG 和 Java Native Interface 等工具来创建此 API。如果其他人想要支持 Python,他们会使用一堆 Python 工具来使用您的应用程序。

<小时/>

真正的问题不是“我是否需要使用 SWIG 和 Java Native Interface 等工具(当然取决于所使用的语言)?”或者类似的东西。

真正的问题是

  1. 如何选择除实现语言之外的其他语言来支持?您似乎正在使用 Java。您希望支持除 Java 之外的更多语言。 [只是猜测 - 你的问题不完整。]

    答案:抛硬币。无论您认为市场需要什么语言。 C很受欢迎。 C# 也是如此。 Python 也是如此。帕斯卡不太受欢迎。

  2. 如何编写框架以允许使用“外来”语言?

    答案:这很有挑战性。

要编写允许多种语言界面的应用程序,您必须做很多事情。

  1. 充分了解多种语言,了解它们的局限性。

  2. 编写您的应用程序,以便您的所有不同语言都能成功使用该 API。

  3. 拥有非常非常清晰的用例和单元测试来证明应用程序确实可以这样工作。

  4. 避免特定于语言的功能。避免特定于硬件的功能。这意味着避免 API 中的所有“ native ”或“原始”数据类型,并使用真正的标准类型。通常,Unicode 字符串以 UTF-8 表示。那种普遍存在、无处不在的东西。

  5. 避免古怪的非标准协议(protocol)。 HTTP、FTP 等技术已被广泛采用,因此将它们作为接口(interface)不会有太大的错误。他们可能会很慢。为了获得更好的速度,您可以在“外部”代码和您的应用程序之间创建命名管道。如果您希望外部代码“直接”访问您的框架,请三思。

  6. 或者,像许多 API 所做的那样,将 C 视为接口(interface)的“通用语言”。将所有内容设计为可从 C 程序调用。使用 C 约定和 C 友好的数据类型。这有局限性,但很多人都这样做。

关于java - 将不同语言的插件集成到一个框架中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3336102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com