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.




Kapcsolódó cikkek