Java Native Keyword og Methods

1. Oversikt

I denne raske opplæringen diskuterer vi begrepet innfødt nøkkelord i Java, og vi vil også vise hvordan du kan integrere innfødt metoder til Java-kode.

2. Den innfødt Nøkkelord i Java

La oss først diskutere hva som er en innfødt nøkkelord i Java.

Enkelt sagt, dette er en ikke-tilgangsmodifikator som brukes til å få tilgang til metoder implementert på et annet språk enn Java som C / C ++..

Det indikerer plattformavhengig implementering av en metode eller kode og fungerer også som et grensesnitt mellom JNI og andre programmeringsspråk.

3. innfødt Metoder

EN innfødt metoden er en Java-metode (enten en instansemetode eller en klassemetode) hvis implementering også er skrevet på et annet programmeringsspråk som C / C ++.

Videre er en metode merket som innfødt kan ikke ha kropp og skal ende med semikolon:

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

Vi kan bruke dem til å:

  • implementere et grensesnitt med systemanrop eller biblioteker skrevet på andre programmeringsspråk
  • få tilgang til system- eller maskinvareressurser som bare er tilgjengelige fra det andre språket
  • integrere allerede eksisterende eldre kode skrevet i C / C ++ i et Java-program
  • ring et kompilert dynamisk lastet bibliotek med vilkårlig kode fra Java

4. Eksempler

La oss nå demonstrere hvordan vi kan integrere disse metodene i Java-koden vår.

4.1. Få tilgang til opprinnelig kode i Java

Først av alt, la oss lage en klasse DateTimeUtils som trenger tilgang til en plattformavhengig innfødt metoden heter getSystemTime:

offentlig klasse DateTimeUtils {offentlig innfødt String getSystemTime (); // ...}

For å laste den, bruker vi System.loadLibrary.

La oss ringe for å laste dette biblioteket i en statisk blokker slik at den er tilgjengelig i klassen vår:

offentlig klasse DateTimeUtils {offentlig innfødt String getSystemTime (); statisk {System.loadLibrary ("nativedatetimeutils"); }}

Vi har opprettet et dynamisk lenkebibliotek, nativedatetimeutils, som implementerer getSystemTime i C ++ ved hjelp av detaljerte instruksjoner dekket i vår guide til JNI-artikkelen.

4.2. Testing innfødt Metoder

Til slutt, la oss se hvordan vi kan teste innfødte metoder definert i DateTimeUtils klasse:

public class DateTimeUtilsManualTest {@BeforeClass public static void setUpClass () {// .. last andre avhengige biblioteker System.loadLibrary ("nativedatetimeutils"); } @Test offentlig ugyldig givenNativeLibsLoaded_thenNativeMethodIsAccessible () {DateTimeUtils dateTimeUtils = new DateTimeUtils (); LOG.info ("Systemtid er:" + dateTimeUtils.getSystemTime ()); assertNotNull (dateTimeUtils.getSystemTime ()); }}

Nedenfor er utdataene fra loggeren:

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

Som vi kan se, ved hjelp av innfødt nøkkelord, vi har hell tilgang til en plattformavhengig implementering skrevet på et annet språk (i vårt tilfelle C ++).

5. Konklusjon

I denne artikkelen har vi lært det grunnleggende om innfødt nøkkelord og metoder. Med et raskt eksempel har vi også lært hvordan vi kan integrere dem i Java.

Kodebitene som brukes i denne artikkelen er tilgjengelige over Github.


$config[zx-auto] not found$config[zx-overlay] not found