如何从Java传递和访问C数据?

如何从Java传递和访问C数据?,java,c,Java,C,我一直在用Java和C做一些编程,但现在我需要将两者结合起来使用 情况是这样的,我使用hadoop/Hbase来处理和存储大量数据,但我使用C/Cuda对数据进行数字运算。是否有一种稳定的/成熟的/通用的方法在Java中获取数据(基本上是一个日志文件)并将其传递给C程序,由C程序处理数据并将其存储为链接列表,然后由Java应用程序访问 我可能没有寻找正确的东西,但到目前为止,我找到了JavaCPP,它很好,但似乎将两个程序结合在一起。因为Java处理数据流,C处理数据处理,所以我认为最好将它们作

我一直在用Java和C做一些编程,但现在我需要将两者结合起来使用

情况是这样的,我使用hadoop/Hbase来处理和存储大量数据,但我使用C/Cuda对数据进行数字运算。是否有一种稳定的/成熟的/通用的方法在Java中获取数据(基本上是一个日志文件)并将其传递给C程序,由C程序处理数据并将其存储为链接列表,然后由Java应用程序访问


我可能没有寻找正确的东西,但到目前为止,我找到了JavaCPP,它很好,但似乎将两个程序结合在一起。因为Java处理数据流,C处理数据处理,所以我认为最好将它们作为可以相互通信的独立程序,而不是一个容易混淆的程序。但是我非常灵活,所以欢迎任何建议/解决方案。

这里是我头脑中的想法 1.使用java应用程序中的命令行运行C程序。 2.使用JNI/JNA 3.实现您自己的“客户机-服务器”体系结构。这听起来很复杂,但在某些情况下,这可能是最好、最简单的解决方案。 4.使用Web服务、SOAP、REST等进行通信

我希望这对开始有所帮助。
欢迎您提出更具体的问题。

如果您将程序分开,然后使用客户机-服务器方法,或者简单地选择一种通用文件格式,然后让后面的步骤轮询输出目录以处理新文件,您可能会发现保持程序的可测试性和清晰性更容易


<> >为了更容易地定义跨不同语言的文件格式,请考虑一个类似于./p/> @ SpkoT的包,我从来没有听说过,我会稍微研究一下。谢谢。谢谢,我知道节俭,但不知道谷歌协议缓冲区。似乎它是为了解决这类问题而设计的。非常感谢杰夫。