Java Native Keyword and Methods

översikt

i den här snabba handledningen diskuterar vi begreppet native keyword i Java, och vi visar också hur man integrerar native methods i Java-kod.

det ursprungliga nyckelordet i Java

Låt oss först och främst diskutera vad som är ett inbyggt nyckelord i Java.

enkelt uttryckt är detta en icke-åtkomstmodifierare som används för att komma åt metoder som implementeras på ett annat språk än Java som C/C++.

det indikerar plattformsberoende implementering av en metod eller kod och fungerar också som ett gränssnitt mellan JNI och andra programmeringsspråk.

native Methods

en native method är en Java-metod (antingen en instansmetod eller en klassmetod) vars implementering också skrivs i ett annat programmeringsspråk som C/c++.

Dessutom kan en metod markerad som native inte ha en kropp och bör sluta med en semikolon:

 native method ();

Vi kan använda dem för att:

  • implementera ett gränssnitt med systemanrop eller bibliotek skrivna på andra programmeringsspråk
  • åtkomstsystem eller hårdvaruresurser som bara kan nås från det andra språket
  • integrera redan befintlig äldre kod skriven i C/C++ i en Java-applikation
  • anropa ett kompilerat dynamiskt laddat bibliotek med godtycklig kod från Java

exempel

låt oss nu visa hur vi integrerar dessa metoder i vår Java-kod.

4.1. Åtkomst till inbyggd kod i Java

Låt oss först och främst skapa en klass DateTimeUtils som behöver komma åt en plattformsberoende inbyggd metod som heter getSystemTime:

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

för att ladda den använder vi systemet.loadLibrary.

Låt oss placera samtalet för att ladda detta bibliotek i ett statiskt block så att det är tillgängligt i vår klass:

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

Vi har skapat ett dynamiskt länkbibliotek, nativedatetimeutils, som implementerar getSystemTime i C++ med detaljerade instruktioner som omfattas av vår guide till JNI-artikel.

4.2. Testa native Methods

slutligen, låt oss se hur vi kan testa native methods definierade i datetimeutils-klassen:

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

nedan är utgången från logger:

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

som vi kan se, med hjälp av det inbyggda nyckelordet, kan vi framgångsrikt få tillgång till en plattformsberoende implementering skriven på ett annat språk (i vårt fall c++).

slutsats

i den här artikeln har vi lärt oss grunderna i inbyggda nyckelord och metoder. Med ett snabbt exempel har vi också lärt oss hur man integrerar dem i Java.

kodavsnitten som används i den här artikeln är tillgängliga via Github.

Kom igång med Spring 5 och Spring Boot 2, genom Learn Spring course:

>> kolla in kursen

Lämna ett svar

Din e-postadress kommer inte publiceras.