La parola chiave e metodi nativi Java

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.