JNI - java natív felület - például
Fordítás nem ad az általános elképzelés, amely szerint a JVM futhat, hogy a kód van írva összeállított nyelven (például C) és fekszik a lemez, mint egy .dll (Unix általában .so)
JNI már kigondolt és megvalósított azok számára, akik a szükséges kihívással, hogy egy JAVA nem tud egyáltalán - ez valami gépfüggő utasítások, vagy tekintse meg az API az operációs rendszer, a fellebbezés a vezetők és a többi.
A teljes leírása itt található: Java Native Interface
Egy alább készül nagyon egyszerű kiviteli alak segítségével JNI. Egy példa készül, hogy milyen egyszerű használni ezt a mechanizmust.
1. Hozzon létre egy rendszeres osztály JAVA, de a módszer, hogy kell használni dll leírni, mint a natív. Ezt a felhívást, amely betölti a DLL-t.
public class JniTest
Rendszer. LoadLibrary ( "JniTest");
// felhívni a figyelmet, hogy a szó eredeti
nyilvános natív int showString (String message);
Most fordítsd példánkban
javac JniTest. Jáva
Ha semmi szörnyűség történt, akkor elméletileg kéne JniTest.class fájlt.
Most a folyamat javah segédprogramot. Ez a segédprogram létrehoz nekünk egy .h fájlt a programban.
Fontos: meg kell írni anélkül, hogy a fájl kiterjesztését.
javah -classpath. JniTest
Get JniTest.h fájl van ebben a formában.
Meg kell figyelni, hogy a gépsorokat. A többi változó általában nem annyira bonyolult. És itt azt látjuk, hogy szükség van, hogy húzza a húr a Unicode egy közönséges char.
Most dll teszünk a projekthez. Jobb lenne, hogy a rendszer már létrejött az utat a fordító.
JAVA_HOME - ez a környezeti változó, hogy mindig felírni. Általában ez az az út, hogy a könyvtár telepített JAVA - például C: \ j2sdk15. (Azt hiszem, ez érthető)
cl -I% JAVA_HOME% \ include -I% JAVA_HOME% \ include \ win32 -ld JniTest.cpp -FeJniTest.dll
cl - a fordító e a C ++ a Visual C ++. Használhatja bármilyen más fordítóval. Fontos, hogy összegyűjtse a forrás C DLL.
Látható, hogy az eredmény az összeállítás, hogy JniTest.dll. By the way, a Unix-alapú rendszereket kell fájltípust libJniTest.so. Itt egy funkciót. Kell előtag lib.
Most hozzon létre egy teszt.