JNA是一种无需编写JNI代码就可以使用原生开发库的技术。此外,还为常见系统函数提供了接口。JNA完全指南(包含概览和使用细节)可以从JavaDoc中获得,请阅读这个指南。问题、评论和探索式的讨论可以在邮件列表中寻找,尽管你也许会在StackOverflow上找到你需要的问题答案。
主要特性
- JNA为Java程序提供一种以纯Java编写调用本地共享类库的简便方法,不需要接触JNI或者本地代码。JNA功能同Windows的平台调用和Python中的ctypes相似。
- JNA允许你使用Java方法调用来直接调用本地方法。JNA编写的Java方法调用接口看起来像本地接口。大多数调用不需要特殊处理和配置,不需要模板文件和代码生成。
- JNA利用一小部分JNI库来实现动态调用本地方法。开发者使用一个Java接口来描述目标本地库的方法和结构。这使得利用本地代码的利用变得更为简单,并且不会带来多种配置和生成多个平台的JNI代码的开销。可以从这里找到技术细节。
- JNA把性能、正确性和易用性当作首要目标。除此以外,JNA包含一个平台相关的类库,这个类库包含已经映射好的本地方法调用和许多便利本地方法调用的公用接口。
- JNA是一个成熟的类库,被上百个商业软件和开源软件所使用。如果你使用了JNA,请告诉我们。详细的细节包含你公司的名称、项目的名称、目标和规模和使用JNA的方式。
依赖JNA的软件列表
- Apache Cassandra:NoSql数据库
- Rococoa:Mac cocoa类库映射
- jna-posix:POSIX的接口映射
- JNAAerator:从C的头文件自动生成JNA代码
- Freedom for Media in Java
- gstreamer for java
- Videolan
- SVNKit:一个纯java的SVN客户端
- OmegaT Computer-Aided Translation
- IntelliJ IDEA
- NetBeans IDE
- Athena Backup
- FileBot Media Renamer
- USB for Java
- Waffle:为Windows平台的java程序提供SSO支持
- leveldb-jna-posix:LevelDB接口映射