Indfødt nøgleord i Java - Hvordan fungerer det indfødte nøgleord? (Eksempel)

Indholdsfortegnelse:

Anonim

Introduktion til indfødt søgeord i Java

Det oprindelige nøgleord fungerer som et link mellem JAVA-sprog og et stykke kode eller bibliotek skrevet på forskellige sprog bortset fra JAVA, som muligvis er afhængig af den maskine, du bruger. Hvis det oprindelige nøgleord anvendes til en metode, betyder det, at metoden implementeres ved hjælp af native kode skrevet på et andet sprog (som C eller C ++) via JNI (JAVA native interface).

Syntaks

Syntaks for nativ kode er den samme som normal funktionsdefinition med det "native" nøgleord tilføjet ved starten af ​​funktionen.

For eksempel:

Public class testing
(public native String testMethod (String parameter);)

Her er offentligheden en adgangsmodifikator. Den skal være offentlig, så en anden fil kan bruge den. Strengen er funktionens returdatatype. Det kan være heltal, karakter eller boolsk afhængig af nøgleordet. Parameteren, der overføres til denne funktion, er også af datatypestreng. Alt skal holdes under klasse.

Efter funktionserklæring kalder vi denne funktion via objekt oprettet og bibliotek indlæst.

public static void main(String() args)
(
System.loadLibrary("testing");
testing testingnew = new testing();
String output = testingnew.stringMethod("NATIVE");
)

Bibliotek defineret ovenfor skal indlæses først, og n dets objekt oprettes. Ved hjælp af dette objekt kaldes den oprindelige funktion.

Hvordan fungerer det indfødte nøgleord?

Der skal være to filer. Den ene indeholder JAVA-kode, mens den anden skal have C / C ++ arv kode. Java-kode bruges til at kalde den gamle kode. Denne ældre kode interagerer med hardware og returnerer det forventede output.

Når den ældre kode interagerer med hardware, vil den ikke følge de retningslinjer, der er fastlagt af JAVA. Denne kode udfører den ønskede behandling for at få output og videregive resultaterne til JNI. Java native interface kontrollerer derefter i dets bibliotek, der indeholder alle reglerne for native code (Dette kommer under en fil kaldet javah.exe i SDK). JNI er designet som en del af Java-værktøjssættet. Efter denne behandling vil JAVA offentliggøre output på selve JAVA-sproget. Når vi opretter programmet i JAVA, skal vi sørge for, at der er en variabel / dataflytforbindelse mellem JAVA-filen og den ældre fil, så der er en jævn strøm af data mellem begge.

Trin, der forklarer, hvordan man bruger naturlige nøgleord, er beskrevet nedenfor:

  1. Skriv JAVA-koden, der indeholder oprindelig metode, det delte bibliotek, der er indlæst, og gem det ved hjælp af “filnavn.JAVA”.
  2. Kompiler JAVA-kode og konverter koden til bytecode.
  3. Opret en C / C ++ headerfil indeholdende en indbygget funktionssignatur, der skal kaldes.
  4. Skriv C / C ++ -kode har en oprindelig metodes implementering.
  5. Kør JAVA-eksekverbar fil for at se resultaterne.

Eksempel

Vi skal skrive kode i Eclipse og køre koden for at oprette et bibliotek ved hjælp af hvilken C-kode derefter implementeres.

Kode : pakke 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);
)
)

Efter at have gemt denne kode i den nye “klasse” i java-projektet. Vi er nødt til at indstille et køremiljø for at generere en headerfil.

Når vi kører dette, skulle vi få et bibliotek genereret.

Produktion:

Her oprettede vi overskriftsfilen fra java-koden, der fungerer som et link mellem indfødt kode og java-sprog.

Fordele ved indfødt søgeord i Java

  1. Det giver en ekstra fordel for JAVA at interagere med koden, der er skrevet på andre sprog, og reducere arbejdet med at have den samme kode skrevet i JAVA, hvilket reducerer kodens redundans.
  2. Det forbedrer den samlede kodeydelse. Da koden er skrevet på andre sprog kan være hurtigere, når den fungerer med maskinsproget sammenlignet med JAVA. Vi kan derefter bruge JAVA-programmet til at kalde denne kode.
  3. Ved hjælp af denne tilgang kan vi direkte give systemopkald. Reducer sandsynligheden for ekstern interferens og forbedrer hastigheden på kodeudførelse.
  4. Du kan dynamisk ringe til et forudindlæst bibliotek (skrevet på ethvert andet sprog end JAVA) ved hjælp af en vilkårlig køretøjskode skrevet i JAVA og stadig få et svar i JAVA.
  5. Det gør det tilgængeligt for JAVA at nå hardware-ressourcerne, som kun er tilgængelige til brug på andre sprog.
  6. I tilfælde af at du allerede har opbygget en platformafhængig kode til din applikation, og hvis funktioner ikke understøttes via JAVA, kan vi i så fald have en oprindelig kode og linke denne native kode til JAVA via det oprindelige nøgleord.

Regler

  1. Det oprindelige nøgleord skal bruges før metodenavnet.
  2. Naturlig metodedeklaration har ikke kroppen og bør ende med en semikolon, da disse metoder ikke er defineret i JAVA men er til stede på C / C ++ sprog.
  3. Indfødte metoder kan ikke erklæres som en abstrakt metode.
  4. Da der ikke er nogen kaution, hvis den tidligere gamle kode er skrevet i overensstemmelse med IEEE 754-standarden (IEEE-standarden for flydende aritmetik er en teknisk standard for flydende aritmetik oprettet i 1985 af Institut for Elektriske og Elektroniske Ingeniører), vi kan ikke erklære disse oprindelige metoder som strengeftp.
  5. Java Native Interface (JNI) -specifikationen er designet af JAVA til at definere reglerne og erklæringerne til implementering af native metoder, f.eks. Konvertering af datatyper mellem Java og den oprindelige kode.

Konklusion

Det oprindelige nøgleord er, som broen mellem kløften mellem indfødte sprog og JAVA. Dette kan bruges som et kritisk link, hvis vores softwares interaktion med hardware er mere for at få den effektive kode ved hjælp af allerede eksisterende kode. Det gør implementeringsarbejdet mindre sammenlignet med at designe en ny applikationskode fra bunden, uanset hvor det kunne undgås.

Anbefalede artikler

Dette er en guide til indfødt nøgleord i Java. Her diskuterer vi, hvordan fungerer det indfødte nøgleord med eksempler, fordele og regler. Du kan også se på de følgende artikler for at lære mere -

  1. JTabbedPane i Java
  2. Beskyttet nøgleord i Java
  3. Java Virtual Machine
  4. Svingkomponenter i Java
  5. C ++ Nøgleord