Panoramica
In questo breve tutorial, discuteremo il concetto della parola chiave nativa in Java e mostreremo anche come integrare i metodi nativi nel codice Java.
La parola chiave nativa in Java
Prima di tutto, discutiamo di cosa sia una parola chiave nativa in Java.
In poche parole, questo è un modificatore non di accesso che viene utilizzato per accedere ai metodi implementati in un linguaggio diverso da Java come C / C++.
Indica l’implementazione dipendente dalla piattaforma di un metodo o codice e funge anche da interfaccia tra JNI e altri linguaggi di programmazione.
Metodi nativi
Un metodo nativo è un metodo Java (un metodo di istanza o un metodo di classe) la cui implementazione è scritta anche in un altro linguaggio di programmazione come C / C++.
Inoltre, un metodo contrassegnato come nativo non può avere un corpo e dovrebbe terminare con un punto e virgola:
native method ();
Possiamo usarli per:
- implementare un’interfaccia con le chiamate di sistema o le librerie scritte in altri linguaggi di programmazione
- sistema di accesso o di risorse hardware che sono raggiungibili solo in altre lingue
- integrare il già esistente codice scritto in C/C++ in una applicazione Java
- chiama compilato libreria caricata dinamicamente con codice arbitrario da Java
Esempi
proviamo ora a dimostrare come integrare questi metodi nel nostro codice Java.
4.1. Accesso al codice nativo in Java
Prima di tutto, creiamo una classe DateTimeUtils che deve accedere a un metodo nativo dipendente dalla piattaforma chiamato getSystemTime:
public class DateTimeUtils { public native String getSystemTime(); // ...}
Per caricarlo, useremo il sistema.loadLibrary.
Facciamo la chiamata per caricare questa libreria in un blocco statico in modo che sia disponibile nella nostra classe:
public class DateTimeUtils { public native String getSystemTime(); static { System.loadLibrary("nativedatetimeutils"); }}
Abbiamo creato una libreria a collegamento dinamico, nativedatetimeutils, che implementa getSystemTime in C++ utilizzando istruzioni dettagliate trattate nella nostra guida all’articolo JNI.
4.2. Test Metodi nativi
Infine, andiamo a vedere come siamo in grado di testare i metodi nativi definito nel DateTimeUtils classe:
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()); }}
di Seguito è riportato l’output del logger:
INFO c.b.n.DateTimeUtilsManualTest - System time is : Wed Dec 19 11:34:02 2018
Come si può vedere, con l’aiuto dei nativi parola chiave, siamo stato in grado di accedere a una piattaforma-dipendente attuazione scritto in un’altra lingua (nel nostro caso C++).
Conclusione
In questo articolo, abbiamo imparato le basi delle parole chiave e dei metodi nativi. Con un rapido esempio, abbiamo anche imparato come integrarli in Java.
I frammenti di codice utilizzati in questo articolo sono disponibili su Github.
Inizia con Spring 5 e Spring Boot 2, attraverso il corso Learn Spring:
>>CONTROLLA IL CORSO