使用JNI在Java和C之间进行高效的数据共享

时间:2015-05-22 20:31:03

标签: java c java-native-interface

我正在尝试在Java代码中访问C结构。我知道有各种技术可以做到这一点,但我正在寻找最有效的方法来最小化语言之间的方法调用(通过JNI)和减少内存副本。

我的想法是将一个ByteBuffer指针从Java传递给C,并将C struct指针放在ByteBuffer中。然后,从Java端,我可以使用直接内存访问从C结构访问数据,并将变量解析为Java类。这样的事情是可能的,有人可以让我开始吗?

有没有更好/更快的技术?

1 个答案:

答案 0 :(得分:0)

我已经能够在Github上使用JNA(Java Native Access)项目轻松地从Java调用C语言。它运行良好,我也注意到他们讨论了如何从Java访问C结构。看一下这个页面(向下滚动阅读README):

JNA project on Github

并从该页面链接,他们的入门文档提供了访问和传递C结构的详细信息和示例:

Getting Started with JNA