Java Native Keyword og Methods

1. Oversigt

I denne hurtige vejledning diskuterer vi begrebet hjemmehørende nøgleord i Java, og vi viser også, hvordan man integrerer hjemmehørende metoder til Java-kode.

2. Den hjemmehørende Nøgleord i Java

Lad os først diskutere, hvad der er en hjemmehørende nøgleord i Java.

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

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

3. hjemmehørende Metoder

EN hjemmehørende 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 er en metode markeret som hjemmehørende kan ikke have en krop og skal ende med et semikolon:

[offentlig | beskyttet | privat] native [return_type] metode ();

Vi kan bruge dem til at:

  • implementere en grænseflade med systemopkald eller biblioteker skrevet på andre programmeringssprog
  • få adgang til system- eller hardware-ressourcer, der kun kan nås fra det andet sprog
  • integrere allerede eksisterende ældre kode skrevet i C / C ++ i en Java-applikation
  • kalde et kompileret dynamisk indlæst bibliotek med vilkårlig kode fra Java

4. Eksempler

Lad os nu demonstrere, hvordan vi integrerer disse metoder i vores Java-kode.

4.1. Adgang til oprindelig kode i Java

Lad os først oprette en klasse DateTimeUtils der skal have adgang til en platformafhængig hjemmehørende metode navngivet getSystemTime:

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

For at indlæse det bruger vi System.loadLibrary.

Lad os ringe til at indlæse dette bibliotek i en statisk bloker, så den er tilgængelig i vores klasse:

offentlig klasse DateTimeUtils {public native String getSystemTime (); statisk {System.loadLibrary ("nativedatetimeutils"); }}

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

4.2. Testning hjemmehørende Metoder

Lad os endelig se, hvordan vi kan teste native metoder, der er defineret i DateTimeUtils klasse:

offentlig klasse DateTimeUtilsManualTest {@BeforeClass offentlig statisk ugyldig setUpClass () {// .. indlæse andre afhængige biblioteker System.loadLibrary ("nativedatetimeutils"); } @Test offentlig ugyldighed givenNativeLibsLoaded_thenNativeMethodIsAccessible () {DateTimeUtils dateTimeUtils = ny DateTimeUtils (); LOG.info ("Systemtid er:" + dateTimeUtils.getSystemTime ()); assertNotNull (dateTimeUtils.getSystemTime ()); }}

Nedenfor er output fra loggeren:

[main] INFO c.b.n.DateTimeUtilsManualTest - Systemtid er: Wed Dec 19 11:34:02 2018

Som vi kan se, ved hjælp af hjemmehørende nøgleord, vi er med succes i stand til at få adgang til en platformafhængig implementering skrevet på et andet sprog (i vores tilfælde C ++).

5. Konklusion

I denne artikel har vi lært det grundlæggende i hjemmehørende nøgleord og metoder. Med et hurtigt eksempel har vi også lært at integrere dem i Java.

Kodestykker, der bruges i denne artikel, er tilgængelige via Github.