Skip to content
Menu
CDhistory
CDhistory

Natív kulcsszó a JAVA-ban

Posted on április 30, 2021 by admin

A natív kulcsszó bemutatása:

A natív kulcsszó a JAVA nyelv és a JAVA-n kívül más nyelveken írt kódrészletek vagy könyvtárak közötti kapcsolatként működik, ami függhet attól, hogy milyen gépen dolgozol. Ha a natív kulcsszó egy metódusra vonatkozik, akkor ez azt jelenti, hogy a metódus valamilyen más nyelven (például C vagy C++) írt natív kóddal lesz implementálva a JNI-n (JAVA natív interfész) keresztül.

Szintaxis:

A natív kód szintaxisa ugyanaz, mint a normál függvénydefinícióé, azzal, hogy a függvény elejére “natív” kulcsszó kerül.

Példa:

Public class testing

{public native String testMethod (String parameter);}

A public itt egy hozzáférés-módosító. Azért kell nyilvánosnak lennie, hogy egy másik fájl is használhassa. String a függvény visszatérési adattípusa. A kulcsszótól függően lehet egész szám, karakter vagy Boolean. A függvénynek átadott paraméter is string adattípusú. Mindent az osztály alatt kell tartani.

A függvény deklarálása után a létrehozott objektumon és a betöltött könyvtáron keresztül hívjuk meg ezt a függvényt.

public static void main(String args)

{

System.loadLibrary(“testing”);

tesztelés testingnew = new testing();

String output = testingnew.stringMethod(“NATIVE”);

}

A fent definiált könyvtárat kell először betölteni és a n annak objektumát létrehozni. Ennek az objektumnak a segítségével hívjuk meg a natív függvényt.

Hogyan működik a natív kulcsszó?

Két fájlnak kell lennie. Az egyik a JAVA kódot tartalmazza, míg a másiknak C/C++ örökölt kódot kell tartalmaznia. A Java kódot az örökölt kód hívására fogjuk használni. Ez az örökölt kód kölcsönhatásba lép a hardverrel, és az elvárt kimenetet adja vissza.

Amikor az örökölt kód kölcsönhatásba lép a hardverrel, akkor nem fogja követni a JAVA által meghatározott irányelveket. Ez a kód elvégzi a kívánt feldolgozást, hogy megkapja a kimenetet, és átadja az eredményeket a JNI-nek. A Java natív interfész ezután ellenőrizni fogja a natív kódra vonatkozó összes szabályt tartalmazó könyvtárában (Ez az SDK-ban a javah.exe nevű fájl alatt található). A JNI-t a Java eszközkészlet részeként tervezték. A feldolgozás után a JAVA a kimeneteket magában a JAVA nyelvben teszi közzé. Amikor programot hozunk létre JAVA-ban, akkor gondoskodnunk kell arról, hogy a JAVA fájl és az örökölt fájl között legyen egy változó/adatáramlási kapcsolat, hogy mindkettő között zökkenőmentes legyen az adatáramlás.

A natív kulcsszavak használatát magyarázó lépések az alábbiakban találhatók:

  1. A natív módszert tartalmazó JAVA kódot, a betöltött megosztott könyvtárat és a “filename.JAVA”.
  2. Kompilálja a JAVA kódot, és konvertálja a kódot bytecode-ba.
  3. Készítsen C/C++ fejlécfájlt, amely tartalmazza a meghívandó natív függvény aláírását.
  4. A natív módszer végrehajtását tartalmazó C/C++ kódot.
  5. Futtassa a JAVA futtatható fájlt az eredmények megtekintéséhez.

Példák a natív kulcsszó implementációjának bemutatására:

Kódot kell írnunk az Eclipse-ben, és a kódot futtatva létrehozni egy könyvtárat, amelynek segítségével aztán a C kódot implementáljuk.

Kód: 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);

}

}

A kód elmentése után a java projekt új “osztályában”. Be kell állítanunk a futtatási környezetet a fejlécfájl generálásához.

