Natívne kľúčové slovo a metódy Java

1. Prehľad

V tomto rýchlom výučbe si povieme niečo o koncepcii domorodec kľúčové slovo v Jave a ukážeme si tiež, ako sa integrovať domorodec metódy do kódu Java.

2. The domorodec Kľúčové slovo v Jave

Najskôr si poďme rozobrať, čo je to domorodec kľúčové slovo v Jave.

Jednoducho povedané, toto je modifikátor neprístupu, ktorý sa používa na prístup k metódam implementovaným v inom jazyku ako Java, ako je C / C ++.

Označuje implementáciu metódy alebo kódu v závislosti na platforme a slúži tiež ako rozhranie medzi JNI a inými programovacími jazykmi.

3. domorodec Metódy

A domorodec metóda je metóda Java (buď inštančná metóda alebo triedna metóda), ktorej implementácia je napísaná aj v inom programovacom jazyku, napríklad C / C ++.

Okrem toho metóda označená ako domorodec nemôže mať telo a malo by končiť bodkočiarkou:

[verejné | chránené | private] native [return_type] method ();

Môžeme ich použiť na:

  • implementovať rozhranie so systémovými volaniami alebo knižnicami napísanými v iných programovacích jazykoch
  • pristupujte k systémovým alebo hardvérovým prostriedkom, ktoré sú dostupné iba z iného jazyka
  • integrovať už existujúci starší kód napísaný v C / C ++ do aplikácie Java
  • zavolajte zostavenú dynamicky načítanú knižnicu s ľubovoľným kódom z Javy

4. Príklady

Poďme si teraz ukázať, ako integrovať tieto metódy do nášho kódu Java.

4.1. Prístup k natívnemu kódu v prostredí Java

Najskôr si vytvorme triedu DateTimeUtils ktorý potrebuje prístup v závislosti od platformy domorodec pomenovaná metóda getSystemTime:

public class DateTimeUtils {public native String getSystemTime (); // ...}

Na jeho načítanie použijeme System.loadLibrary.

Umiestnime hovor na načítanie tejto knižnice do a statický blok, aby bol k dispozícii v našej triede:

public class DateTimeUtils {public native String getSystemTime (); static {System.loadLibrary ("nativedatetimeutils"); }}

Vytvorili sme knižnicu dynamických odkazov, nativedatetimeutils, ktorý implementuje getSystemTime v jazyku C ++ pomocou podrobných pokynov uvedených v našej príručke k článku JNI.

4.2. Testovanie domorodec Metódy

Na záver sa pozrime, ako môžeme otestovať natívne metódy definované v DateTimeUtils trieda:

verejná trieda DateTimeUtilsManualTest {@BeforeClass verejné statické void setUpClass () {// .. načítať ďalšie závislé knižnice System.loadLibrary ("nativedatetimeutils"); } @Test public void givenNativeLibsLoaded_thenNativeMethodIsAccessible () {DateTimeUtils dateTimeUtils = nový DateTimeUtils (); LOG.info ("Systémový čas je:" + dateTimeUtils.getSystemTime ()); assertNotNull (dateTimeUtils.getSystemTime ()); }}

Nižšie je uvedený výstup záznamníka:

[main] INFO c.b.n.DateTimeUtilsManualTest - systémový čas je: st 19. december 11:34:02 2018

Ako vidíme, s pomocou domorodec kľúčové slovo, sme úspešne schopní získať prístup k implementácii závislej na platforme napísanej v inom jazyku (v našom prípade C ++).

5. Záver

V tomto článku sme sa naučili základy domorodec kľúčové slová a metódy. Na krátkom príklade sme sa tiež naučili, ako ich integrovať do Javy.

Útržky kódu použité v tomto článku sú k dispozícii na stránkach Github.


$config[zx-auto] not found$config[zx-overlay] not found