JNI ( Java Native Interface ) je softwarová knihovna pro propojení integrován nativně JDK Java, který umožňuje Java kód běží uvnitř JVM volat a být volán nativních aplikací (tj. Programy specifické pro hardware a operační systém dotyčné platformy) nebo se softwarovými knihovnami založenými na jiných jazycích ( C , C ++ , assembler atd.).
Zde je několik příkladů použití JNI:
Garbage collector nefunguje JNI funkce , proto musí být programátor ve svém programování přísný.
Rozhraní JNI je méně složité s jazykem, který již používá objekty (jako C ++), zatímco na rozdíl od jazyků, jako je C, není koncept objektu a programování je obtížnější.
Když JVM volá funkci JNI, předá dva parametry Java jako parametry , první do objektu typu JNIEnv , druhý do libovolného objektu.
Zde je typický příklad volání funkce JNI.
JNIEXPORT void JNICALL Java_ClassName_MethodName (JNIEnv *env, jobject obj) { //Implement Native Method Here }Ukazatel envje struktura, která obsahuje rozhraní k JVM. Zahrnuje všechny funkce potřebné k interakci s JVM a práci s objekty Java.
Příklady funkce JNI: převodní tabulky Java nativní obrazy, řetězec Java String nativní znaky, vytvořit instanci objekty, zvládnout výjimky .
Následující tabulka uvádí hlavní příklady korespondence mezi typy Java a nativními typy C.
Typ Java | Nativní typ C. | Popis | Podpis typu |
---|---|---|---|
booleovský | nepodepsaný znak | boolean (false = 0) | Z |
byte | podepsaný znak | 8bitové celé číslo se znaménkem | B |
nádrž | bez znaménka krátký | 16bitové celé číslo bez znaménka | VS |
šortky | šortky | 16bitové celé číslo se znaménkem | S |
int | int | 32bitové celé číslo se znaménkem | Já |
dlouho |
dlouhý dlouhý nebo __int64 |
64bitové celé číslo se znaménkem | J |
plovák | plovák | 32bitové číslo s plovoucí desetinnou čárkou | F |
dvojnásobek | dvojnásobek | 64bitové číslo s plovoucí desetinnou čárkou | D |