Amikor ezt futtatni fogjuk, akkor egy könyvtárat kell generálnunk.

Kimenet:

Itt a java kódból létrehoztuk a header fájlt, ami a natív kód és a java nyelv közötti linkként fog működni.

Előnyök:

  1. A JAVA számára további előnyt jelent a más nyelven írt kóddal való interakció, és csökkenti a munkát, hogy ugyanazt a kódot JAVA-ban írjuk, ezáltal csökkenti a kód redundanciáját.
  2. A kód általános teljesítményét javítja. Mivel a más nyelven írt kód talán gyorsabb, ha a JAVA-hoz képest a gépi nyelvvel dolgozik. Ezt a kódot aztán JAVA programmal hívhatjuk meg.
  3. Ezzel a megközelítéssel közvetlenül rendszerhívásokat adhatunk. Csökkenti a külső beavatkozás valószínűségét, és javítja a kódvégrehajtás gyorsaságát.
  4. Dinamikusan meghívhatunk egy előre betöltött (a JAVA-tól eltérő nyelven írt) könyvtárat egy tetszőleges, JAVA-ban írt vezérlő kóddal, és mégis JAVA-ban kapunk választ.
  5. A JAVA számára elérhetővé teszi a hardveres erőforrások elérését, amelyek csak más nyelvek számára állnak rendelkezésre.
  6. Abban az esetben, ha az alkalmazásunkhoz már felépítettünk egy platformfüggő kódot, amelynek jellemzői nem támogatottak a JAVA-n keresztül, ebben az esetben rendelkezhetünk natív kóddal, és ezt a natív kódot a natív kulcsszóval összekapcsolhatjuk a JAVA-val.

Szabályok:

  1. A natív kulcsszót a metódusnév előtt kell használni.
  2. A natív metódus deklarációnak nincs teste, és kettősponttal kell végződnie, mivel ezek a metódusok nem a JAVA-ban vannak definiálva, hanem a C/C++ nyelvben.
  3. A natív metódusokat nem lehet absztrakt metódusként deklarálni.
  4. Mivel nem biztos, hogy az előző régi kód az IEEE 754 szabvány szerint íródott (Az IEEE Standard for Floating-Point Arithmetic az Institute of Electrical and Electronics Engineers által 1985-ben létrehozott technikai szabvány a lebegőpontos aritmetikára), így ezeket a natív metódusokat nem deklarálhatjuk strictftp-ként.
  5. A Java Native Interface (JNI) specifikációt a JAVA úgy tervezte, hogy meghatározza a natív metódusok megvalósításához szükséges szabályokat és deklarációkat, például az adattípusok konverzióját a Java és a natív kód között.

Következtetés:

A natív kulcsszó az, ami hidat képez a natív nyelvek és a JAVA között. Ez kritikus összekötő kapocsként használható, ha szoftverünk hardverrel való kölcsönhatása inkább az, hogy az előzetesen meglévő kódot használva hatékony kódot kapjunk. Ahol ez elkerülhető, ott kisebbé teszi a megvalósítási munkát az új alkalmazáskód nulláról való megtervezéséhez képest.

Vélemény, hozzászólás? Kilépés a válaszból

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Legutóbbi bejegyzések

  • Az Acela visszatért: New York vagy Boston 99 dollárért
  • OMIM bejegyzés – # 608363 – CHROMOSOME 22q11.2 DUPLICATION SYNDROME
  • Kate Albrecht szülei – Tudj meg többet apjáról Chris Albrechtről és anyjáról Annie Albrechtről
  • Temple Fork Outfitters
  • Burr (regény)

Archívum

  • 2022 február
  • 2022 január
  • 2021 december
  • 2021 november
  • 2021 október
  • 2021 szeptember
  • 2021 augusztus
  • 2021 július
  • 2021 június
  • 2021 május
  • 2021 április
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語
©2022 CDhistory | Powered by WordPress & Superb Themes