Introduktion till det ursprungliga nyckelordet:
Det ursprungliga nyckelordet fungerar som en länk mellan JAVA-språket och delar av koden eller biblioteket som är skrivna på andra språk än JAVA, vilket kan vara beroende av den maskin du arbetar på. Om nyckelordet native används för en metod innebär det att metoden kommer att implementeras med hjälp av native kod skriven på ett annat språk (som C eller C++) via JNI (JAVA native interface).
Syntax:
Syntaxen för native code är densamma som vanlig funktionsdefinition med nyckelordet ”native” lagt till i början av funktionen.
Till exempel:
Public class testing
{public native String testMethod (String parameter);}
Här är public en access modifier. Den ska vara offentlig så att en annan fil kan använda den. String är funktionens returdatatyp. Den kan vara heltal, tecken eller boolska beroende på nyckelordet. Den parameter som skickas till den här funktionen är också av datatypen sträng. Allt ska hållas under klassen.
Efter funktionsdeklarationen anropar vi denna funktion via objektet som skapats och biblioteket som laddats.
public static void main(String args)
{
System.loadLibrary(”testing”);
testing testingnew = new testing();
String output = testingnew.stringMethod(”NATIVE”);
}
Biblioteket som definieras ovan ska laddas först och n dess objekt skapas. Med hjälp av detta objekt anropas den infödda funktionen.
Hur det infödda nyckelordet fungerar?
Det bör finnas två filer. Den ena innehåller Javakod och den andra innehåller C/C++-arvkod. Javakoden kommer att användas för att anropa den äldre koden. Denna äldre kod kommer att interagera med maskinvaran och ge det förväntade resultatet.
När den äldre koden interagerar med maskinvaran kommer den inte att följa de riktlinjer som fastställts av JAVA. Denna kod kommer att göra den önskade bearbetningen för att få utdata och skicka resultaten till JNI. Java native interface kommer sedan att kontrollera i sin katalog som innehåller alla regler för native code (detta finns i filen javah.exe i SDK). JNI är utformad som en del av Javas verktygslåda. Efter denna behandling kommer JAVA att publicera resultaten i själva JAVA-språket. När vi skapar ett program i JAVA måste vi se till att det finns en länk för variabler och dataflöde mellan JAVA-filen och den gamla filen, så att det finns ett smidigt dataflöde mellan de båda.
Steg som förklarar hur man använder sig av infödda nyckelord ges nedan:
- Skriv JAVA-koden som innehåller infödda metoder, delade bibliotek som laddats och spara den med hjälp av ”filename.JAVA”.
- Kompilera JAVA-koden och konvertera koden till bytecode.
- Skapa en C/C++-huvudfil som innehåller signaturer för inhemsk funktion som ska anropas.
- Skriv en C/C++-kod som innehåller implementeringen av den inhemsk metod som ska anropas.
- Kör den körbara JAVA-filen för att se resultatet.
Exempel för att visa implementering av native nyckelord:
Vi bör skriva kod i Eclipse och köra koden för att skapa ett bibliotek som sedan används för att implementera C-kod.
Kod: package com.slackerOne;
public class JPP {
public static native void pAccess();
public static native int pRead();
public static native void pWrite(int port, int output);
static{
System.loadLibrary(”JPPlibs”);
}
public void jAccess(){
JPP.pAccess();
}
public int jRead(){
return JPP.pRead();
}
public void jWrite(int port, int output){
JPP.pWrite(port, output);
}
}
När du sparat den här koden i en ny ”klass” i java-projektet. Vi måste ställa in körmiljön för att generera headerfilen.
När vi kommer att köra detta bör vi få ett bibliotek genererat.
Utmatning:
Här har vi skapat headerfilen från java-koden som kommer att fungera som en länk mellan infödd kod och javaspråket.