Komma igång med Java Native Interface (JNI)

Getting Started With Java Native Interface



Java Native Interface, förkortat JNI, är ett programmeringsgränssnitt som låter Java -utvecklare köra koder och utdrag från andra programmeringsspråk i Java. Den levereras tillsammans med det viktiga Java Software Development Kit eller SDK (vi kommer att täcka det i en annan handledning).

JNI är också vördad för sin funktion att uppmana API för att smyga in en virtuell Java -maskin i Java -applikationer. Detta gör det möjligt för devs att anropa Java -koden inom koden för den inbyggda applikationen.







Om du har arbetat lite med java har du förmodligen redan stött på de många prestandaproblem som oundvikligen kommer i din väg. Detta är inte ett problem när du kör samma kod på modersmålet, som kan prestera över arton gånger snabbare när det läses i en sammanställd modell. Utöver det kan du också använda föråldrade/inkompatibla maskinvarurutiner med inbyggda koder på andra språk.



Denna handledning visar hur maskinens C/C ++ - kod kan åberopas från en java -applikation.



Förkunskaper

Du kommer att behöva några saker för att följa igenom den här guiden ordentligt. Dessa inkluderar Java -kompilatorn, eller Javac.exe, tillsammans med JVM, liksom den inbyggda metoden C -generator (javah.exe). Alla tre av dessa är inbyggda i mjukvaruutvecklingssatsen, så du är bra om du har det. Förutom dessa tre behöver du också filerna som definierar JNI, inklusive Native header -filer och kompletta biblioteksfiler.





Och naturligtvis, i en handledning om hur du kör C- och C ++ -koderna, kommer vi också att använda C -kompilatorn för att skapa ett delat bibliotek.

JNI -komponenter

JNI drivs huvudsakligen av två komponenter, nämligen h och javah. H är huvudfilkomponenten som ersätter inbyggda koder med java -kod, medan Javah gör det så att den här filen kan laddas till apphuvudfiler av sig själv.



Återkallar C/C ++ från Java -kod

Steg 1: Skriva koden i Java

Koden skrivs först i java och uppfyller tre villkor. Först är det skrivet med den inbyggda metoden som ska åberopas senare. För det andra måste den ladda det delade biblioteket som den ursprungliga koden är en del av, och slutligen måste den åberopa de inbyggda metoderna.

Låt oss använda den här koden för att illustrera ytterligare:

Lägg märke till rad 3 och 6; detta är de linjer där de ursprungliga metoderna ingår. Koden som laddar de delade biblioteken finns på rad 10, vilket leder till att metoden åberopas mellan raderna 12 till 15.

Steg 2: Kompilera java -koden till bytekod

Det andra steget har att göra med att sammanställa Java -koden. Javac -kompilatorn kan göra jobbet här för oss; ge bara kommandot nedan:

$ javac Exempel 1.java

Steg 3: Skapa C/C ++ - huvudfiler

Därefter måste huvudspråksfilerna för modersmålet skapas. Denna rubrikfiler driver signaturerna för de ursprungliga koderna.

Dessa rubrikfiler kan skapas med det inbyggda javah -verktyget, en C -stubgenerator som medföljer SDK, med följande kommando:

javah Exempel 1

Följande utdata ska returnera:

Steg 4: Skriva den inbyggda koden

Det är här vi skriver C/C ++ - kod. Du bör notera alla signaturer som måste likna deklarationerna vi gjorde i steg 1.

Följande är en implementering skriven på C -språk:

Steg 5: Skapa ett delat bibliotek

Ett delat bibliotek kan skapas med valfri kompilator. Eftersom det delade biblioteket innehåller den inbyggda koden måste vi skapa en.

Steg 6: Starta ditt program

Detta steg innebär att utvärdera koden och identifiera eventuella problem med programmet. Detta kommer att involvera Java runtime -miljön eftersom koden kommer att köras i JVM främst.

Ge följande kommando:

java Exempel 1

Den ska återkomma:

Så det var vår korta nybörjarguide för att använda Java Native Interface. Vi hoppas att du tyckte att det var till hjälp.

Att lära sig att arbeta med JNI är viktigt för alla som vill utveckla Java -applikationer, särskilt Android -applikationer för smartphones.