概述
JNA 使 Java 程序可以轻松访问本机共享库,而无需编写 Java 代码以外的任何内容 - 不需要 JNI 或本机代码。此功能可与 Windows 的 Platform/Invoke 和 Python 的 ctypes 相媲美。
JNA 允许您使用自然 Java 方法调用直接调用本机函数。Java 调用看起来就像本机代码中的调用一样。大多数调用不需要特殊处理或配置;不需要样板文件或生成的代码。
JNA 使用小型 JNI 库存根来动态调用本机代码。开发人员使用 Java 接口来描述目标本地库中的函数和结构。这使得利用本机平台功能变得非常容易,而不会产生为多个平台配置和构建 JNI 代码的高昂开销。阅读这个更深入的描述。
尽管人们对性能给予了极大的关注,但正确性和易用性是优先考虑的。
此外,JNA 包括一个平台库,其中已经映射了许多本机功能,以及一组简化本机访问的实用程序接口。
特征
- 从 Java 到本机函数的自动映射,所有原始数据类型的简单映射
- 在大多数支持 Java 的平台上运行
- C 和 Java 字符串之间的自动转换,具有可定制的编码/解码
- 结构和联合参数/返回值,按引用和按值
- 函数指针,(从本机代码到 Java 的回调)作为参数和/或结构的成员
- 为本地函数指针自动生成的 Java 代理
- 按引用(指向类型的指针)参数
- Java 数组和 NIO 缓冲区参数(原始类型和指针)作为指向缓冲区的指针
- 嵌套结构和数组
- 宽(基于 wchar_t)字符串
- 本机长支持(32 位或 64 位,视情况而定)
- 演示应用程序/示例
- 在 1.4 或更高版本的 JVM 上受支持,包括 JavaME(早期的 VM 可能与存根 NIO 支持一起工作)
- 可定制的编组/解组(参数和返回值转换)
- 从 Java 方法到本机函数名称的可定制映射,以及可定制调用以模拟 C 预处理器函数宏
- 支持自动 Windows ASCII/UNICODE 函数映射
- 可变参数支持
- 本机指针的类型安全
- 虚拟机崩溃保护(可选)
- 针对高性能应用程序优化的直接映射。
- COM 支持早期和晚期绑定。
- COM/Typelib java 代码生成器。
网友评论