gpt4 book ai didi

java - 需要 JNI 或更简单的东西吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:40:23 26 4
gpt4 key购买 nike

所以我有一个 Java 程序可以在缓冲区中捕获原始以太网数据,还有一个 C 程序(实际上是一系列 C 程序)可以将该数据解码为可用格式并将其保存在文件中以供稍后分析。我想运行 Java,将数据发送到 C,附加一个文件并将控制权返回到原始程序以监听更多数据。

我的问题是我真的需要使用 JNI 来调用这个 C 程序,因为我将向它发送数据,还是我可以只使用 JConfic 或 exec?我的文件不是 .exec 文件,所以我并没有真正看到后者在工作,但我希望尽可能简单。大家怎么看?

最佳答案

您有以下选择:

  • 您可以为您的 C 代码创建一个 CLI 接口(interface),然后为所有支持的平台编译它并从 Java 执行它
  • 您可以使用 JNAJNI创建从 Java 调用库代码的桥梁,但您仍然需要为所有支持的平台编译 C 代码,只是您现在需要将其作为库提供

到目前为止,最简单的方法是创建一个 CLI 可执行文件,您可以从 Java 调用它并解析其输出。作为额外的好处,您还可以使用任何其他语言的 CLI 可执行文件。

不太容易的方法是使用 JNA。 JNA 使用起来非常简单,但并非所有地方和所有设备都支持它。例如,Android 不支持 JNA。检查您支持的设备的规范,了解您是否可以将 JNA 与它们一起使用。另请查看 this tutorial了解 JNA 的基本介绍。

困难的方法是使用 JNI。 JNI 一点也不直接使用。您将需要编写大量胶水代码来处理 JVM 调用,然后编写一些其他胶水代码来组成 JVM 友好的输出。然而,这是最广泛支持的方法(也适用于 Android)。同样,请检查您支持的设备的规范,以了解您是否可以将 JNI 与它们一起使用。如果想走JNI路线,可以查看this tutorial进行基本介绍。

因此,如果您没有非常复杂的事情要做(支持的功能不多,数据类型也不多),请使用 JNI。否则,请尝试更高级的方法。

关于java - 需要 JNI 或更简单的东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6386782/

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