Nativní rozhraní Java

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 .

Účel

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.

Zastaralé rozhraní

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.

Poznámky

  1. Například pro řadu systémových volání rozhraní Windows System Programming Interface (Windows API), Mac OS API nebo GNU/Linux

Viz také