áttekintés
ebben a gyors oktatóanyagban megvitatjuk a natív kulcsszó fogalmát a Java-ban, és megmutatjuk, hogyan lehet integrálni a natív módszereket a Java kódba.
A natív kulcsszó a Java-ban
először is beszéljük meg, mi a natív kulcsszó a Java-ban.
egyszerűen fogalmazva, ez egy nem hozzáférési módosító, amelyet a Java-tól eltérő nyelven megvalósított módszerek elérésére használnak, mint például a C / C++.
egy metódus vagy kód platformfüggő implementációját jelzi, és interfészként is működik a JNI és más programozási nyelvek között.
natív módszerek
a natív módszer egy Java módszer (akár egy példány módszer, akár egy osztály módszer), amelynek végrehajtása más programozási nyelven is meg van írva, például C/C++.
ezenkívül egy natívként megjelölt metódusnak nem lehet teste, és pontosvesszővel kell végződnie:
native method ();
használhatjuk őket:
- interfész megvalósítása más programozási nyelveken írt rendszerhívásokkal vagy könyvtárakkal
- hozzáférési rendszer vagy hardver erőforrások, amelyek csak a másik nyelvről érhetők el
- integrálja a már meglévő, C/C++ nyelven írt örökölt kódot egy Java alkalmazásba
- hívjon egy lefordított dinamikusan betöltött könyvtárat tetszőleges Java kóddal
példák
most mutassuk be, hogyan lehet ezeket a módszereket integrálni a Java kódunkba.
4.1. Natív kód elérése Java-ban
először is hozzunk létre egy osztályt DateTimeUtils hogy hozzáférjen egy platformfüggő natív metódushoz, amelynek neve getSystemTime:
public class DateTimeUtils { public native String getSystemTime(); // ...}
a betöltéshez a rendszert fogjuk használni.loadLibrary.
tegyük a hívást, hogy betöltse ezt a könyvtárat egy statikus blokkban, hogy elérhető legyen az osztályunkban:
public class DateTimeUtils { public native String getSystemTime(); static { System.loadLibrary("nativedatetimeutils"); }}
létrehoztunk egy dinamikus link könyvtárat, nativedatetimeutils, amely végrehajtja a getSystemTime-T C++ nyelven, a JNI útmutatójában szereplő részletes utasítások felhasználásával cikk.
4.2. Natív módszerek tesztelése
végül nézzük meg, hogyan tesztelhetjük a DateTimeUtils osztályban definiált natív módszereket:
public class DateTimeUtilsManualTest { @BeforeClass public static void setUpClass() { // .. load other dependent libraries System.loadLibrary("nativedatetimeutils"); } @Test public void givenNativeLibsLoaded_thenNativeMethodIsAccessible() { DateTimeUtils dateTimeUtils = new DateTimeUtils(); LOG.info("System time is : " + dateTimeUtils.getSystemTime()); assertNotNull(dateTimeUtils.getSystemTime()); }}
Az alábbiakban látható a naplózó kimenete:
INFO c.b.n.DateTimeUtilsManualTest - System time is : Wed Dec 19 11:34:02 2018
mint láthatjuk, a natív kulcsszó segítségével sikeresen hozzáférhetünk egy platformfüggő implementációhoz, amelyet más nyelven (esetünkben C++).
következtetés
ebben a cikkben megtanultuk a natív kulcsszavak és módszerek alapjait. Egy gyors példával azt is megtanultuk, hogyan lehet integrálni őket a Java-ba.
a cikkben használt kódrészletek elérhetők a Github-on.
kezdje el a tavaszi 5-ös és a tavaszi Boot 2-es tanulást a tavaszi tanfolyamon keresztül:
>> nézze meg a tanfolyamot