¿Qué es un kit de desarrollo nativo?
En la programación de computadoras y el desarrollo de software, un kit de desarrollo nativo (NDK) generalmente es una interfaz de programación abstracta (API) que proporciona al desarrollador la capacidad de usar funciones o ejecutar código directamente a través del sistema operativo central. Este método de ejecución de un programa es claramente diferente de ejecutar código administrado o programas interpretados, en los cuales el código que se escribe 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 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 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 teléfonos inteligentes, o usan lenguajes de computadora interpretados no se ejecutan directamente por los procesos centrales del sistema operativo o el núcleo. En cambio, el código del programa lo ejecuta 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 núcleo 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 gestión de recursos y el manejo de archivos, a los creadores de la máquina virtual.
Sin embargo, en algunos casos, la máquina virtual puede ser un obstáculo para algunos tipos de programas. La VM puede ralentizar la ejecución o no puede proporcionar acceso a algunas funciones dentro del núcleo del host. Un kit de desarrollo nativo para el sistema operativo o dispositivo de destino expone las funciones del núcleo 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 núcleo o use optimizaciones específicas del sistema.
Un kit de desarrollo nativo se usa con mayor frecuencia solo para porciones de tiempo crítico de un programa. 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 la máquina virtual ya puede hacer optimizaciones para el código administrado, por lo que el código de máquina resultante es idéntico, independientemente de si se utilizan 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 usa un kit de desarrollo nativo podría no ser fácilmente transferido a otros sistemas.