Interfață nativă Java
Java Native Interface (JNI) este un mecanism standard pentru rularea codului sub controlul Java Virtual Machine (JVM), care este scris în C/C++ sau Assembly și legat ca biblioteci dinamice; permite să nu se folosească legături statice. Acest lucru face posibilă apelarea unei funcții C / C++ dintr-un program Java și invers. Interfețele anterioare, spre deosebire de JNI, nu îndeplineau condiția de compatibilitate binară .
Scop
Principalul avantaj al JNI față de versiunea anterioară ( JDK 1.0 NMI - Native Method Invocation) și alte interfețe similare (Netscape Java Runtime Interface sau Microsoft's Raw Native Interface și COM/Java Interface) este că JNI a fost proiectat inițial pentru compatibilitate binară , pentru aplicare. compatibilitate, scrisă folosind JNI, pentru orice mașină virtuală Java de pe o anumită platformă. Prin urmare, codul C / C++ compilat trebuie executat de mașini Java, de exemplu, în diverse browsere, instrumente de dezvoltare precum Symantec Visual Cafe și Sun Java Workshop, pentru o anumită platformă ( Win32 în acest caz). Interfețele anterioare nu au îndeplinit condiția de compatibilitate binară .
Prin acest mecanism , codul octet Java poate interacționa cu codul specific sistemului sau platformei aplicației care rulează direct sub diferite sisteme de operare [1] .
Interfața JNI specifică platformei nu oferă acces la întreaga interfață de programare a aplicațiilor a unui anumit sistem de operare, ci doar la o parte din acesta. JNI a fost folosit pentru prima dată în versiunea Java 1.1 și a fost dezvoltat în Java 2.
Interfață depreciată
NMI (Native Method Invocation) a fost primul mecanism specificat de Sun pentru invocarea codului C din Java și singurul mecanism suportat în JDK 1.0.2. În toate versiunile ulterioare de Java, NMI nu mai este suportat, fiind înlocuit de un mecanism JNI parțial compatibil.
Note
Vezi și
- Platform Invoke (P / Invoke) - un analog al JNI în .NET Framework
- Java Native Access este o bibliotecă pentru un acces mai convenabil la codul nativ din Java.