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.