the Java Native Keyword and Methods

Overview

w tym krótkim samouczku omówimy koncepcję natywnego słowa kluczowego w Javie, a także pokażemy, jak zintegrować natywne metody z kodem Java.

natywne słowo kluczowe w Javie

przede wszystkim omówmy, co jest natywnym słowem kluczowym w Javie.

Mówiąc najprościej, jest to modyfikator non-access, który jest używany do dostępu do metod zaimplementowanych w języku innym niż Java, takim jak C / C++.

wskazuje zależną od platformy implementację metody lub kodu, a także działa jako interfejs między JNI a innymi językami programowania.

metody natywne

metoda natywna to metoda Java (metoda instancji lub metoda klasy), której implementacja jest również napisana w innym języku programowania, takim jak C / C++.

ponadto metoda oznaczona jako natywna nie może mieć ciała i powinna kończyć się średnikiem:

 native method ();

możemy ich użyć do:

  • zaimplementuj interfejs z wywołaniami systemowymi lub bibliotekami napisanymi w innych językach programowania
  • uzyskaj dostęp do zasobów systemowych lub sprzętowych, które są dostępne tylko z innego języka
  • Zintegruj już istniejący stary kod napisany w C/c++ z aplikacją Java
  • wywołaj skompilowaną dynamicznie załadowaną bibliotekę z dowolnym kodem z Java

przykłady

zademonstrujmy teraz, jak zintegrować te metody z naszym kodem Java.

4.1. Dostęp do natywnego kodu w Javie

Po pierwsze, stwórzmy klasę DateTimeUtils, która musi uzyskać dostęp do zależnej od platformy natywnej metody getSystemTime:

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

aby ją załadować, użyjemy systemu.loadLibrary.

umieśćmy wywołanie, aby załadować tę bibliotekę do bloku statycznego, aby była dostępna w naszej klasie:

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

stworzyliśmy dynamiczną bibliotekę linkową nativedatetimeutils, która implementuje getSystemTime w C++, korzystając ze szczegółowych instrukcji zawartych w naszym artykule guide to JNI.

4.2. Testowanie natywnych metod

na koniec zobaczmy, jak możemy przetestować natywne metody zdefiniowane w klasie 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()); }}

poniżej znajduje się wyjście loggera:

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

jak widzimy, za pomocą natywnego słowa kluczowego jesteśmy w stanie z powodzeniem uzyskać dostęp do implementacji zależnej od platformy napisany w innym języku (w naszym przypadku c++).

podsumowanie

w tym artykule nauczyliśmy się podstaw natywnych słów kluczowych i metod. Dzięki szybkiemu przykładowi nauczyliśmy się również, jak zintegrować je w Javie.

fragmenty kodu użyte w tym artykule są dostępne na Githubie.

zacznij od Spring 5 i Spring Boot 2, Poprzez kurs Learn Spring:

>>sprawdź kurs

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.