¿Qué es un kit de desarrollo nativo?

En programación de computadoras y desarrollo de software, un kit de desarrollo nativo (NDK) generalmente es una interfaz de programación abstracta (API) que brinda al desarrollador la capacidad de usar funciones o ejecutar código directamente a través del sistema operativo central. Este método de ejecutar un programa es claramente diferente de ejecutar código administrado o programas interpretados, en los que el código escrito es ejecutado por una máquina virtual o un intérprete que actúa como una capa de software entre las funciones centrales del sistema operativo y el código escrito por el usuario. . El uso de un kit de desarrollo nativo puede ser esencial en aplicaciones que requieren los tiempos de ejecución y procesamiento más rápidos posibles, ya que puede proporcionar acceso directo al hardware y las bibliotecas que utiliza el sistema operativo. Dependiendo del tipo de programa que se esté escribiendo y del sistema operativo de destino, el uso de un kit de desarrollo nativo podría no aumentar la velocidad del programa en absoluto y podría hacer que el código sea difícil de mantener, leer y portar a otros sistemas.

Las aplicaciones que están escritas para algunos dispositivos, como los teléfonos inteligentes, o que utilizan lenguajes informáticos interpretados, no son ejecutadas directamente por los procesos centrales del sistema operativo o el kernel. En cambio, el código del programa es ejecutado por un programa separado conocido como máquina virtual (VM) o intérprete. La máquina virtual lee el código, expande y resuelve comandos e interactúa con el kernel para ejecutar el código. Esto puede ser beneficioso para algunos desarrolladores, ya que proporciona una buena capa de abstracción para la portabilidad y deja muchos detalles complejos, como la administración de recursos y el manejo de archivos, a los creadores de la máquina virtual.

En algunos casos, sin embargo, la máquina virtual puede ser un obstáculo para algunos tipos de programas. La máquina virtual puede ralentizar la ejecución o no proporcionar acceso a algunas funciones dentro del kernel del host. Un kit de desarrollo nativo para el sistema operativo o dispositivo de destino expone las funciones del kernel a la aplicación que se está escribiendo. Dependiendo de la extensión del kit, esto puede permitir que un programa acceda directamente al hardware, cargue sus propias bibliotecas personalizadas en el kernel o use optimizaciones específicas del sistema.

Un kit de desarrollo nativo se usa con mayor frecuencia solo para partes de un programa en las que el tiempo es crítico. Estos pueden ser cálculos de procesamiento de gráficos, salida a la pantalla o entrada y salida de archivos. No todos los programas que usan funciones o rutinas nativas verán un beneficio de velocidad, porque es posible que la máquina virtual ya realice optimizaciones en el código administrado, por lo que el código de máquina resultante es idéntico, independientemente de si se usan funciones nativas. Además, el código nativo vincula un programa a una implementación específica de un sistema operativo y, a veces, a una versión específica de un dispositivo, lo que significa que el código que utiliza un kit de desarrollo nativo puede no ser fácilmente adaptado a otros sistemas.