Descripción general
En este tutorial rápido, discutiremos el concepto de la palabra clave nativa en Java y también mostraremos cómo integrar métodos nativos en código Java.
La palabra clave nativa en Java
En primer lugar, discutamos qué es una palabra clave nativa en Java.
En pocas palabras, se trata de un modificador de no acceso que se utiliza para acceder a métodos implementados en un lenguaje que no sea Java, como C/C++.
Indica la implementación dependiente de la plataforma de un método o código y también actúa como una interfaz entre JNI y otros lenguajes de programación.
métodos nativos
Un método nativo es un método Java (ya sea un método de instancia o un método de clase) cuya implementación también está escrita en otro lenguaje de programación como C/C++.
Además, un método marcado como nativo no puede tener un cuerpo y debe terminar con un punto y coma:
native method ();
Podemos usarlos para:
- implementar una interfaz con llamadas al sistema o bibliotecas escritas en otros lenguajes de programación
- acceder a recursos de hardware o del sistema a los que solo se puede acceder desde el otro lenguaje
- integrar código heredado ya existente escrito en C/C++ en una aplicación Java
- llamar a una biblioteca compilada cargada dinámicamente con código arbitrario desde Java
Ejemplos
Ahora vamos a demostrar cómo integrar estos métodos en nuestro código Java.
4.1. Acceso al Código nativo en Java
En primer lugar, vamos a crear una clase DateTimeUtils que necesita acceder a un método nativo dependiente de la plataforma llamado GetSystemTime:
public class DateTimeUtils { public native String getSystemTime(); // ...}
Para cargarlo, usaremos el Sistema.loadLibrary.
Coloquemos la llamada para cargar esta biblioteca en un bloque estático para que esté disponible en nuestra clase:
public class DateTimeUtils { public native String getSystemTime(); static { System.loadLibrary("nativedatetimeutils"); }}
Hemos creado una biblioteca de enlaces dinámicos, nativedatetimeutils, que implementa GetSystemTime en C++ utilizando instrucciones detalladas cubiertas en nuestro artículo guía de JNI.
4.2. Prueba de métodos nativos
Finalmente, veamos cómo podemos probar métodos nativos definidos en la clase 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()); }}
A continuación se muestra la salida del registrador:
INFO c.b.n.DateTimeUtilsManualTest - System time is : Wed Dec 19 11:34:02 2018
Como podemos ver, con la ayuda de la palabra clave nativa, podemos acceder con éxito a una implementación dependiente de la plataforma en otro lenguaje (en nuestro caso C++).
Conclusión
En este artículo, hemos aprendido los conceptos básicos de las palabras clave y los métodos nativos. Con un ejemplo rápido, también hemos aprendido a integrarlos en Java.
Los fragmentos de código utilizados en este artículo están disponibles en Github.
empezar con el Muelle 5 y el Resorte de Arranque 2, a través del Aprender de Primavera del curso:
>> COMPRUEBE EL CURSO