Original author(s) | Todd Fast, Timothy Wall, Liang Chen |
---|---|
Initial release | May 9, 2007 |
Stable release |
4.4.0 / March 15, 2017
|
Development status | Active |
Written in | C and Java |
Operating system | Windows, OS X, Android, AIX, FreeBSD, Linux, OpenBSD, Solaris, Windows Mobile |
Platform | Java 1.4 or later (for JNA 3.5.2 or earlier), Java 1.6 for JNA 4.0.0 and later |
Size | 1.83 MB (archived) |
Type | Software Library |
License | LGPL version 2.1 or later and (from version 4.0 onward) the Apache Software License, version 2.0 |
Website | github |
Java Native Access (JNA) is a community-developed library that provides Java programs easy access to native shared libraries without using the Java Native Interface. JNA's design aims to provide native access in a natural way with a minimum of effort. No boilerplate or generated glue code is required.
The JNA library uses a small native library called foreign function interface library (libffi) to dynamically invoke native code. The JNA library uses native functions allowing code to load a library by name and retrieve a pointer to a function within that library, and uses libffi library to invoke it, all without static bindings, header files, or any compile phase. The developer uses a Java interface to describe functions and structures in the target native library. This makes it quite easy to take advantage of native platform features without incurring the high development overhead of configuring and building JNI code.
JNA is built and tested on Mac OS X, Microsoft Windows, FreeBSD / OpenBSD, Solaris, Linux, AIX, Windows Mobile, and Android. It is also possible to tweak and recompile the native build configurations to make it work on most other platforms that run Java.