A native development kit (NDK) provides direct access to hardware and libraries used by the operating system, allowing for faster execution times. However, it may make code difficult to maintain and not speed up all programs. Virtual machines can provide portability but may run slow or not provide access to some functions. NDKs are often used for critical parts of a program, but tying code to a specific implementation of an operating system can make it difficult to port to other systems.
In computer programming and software development, a native development kit (NDK) is usually an abstract programming interface (API) that provides a developer with the ability to use functions or run code directly through the core operating system. This method of executing a program is distinctly different from the execution of managed code or interpreted programs, in which the written code is executed by a virtual machine or an interpreter that acts as a software layer between the main functions of the operating system and the code written by user. Using a native development kit can be essential in applications that require the fastest possible execution and processing times, because it can provide direct access to the hardware and libraries used by the operating system. Depending on the type of program written and the target operating system, using a native development kit may not speed up the program at all, and may make the code difficult to maintain, read, and port to other systems.
Applications written for some devices, such as smartphones, or that use interpreted computer languages are not executed directly by the main operating system processes or by the kernel. Instead, program code is executed by a separate program known as a virtual machine (VM) or interpreter. The virtual machine reads the code, expands and resolves commands, and interfaces with the kernel to execute the code. This can be beneficial to some developers, because it provides a good level of abstraction for portability and leaves many complex details, such as resource management and file management, up to the creators of the virtual machine.
In some cases, however, the virtual machine can be an obstacle for some types of programs. The VM may run slow or not provide access to some functions within the host kernel. A development kit native to the target operating system or device exposes kernel functions to the application being written. Depending on the extent of the kit, this can allow a program to access hardware directly, load its own custom libraries into the kernel, or use system-specific optimizations.
A native development kit is often used for only the critical parts of a program. These can be graphics processing calculations, display output, or file input and output. Not all programs that use native functions or routines will see a speed advantage, because the virtual machine may already be making optimizations to managed code so that the resulting machine code is identical, whether or not native functions are used. Also, native code ties a program to a specific implementation of an operating system and sometimes to a specific version of a device, which means that code using a native development kit may not be easily ported to other systems.
Protect your devices with Threat Protection by NordVPN