JNI también es venerada para que su función solicite a la API para colarse en una máquina virtual Java en aplicaciones Java. Esto permite que los desarrolladores invocen el código Java dentro del código de la aplicación nativa.
Si ha pasado algún tiempo trabajando con Java, probablemente ya haya encontrado los muchos problemas de rendimiento que inevitablemente se le presentan. Esto no es un problema cuando ejecuta el mismo código en el idioma nativo, que puede funcionar más de dieciocho veces más rápido cuando se lee en un modelo compilado. Además de eso, también puede usar rutinas de hardware obsoletas/incompatibles con códigos nativos en otros idiomas.
Este tutorial demostrará cómo se puede invocar el código de la máquina C/C ++ desde una aplicación Java.
Requisitos previos
Vas a necesitar algunas cosas para seguir con esta guía correctamente. Estos incluyen el compilador de Java, o Javac.Exe, junto con el JVM, así como el generador de método C nativo (Javah.exe). Los tres vienen integrados en el kit de desarrollo de software, por lo que todos están bien si tiene eso. Además de estos tres, también necesitará los archivos que definen JNI, incluidos los archivos de encabezado nativos y los archivos completos de la biblioteca.
Y, por supuesto, en un tutorial sobre la ejecución de los códigos C y C ++, también usaremos el compilador C para crear una biblioteca compartida.
Componentes JNI
JNI está impulsado principalmente por dos componentes, a saber, H y Javah. H es el componente del archivo de encabezado que reemplaza los códigos nativos con el código Java, mientras que Javah hace que este archivo se pueda cargar a los archivos de encabezado de la aplicación por sí mismo.
Invocar c/c ++ del código Java
Paso 1: Escribir el código en Java
El código se escribe por primera vez en Java y cumple con tres condiciones. Primero, se escribe con el método nativo que se invocará más tarde. En segundo lugar, tiene que cargar la biblioteca compartida de la cual el código nativo es parte y, por último, tiene que invocar los métodos nativos.
Usemos este código para ilustrar más:
Líneas de aviso 3 y 6; Estas son las líneas donde se incluyen los métodos nativos. El código que carga las bibliotecas compartidas se encuentra en la línea 10, lo que conduce al método que se invoca entre las líneas 12 a 15.
Paso 2: Compilar el código Java en Bytecode
El segundo paso tiene que ver con la compilación del código Java. El compilador Javac puede hacer el trabajo aquí por nosotros; Simplemente emita el comando a continuación:
$ javac ejemplo1.JavaPaso 3: crear archivos de encabezado C/C ++
A continuación, se deben crear los archivos de encabezado del idioma nativo. Este encabezado archiva las firmas de los códigos nativos.
Estos archivos de encabezado se pueden crear con la herramienta nativa de Javah, un generador de trozos C incluido con SDK, utilizando el siguiente comando:
Javah Ejemplo1La siguiente salida debe devolver:
Paso 4: Escribir el código nativo
Aquí es donde escribiremos el código C/C ++. Debe tener en cuenta todas las firmas que tienen que parecerse a las declaraciones que hicimos en el paso 1.
La siguiente es una implementación escrita en el lenguaje C:
Paso 5: Crea una biblioteca compartida
Se puede crear una biblioteca compartida con cualquier compilador. Debido a que la biblioteca compartida contiene el código nativo, tendremos que crear uno.
Paso 6: Inicie su programa
Este paso implica evaluar el código e identificar cualquier problema con el programa. Esto involucrará el entorno de tiempo de ejecución de Java porque el código se ejecutará en JVM principalmente.
Emita el siguiente comando:
Java Ejemplo1Debería regresar:
Entonces esa fue nuestra breve guía para principiantes para usar la interfaz nativa de Java. Esperamos que lo hayas encontrado útil.
Aprender a trabajar con JNI es esencial para cualquiera que quiera desarrollar aplicaciones Java, especialmente aplicaciones de Android para teléfonos inteligentes.