Java Native Interface (JNI) je standardní mechanismus pro spouštění kódu pod kontrolou Java Virtual Machine (JVM), který je napsán v C/C++ nebo Assembly a propojen jako dynamické knihovny; umožňuje nepoužívat statické propojení. To umožňuje volat funkci C / C++ z programu Java a naopak. Dřívější rozhraní, na rozdíl od JNI, nesplňovala podmínku binární kompatibility .
Hlavní výhodou JNI oproti předchozí verzi ( JDK 1.0 NMI - Native Method Invocation) a dalším podobným rozhraním (Netscape Java Runtime Interface nebo Microsoft's Raw Native Interface a COM/Java Interface) je, že JNI bylo původně navrženo pro binární kompatibilitu , pro aplikace. kompatibilita, napsaná pomocí JNI, pro jakékoli virtuální stroje Java na konkrétní platformě. Zkompilovaný kód C / C++ proto musí být spouštěn stroji Java, například v různých prohlížečích, vývojových nástrojích jako Symantec Visual Cafe a Sun Java Workshop pro konkrétní platformu ( v tomto případě Win32 ). Dřívější rozhraní nesplňovala podmínku binární kompatibility .
Prostřednictvím tohoto mechanismu může bajtový kód Java interagovat s kódem specifickým pro systémovou nebo aplikační platformu, který běží přímo pod různými operačními systémy [1] .
Rozhraní JNI specifické pro platformu neposkytuje přístup k celému rozhraní pro programování aplikací konkrétního operačního systému, ale pouze k některým z nich. JNI byl poprvé použit v Javě verze 1.1 a byl vyvinut v Javě 2.
NMI (Native Method Invocation) byl prvním mechanismem, který Sun specifikoval pro vyvolání kódu C z Javy, a jediný mechanismus podporovaný v JDK 1.0.2. Ve všech následujících verzích Javy již NMI není podporováno a je nahrazeno částečně kompatibilním mechanismem JNI.