A Java natív kulcsszó és módszerek
1. Áttekintés
Ebben a gyors bemutatóban megvitatjuk a anyanyelvi kulcsszó a Java-ban, és megmutatjuk az integráció módját is anyanyelvi módszereket Java kódba.
2. A anyanyelvi Kulcsszó Java-ban
Először is beszéljük meg, mi az a anyanyelvi kulcsszó Java-ban.
Egyszerűen fogalmazva, ez egy nem hozzáférhető módosító, amelyet a Java-tól eltérő nyelven, például a C / C ++ nyelven megvalósított módszerek elérésére használnak..
Jelzi egy módszer vagy kód platformfüggő megvalósítását, és interfészként is működik a JNI és más programozási nyelvek között.
3. anyanyelvi Mód
A anyanyelvi A módszer egy Java-módszer (akár példány-módszer, akár osztály-módszer), amelynek megvalósítását szintén egy másik programozási nyelven írják, például C / C ++.
Sőt, egy metódussal jelölve anyanyelvi nem lehet teste, és pontosvesszővel kell végződnie:
[nyilvános | védett | private] natív [return_type] módszer ();
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 C / C ++ nyelven írt, már létező régi kódot egy Java alkalmazásba
- hívjon egy fordított dinamikusan betöltött könyvtárat tetszőleges kóddal a Java-ból
4. Példák
Most mutatjuk be, hogyan lehet ezeket a módszereket integrálni a Java kódunkba.
4.1. Hozzáférés a natív kódhoz Java-ban
Először hozzunk létre egy osztályt DateTimeUtils amelynek hozzáférnie kell egy platformfüggőhez anyanyelvi nevű módszer getSystemTime:
public class DateTimeUtils {public native String getSystemTime (); // ...}
Betöltéséhez használjuk a System.loadLibrary.
Tegyük fel a hívást a könyvtár betöltésére a statikus blokkolja, hogy elérhető legyen az osztályunkban:
public class DateTimeUtils {public native String getSystemTime (); statikus {System.loadLibrary ("nativedatetimeutils"); }}
Létrehoztunk egy dinamikus link könyvtárat, nativedatetimeutils, amely megvalósítja getSystemTime C ++ nyelven a JNI cikkünkben található útmutató részletes leírása alapján.
4.2. Tesztelés anyanyelvi Mód
Végül nézzük meg, hogyan tesztelhetjük a DateTimeUtils osztály:
public class DateTimeUtilsManualTest {@BeforeClass public static void setUpClass () {// .. egyéb függõ könyvtárak betöltése System.loadLibrary ("nativedatetimeutils"); } @Test public void givenNativeLibsLoaded_thenNativeMethodIsAccessible () {DateTimeUtils dateTimeUtils = new DateTimeUtils (); LOG.info ("A rendszer ideje:" + dateTimeUtils.getSystemTime ()); assertNotNull (dateTimeUtils.getSystemTime ()); }}
Az alábbiakban látható a naplózó kimenete:
[main] INFO c.b.n.DateTimeUtilsManualTest - A rendszer ideje: Wed Dec 19 11:34:02 2018
Mint láthatjuk, a anyanyelvi kulcsszó, sikeresen hozzáférhetünk egy platformtól függő, más nyelven (esetünkben C ++) megírt megvalósításhoz.
5. Következtetés
Ebben a cikkben megtanultuk az alapokat anyanyelvi kulcsszavak és módszerek. Egy gyors példával azt is megtanultuk, hogyan kell integrálni őket a Java-ba.
A cikkben használt kódrészletek a Githubon keresztül érhetők el.