Java Native Interface (JNI) is a part of the Java standard that enables developers to write methods in languages that are compiled to native code, such as C and C++, and call those methods from Java code. JNI is also what connects the Java runtime environment to the underlying operating system. For details on JNI and how it can be used with Java code, see the Java Native Interface Specification.
To make things as easy as possible for the Java developer, JNI lets a native method use Java objects in the same way that Java code uses these objects. Within the native method, Java objects can be created and used. This ability to access and use Java objects enables the native method to use other Java objects through references passed to it from a Java application.
JNI is especially useful when you want to use platform-specific features or take advantage of hardware in the platform that can’t be accessed through Android APIs, such as accessing faster numerical computation by taking advantage of FPU instructions. Graphics-intensive code that makes extensive use of the OpenGL API is another place to use JNI.
This chapter covers JNI basics for programmers using the Android Native Development Kit (NDK). The NDK makes it more convenient to compile native code that can be used with Android programs.
When deciding whether you should develop in native code, think about your requirements and consider whether the Android SDK already provides the functionality ...