Interfaz nativa de Java

Java Native Interface (JNI)  es un mecanismo estándar para ejecutar código bajo el control de Java Virtual Machine (JVM), que está escrito en C/C++ o Assembly y vinculado como bibliotecas dinámicas; permite no utilizar enlaces estáticos. Esto hace posible llamar a una función C / C++ desde un programa Java , y viceversa. Las interfaces anteriores, a diferencia de JNI, no cumplían la condición de compatibilidad binaria .

Propósito

La principal ventaja de JNI sobre la versión anterior ( JDK 1.0 NMI - Invocación de método nativo) y otras interfaces similares (Netscape Java Runtime Interface o Raw Native Interface y COM/Java Interface de Microsoft) es que JNI se diseñó originalmente para compatibilidad binaria , para aplicaciones compatibilidad , escrita con JNI, para cualquier máquina virtual Java en una plataforma específica. Por lo tanto, el código C / C++ compilado debe ser ejecutado por máquinas Java, por ejemplo, en varios navegadores, herramientas de desarrollo como Symantec Visual Cafe y Sun Java Workshop, para una plataforma particular ( Win32 en este caso). Las interfaces anteriores no cumplían la condición de compatibilidad binaria .

A través de este mecanismo , el código de bytes de Java puede interactuar con el código específico de la plataforma de la aplicación o del sistema que se ejecuta directamente en varios sistemas operativos [1] .

La interfaz JNI específica de la plataforma no brinda acceso a toda la interfaz de programación de aplicaciones de un sistema operativo en particular, sino solo a parte de ella. JNI se utilizó por primera vez en Java versión 1.1 y se desarrolló en Java 2.

Interfaz en desuso

NMI (Invocación de método nativo) fue el primer mecanismo que Sun especificó para invocar código C desde Java y el único mecanismo admitido en JDK 1.0.2. En todas las versiones posteriores de Java, NMI ya no es compatible y se reemplaza por un mecanismo JNI parcialmente compatible.

Notas

  1. Por ejemplo, a una serie de llamadas del sistema a la Interfaz de programación del sistema de Windows (API de Windows), API de Mac OS o GNU/Linux

Véase también