Java Native søgeord og metoder

oversigt

i denne hurtige vejledning diskuterer vi begrebet det native søgeord i Java, og vi viser også, hvordan man integrerer native metoder i Java-kode.

det oprindelige nøgleord i Java

lad os først diskutere, hvad der er et oprindeligt nøgleord i Java.

kort sagt, dette er en ikke-adgangsmodifikator, der bruges til at få adgang til metoder implementeret på et andet sprog end Java som C/C++.

det angiver platformafhængig implementering af en metode eller kode og fungerer også som en grænseflade mellem JNI og andre programmeringssprog.

native metoder

en native metode er en Java-metode (enten en instansmetode eller en klassemetode), hvis implementering også er skrevet på et andet programmeringssprog såsom C / C++.

desuden kan en metode markeret som indfødt ikke have en krop og skal ende med et semikolon:

 native method ();

Vi kan bruge dem til at:

  • implementer en grænseflade med systemopkald eller biblioteker skrevet på andre programmeringssprog
  • access system-eller udstyrsressourcer, der kun kan nås fra det andet sprog
  • Integrer allerede eksisterende ældre kode skrevet i C/C++ i et Java-program
  • kald et kompileret dynamisk indlæst bibliotek med vilkårlig kode fra Java

eksempler

lad os nu demonstrere, hvordan disse metoder integreres i Vores Java-kode.

4.1. Adgang til indfødt kode i Java

lad os først oprette en klassedatetimeutils, der skal have adgang til en platformafhængig indfødt metode ved navn getSystemTime:

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

for at indlæse det bruger vi systemet.loadLibrary.

lad os placere opkaldet for at indlæse dette bibliotek i en statisk blok, så det er tilgængeligt i vores klasse:

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

Vi har oprettet et dynamisk linkbibliotek, nativedatetimeutils, der implementerer getSystemTime i C++ ved hjælp af detaljerede instruktioner, der er dækket i vores guide til JNI-artikel.

4.2. Test af native metoder

endelig, lad os se, hvordan vi kan teste native metoder defineret 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()); }}

nedenfor er output fra loggeren:

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

Som vi kan se, ved hjælp af det native søgeord, er vi med succes i stand til at få adgang til en platformafhængig implementering skrevet på et andet sprog (i vores tilfælde c++).

konklusion

i denne artikel har vi lært det grundlæggende i indfødte søgeord og metoder. Med et hurtigt eksempel har vi også lært, hvordan man integrerer dem i Java.

de kodestykker, der bruges i denne artikel, er tilgængelige over Github.

kom i gang med foråret 5 og foråret Boot 2, gennem Lær foråret kursus:

>>tjek kurset

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.