Přehled
V tomto rychlém tutoriálu, budeme diskutovat pojem nativní klíčové slovo v jazyce Java, a budeme také ukázat, jak integrovat nativní metody do kódu v jazyce Java.
nativní Klíčové slovo v Javě
nejprve si promluvme o tom, co je nativní Klíčové slovo v Javě.
Jednoduše řečeno, to je non-modifikátor přístupu, který se používá k přístupové metody implementovány v jiném jazyce než Java, jako je C/C++.
označuje implementaci metody nebo kódu závislou na platformě a také funguje jako rozhraní mezi JNI a jinými programovacími jazyky.
nativní Metody
nativní metoda je metoda jazyka Java (buď instance metoda nebo metoda třídy), jejichž realizace je také napsán v jiném programovacím jazyce jako je C/C++.
navíc metoda označená jako nativní nemůže mít tělo a měla by končit středníkem:
native method ();
můžeme je použít k:
- implementovat rozhraní systémových volání nebo knihovny napsané v jiných programovacích jazycích
- přístup k systému nebo hardwarové prostředky, které jsou dosažitelné pouze z jiného jazyka
- integrovat již existující stávající kód napsaný v C/C++, v Java aplikaci
- hovor sestaven dynamicky načíst knihovnu s libovolný kód v jazyce Java
Příklady
Pojďme se nyní ukazují, jak začlenit tyto metody do kódu v jazyce Java.
4.1. Přístup k Nativním Kódu v Javě
za Prvé, pojďme vytvořit třídu DateTimeUtils, že potřebuje přístup k platformě závislé na nativní metodu s názvem getSystemTime:
public class DateTimeUtils { public native String getSystemTime(); // ...}
načíst, budeme používat Systém.loadLibrary.
místo volání k načtení této knihovny ve statickém bloku tak, že je k dispozici v naší třídě:
public class DateTimeUtils { public native String getSystemTime(); static { System.loadLibrary("nativedatetimeutils"); }}
vytvořili Jsme dynamic-link library, nativedatetimeutils, který implementuje getSystemTime v C++ pomocí podrobné pokyny, na něž v našich průvodce JNI čl.
4.2. Testování nativní Metody
Konečně, podívejme se, jak můžeme testovat nativní metody definované v DateTimeUtils třída:
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()); }}
Níže je výstup logger:
INFO c.b.n.DateTimeUtilsManualTest - System time is : Wed Dec 19 11:34:02 2018
Jak můžeme vidět, s pomocí původních klíčových slov, jsme úspěšně schopni získat přístup k platformě-závislé provádění napsán v jiném jazyce (v našem případě C++).
závěr
v tomto článku jsme se naučili základy nativních klíčových slov a metod. S rychlým příkladem jsme se také naučili, jak je integrovat do Javy.
úryvky kódu použité v tomto článku jsou dostupné přes Github.
začněte s Jarní 5 a na Jaře Boot 2, a to prostřednictvím Naučit Jarní kurz:
>>