Prezentare generală
În acest tutorial rapid, vom discuta conceptul cuvântului cheie nativ în Java și vom arăta, de asemenea, cum să integrăm metodele native în codul Java.
cuvântul cheie nativ în Java
În primul rând, să discutăm ce este un cuvânt cheie nativ în Java.
pur și simplu, acesta este un modificator non-acces care este utilizat pentru a accesa metodele implementate într-o altă limbă decât Java, cum ar fi C / C++.
indică implementarea dependentă de platformă a unei metode sau a unui cod și, de asemenea, acționează ca o interfață între JNI și alte limbaje de programare.
metode native
o metodă nativă este o metodă Java (fie o metodă de instanță, fie o metodă de clasă) a cărei implementare este scrisă și într-un alt limbaj de programare, cum ar fi C / C++.
Mai mult, o metodă marcată ca nativă nu poate avea un corp și ar trebui să se încheie cu punct și virgulă:
native method ();
le putem folosi pentru a:
- implementați o interfață cu apeluri de sistem sau biblioteci scrise în alte limbaje de programare
- accesați resurse de sistem sau hardware care pot fi accesate numai din cealaltă limbă
- integrați codul vechi deja existent scris în C/C++ într-o aplicație Java
- apelați o bibliotecă încărcată dinamic compilată cu cod arbitrar din Java
Exemple
să demonstrăm acum cum să integrăm aceste metode în codul nostru Java.
4.1. Accesarea Codului nativ în Java
în primul rând, să creăm o clasă DateTimeUtils care trebuie să acceseze o metodă nativă dependentă de platformă numită getSystemTime:
public class DateTimeUtils { public native String getSystemTime(); // ...}
pentru a o încărca, vom folosi sistemul.loadLibrary.
să plasăm apelul pentru a încărca această bibliotecă într-un bloc static, astfel încât să fie disponibilă în clasa noastră:
public class DateTimeUtils { public native String getSystemTime(); static { System.loadLibrary("nativedatetimeutils"); }}
am creat o bibliotecă de legături dinamice, nativedatetimeutils, care implementează getSystemTime în C++ folosind instrucțiuni detaliate acoperite în ghidul nostru pentru articolul JNI.
4.2. Testarea metodelor native
În cele din urmă, să vedem cum putem testa metodele native definite în clasa DateTimeUtils:
public class DateTimeUtilsManualTest { @BeforeClass public static void setUpClass() { // .. load other dependent libraries System.loadLibrary("nativedatetimeutils"); } @Test public void givenNativeLibsLoaded_thenNativeMethodIsAccessible() { DateTimeUtils dateTimeUtils = new DateTimeUtils(); LOG.info("System time is : " + dateTimeUtils.getSystemTime()); assertNotNull(dateTimeUtils.getSystemTime()); }}
mai jos este ieșirea loggerului:
INFO c.b.n.DateTimeUtilsManualTest - System time is : Wed Dec 19 11:34:02 2018
după cum putem vedea, cu ajutorul cuvântului cheie nativ, putem accesa cu succes o implementare dependentă de platformă scrisă într-o altă limbă (în cazul nostru c++).
concluzie
În acest articol, am învățat elementele de bază ale cuvintelor cheie și metodelor native. Cu un exemplu rapid, am învățat, de asemenea, cum să le integrăm în Java.fragmentele de cod utilizate în acest articol sunt disponibile pe Github.
începeți cu Spring 5 și Spring Boot 2, prin cursul Learn Spring:
>> verificați cursul