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.