Основната ключова дума и методи за Java

1. Общ преглед

В този бърз урок ще обсъдим концепцията за родната ключова дума в Java и ще покажем също как да интегрираме родните методи в Java кода.

2. Родната ключова дума в Java

Първо, нека обсъдим какво е естествена ключова дума в Java.

Най-просто казано, това е модификатор без достъп, който се използва за достъп до методи, внедрени на език, различен от Java като C / C ++ .

Той показва, че изпълнението на метод или код зависи от платформата, а също така действа като интерфейс между JNI и други програмни езици.

3. родните методи

А родния метод е метод, Java (или метод инстанция или метод на клас), чието изпълнение е също написани на друг език за програмиране като C / C ++.

Освен това метод, означен като роден, не може да има тяло и трябва да завършва с точка и запетая:

[ public | protected | private] native [return_type] method ();

Можем да ги използваме за:

  • внедряване на интерфейс със системни повиквания или библиотеки, написани на други езици за програмиране
  • достъп до системни или хардуерни ресурси, които са достъпни само от другия език
  • интегрирайте вече съществуващ стар код, написан на C / C ++, в Java приложение
  • извикайте компилирана динамично заредена библиотека с произволен код от Java

4. Примери

Нека сега покажем как да интегрираме тези методи в нашия Java код.

4.1. Достъп до нативния код в Java

Първо, нека създадем клас DateTimeUtils, който трябва да има достъп до зависим от платформата роден метод, наречен getSystemTime :

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

За да го заредим, ще използваме System.loadLibrary.

Нека поставим повикването за зареждане на тази библиотека в статичен блок, така че тя да е достъпна в нашия клас:

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

Създадохме библиотека за динамична връзка, nativedatetimeutils , която реализира getSystemTime в C ++, използвайки подробни инструкции, описани в нашето ръководство за статия за JNI.

4.2. Тестване на местни методи

И накрая, нека видим как можем да тестваме естествени методи, дефинирани в класа DateTimeUtils :

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()); } }

По-долу е изходът на регистратора:

[main] INFO c.b.n.DateTimeUtilsManualTest - System time is : Wed Dec 19 11:34:02 2018

Както виждаме, с помощта на родната ключова дума имаме успешен достъп до платформа-зависима реализация, написана на друг език (в нашия случай C ++).

5. Заключение

В тази статия научихме основите на естествените ключови думи и методи. С бърз пример научихме и как да ги интегрираме в Java.

Кодовите фрагменти, използвани в тази статия, са достъпни през Github.