close

Java Native Interface

Gå til navigation Gå til søg

Java Native Interface (JNI)  er en standardmekanisme til at køre kode under kontrol af Java Virtual Machine (JVM), som er skrevet i C/C++ eller Assembly og forbundet som dynamiske biblioteker; tillader ikke at bruge statisk linking. Dette gør det muligt at kalde en C / C++ funktion fra et Java -program og omvendt. Tidligere grænseflader, i modsætning til JNI, opfyldte ikke betingelsen om binær kompatibilitet .

Formål

Den største fordel ved JNI i forhold til den tidligere version ( JDK 1.0 NMI - Native Method Invocation) og andre lignende grænseflader (Netscape Java Runtime Interface eller Microsofts Raw Native Interface og COM/Java Interface) er, at JNI oprindeligt blev designet til binær kompatibilitet til anvendelse kompatibilitet, skrevet ved hjælp af JNI, for alle virtuelle Java-maskiner på en bestemt platform. Derfor skal kompileret C / C++- kode udføres af Java-maskiner, for eksempel i forskellige browsere, udviklingsværktøjer som Symantec Visual Cafe og Sun Java Workshop, for en bestemt platform ( Win32 i dette tilfælde). Tidligere grænseflader opfyldte ikke betingelsen om binær kompatibilitet .

Gennem denne mekanisme kan Java-bytekode interagere med system- eller applikationsplatformspecifik kode, der kører direkte under forskellige operativsystemer [1] .

Den platformsspecifikke JNI-grænseflade giver ikke adgang til hele applikationsprogrammeringsgrænsefladen for et bestemt operativsystem, men kun til noget af det. JNI blev først brugt i Java version 1.1 og blev udviklet i Java 2.

Forældet grænseflade

NMI (Native Method Invocation) var den første mekanisme, Sun specificerede til at kalde C-kode fra Java, og den eneste mekanisme, der understøttes i JDK 1.0.2. I alle efterfølgende versioner af Java understøttes NMI ikke længere, idet den erstattes af en delvist kompatibel JNI-mekanisme.

Noter

  1. For eksempel til en række systemkald til Windows System Programming Interface (Windows API), Mac OS API eller GNU/Linux

Se også

  • Platform Invoke (P / Invoke) ( eng. )  - en analog af JNI i .NET Framework
  • Java Native Access ( engelsk ) er et bibliotek for mere bekvem adgang til native kode fra Java.