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.