JNA : Java Glossary



JNA (Java Native Access). It gives Java programs easy access to native shared libraries (DLLs (Dynamic Link Libraries) on Windows) without writing anything but Java code — no JNI (Java Native Interface) or native code is required. Access is dynamic at runtime without code generation. You might think of it as a multi-platform JNI library to let you get at system functions that standard Java does not.

JNA allows you to call directly into native functions using natural Java method invocation. The Java call looks just like it does in native code. Most calls require no special handling or configuration; no boilerplate or generated code is required.

The JNA library uses a small native library stub to dynamically invoke native code. The developer uses a Java interface to describe functions and structures in the target native library. This makes it easy to take advantage of native platform features without incurring the high overhead of configuring and building JNI code for multiple platforms.

While some attention is paid to performance, correctness and ease of use take priority.

JNA has been built and tested on OSX (ppc, x86, x86_64), Linux (x86, amd64), FreeBSD/OpenBSD (x86, amd64), Solaris (x86, amd64, sparc, sparcv9) and Windows (x86, amd64). It has also been built for windows/mobile and Linux/ppc64, although those platforms are not included in the distribution.

It supports Primitive Types, Pointers, Strings, Wide (Unicode-16) Strings, Primitive Arrays, Buffers/Memory Blocks, Callbacks/Function Pointers, Variable Argument Lists (Varargs), Structures, Unions and Java Objects. It also has a number of sample apps to show how to use these more basic tools.

This page is posted
on the web at:


Optional Replicator mirror
of mindprod.com
on local hard disk J:

Canadian Mind Products
Please the feedback from other visitors, or your own feedback about the site.
Contact Roedy. Please feel free to link to this page without explicit permission.

Your face IP:[]
You are visitor number