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.