Izvorna ključna riječ i metode za Java
1. Pregled
U ovom brzom vodiču razgovarat ćemo o konceptu domorodac u Java, a također ćemo pokazati kako se integrirati domorodac metode u Java kod.
2. The domorodac Ključna riječ u Javi
Prije svega, razgovarajmo o tome što je a domorodac ključna riječ u Javi.
Jednostavno rečeno, ovo je modifikator koji nema pristup i koristi se za pristup metodama implementiranim u jeziku koji nije Java, poput C / C ++.
Označava implementaciju metode ili koda ovisno o platformi i također djeluje kao sučelje između JNI i drugih programskih jezika.
3. domorodac Metode
A domorodac metoda je Java metoda (ili metoda instance ili metoda klase) čija je implementacija također napisana na drugom programskom jeziku kao što je C / C ++.
Štoviše, metoda označena kao domorodac ne može imati tijelo i treba završiti sa zarezom:
[javno | zaštićen | private] izvorna [return_type] metoda ();
Pomoću njih možemo:
- implementirati sučelje sa sistemskim pozivima ili knjižnicama napisanim na drugim programskim jezicima
- pristup sistemskim ili hardverskim resursima do kojih se može doći samo s drugog jezika
- integrirati već postojeći naslijeđeni kôd napisan na C / C ++ u Java aplikaciju
- pozvati kompajliranu dinamički učitanu knjižnicu s proizvoljnim kodom s Jave
4. Primjeri
Pokažimo sada kako integrirati ove metode u naš Java kôd.
4.1. Pristup matičnom kodu na Javi
Prije svega, napravimo razred DateTimeUtils koji treba pristupiti platformi ovisno domorodac metoda imenovana getSystemTime:
javna klasa DateTimeUtils {javni izvorni niz getSystemTime (); // ...}
Da bismo ga učitali, upotrijebit ćemo System.loadLibrary.
Postavimo poziv za učitavanje ove knjižnice u statički blok tako da bude dostupan u našoj klasi:
javna klasa DateTimeUtils {javni izvorni niz getSystemTime (); static {System.loadLibrary ("nativedatetimeutils"); }}
Stvorili smo knjižnicu dinamičkih veza, nativedatetimeutils, koji provodi getSystemTime u C ++ koristeći detaljne upute pokrivene u našem vodiču za JNI članak.
4.2. Testiranje domorodac Metode
Napokon, pogledajmo kako možemo testirati izvorne metode definirane u DateTimeUtils razred:
javna klasa DateTimeUtilsManualTest {@BeforeClass javna statička void setUpClass () {// .. učitavanje ostalih ovisnih knjižnica System.loadLibrary ("nativedatetimeutils"); } @Test javna praznina givenNativeLibsLoaded_thenNativeMethodIsAccessible () {DateTimeUtils dateTimeUtils = novi DateTimeUtils (); LOG.info ("Vrijeme vremena je:" + dateTimeUtils.getSystemTime ()); assertNotNull (dateTimeUtils.getSystemTime ()); }}
Ispod je izlaz zapisnika:
[glavna] INFO c.b.n.DateTimeUtilsManualTest - Vrijeme sustava je: sri prosinac 19 11:34:02 2018
Kao što vidimo, uz pomoć domorodac ključna riječ, uspješno možemo pristupiti implementaciji ovisno o platformi napisanoj na drugom jeziku (u našem slučaju C ++).
5. Zaključak
U ovom smo članku naučili osnove domorodac ključne riječi i metode. Kratkim primjerom naučili smo i kako ih integrirati u Javu.
Isječci koda korišteni u ovom članku dostupni su putem Githuba.