This document discusses the Java Native Interface (JNI) which allows Java code running in the Java Virtual Machine (JVM) to call and be called by native code such as C and C++. It provides an overview of JNI and walks through a sample implementation in 5 steps. It also discusses more details of JNI including JNI types, the JNIEnv interface, accessing fields and methods, and managing native memory.