Was ist ein natives Entwicklungskit?
In der Computerprogrammierung und Softwareentwicklung ist ein natives Development Kit (NDK) normalerweise eine abstrakte Programmierschnittstelle (API), mit der Entwickler Funktionen verwenden oder Code direkt über das Kernbetriebssystem ausführen können. Diese Methode zur Ausführung eines Programms unterscheidet sich deutlich von der Ausführung von verwaltetem Code oder interpretierten Programmen, bei denen der geschriebene Code von einer virtuellen Maschine oder einem Interpreter ausgeführt wird, der als Softwareschicht zwischen den Kernfunktionen des Betriebssystems und dem vom Benutzer geschriebenen Code fungiert . Die Verwendung eines nativen Entwicklungskits kann in Anwendungen von entscheidender Bedeutung sein, die schnellstmögliche Ausführungs- und Verarbeitungszeiten erfordern, da sie direkten Zugriff auf die vom Betriebssystem verwendete Hardware und Bibliotheken ermöglichen. Je nach Art des zu schreibenden Programms und des Zielbetriebssystems kann die Verwendung eines nativen Entwicklungskits die Programmgeschwindigkeit möglicherweise überhaupt nicht erhöhen und dazu führen, dass Code nur schwer gewartet, gelesen und auf andere Systeme portiert werden kann.
Anwendungen, die für bestimmte Geräte wie Smartphones geschrieben wurden oder interpretierte Computersprachen verwenden, werden nicht direkt von den Kernbetriebssystemprozessen oder dem Kernel ausgeführt. Stattdessen wird der Programmcode von einem separaten Programm ausgeführt, das als virtuelle Maschine (VM) oder Interpreter bezeichnet wird. Die virtuelle Maschine liest den Code, erweitert und löst Befehle auf und kommuniziert mit dem Kernel, um den Code auszuführen. Dies kann für einige Entwickler von Vorteil sein, da es eine gute Abstraktionsebene für die Portabilität bietet und viele komplexe Details wie Ressourcenverwaltung und Dateihandhabung den Erstellern der virtuellen Maschine überlässt.
In einigen Fällen kann die virtuelle Maschine jedoch einige Arten von Programmen behindern. Die VM kann die Ausführung verlangsamen oder den Zugriff auf einige Funktionen im Host-Kernel verhindern. Ein natives Entwicklungskit für das Zielbetriebssystem oder -gerät macht die Funktionen des Kernels für die zu schreibende Anwendung verfügbar. Abhängig vom Umfang des Kits kann dies einem Programm ermöglichen, direkt auf Hardware zuzugreifen, seine eigenen benutzerdefinierten Bibliotheken in den Kernel zu laden oder systemspezifische Optimierungen zu verwenden.
Ein natives Entwicklungskit wird meist nur für zeitkritische Teile eines Programms verwendet. Dies können Grafikverarbeitungsberechnungen sein, die auf dem Display ausgegeben werden oder die Ein- und Ausgabe von Dateien. Nicht für alle Programme, die systemeigene Funktionen oder Routinen verwenden, wird eine Geschwindigkeitsverbesserung erzielt, da die virtuelle Maschine möglicherweise bereits Optimierungen am verwalteten Code vornimmt, sodass der resultierende Maschinencode unabhängig davon, ob systemeigene Funktionen verwendet werden, identisch ist. Darüber hinaus ist ein Programm mit systemeigenem Code an eine bestimmte Implementierung eines Betriebssystems und manchmal an eine bestimmte Version eines Geräts gebunden. Dies bedeutet, dass Code, der ein systemeigenes Entwicklungskit verwendet, möglicherweise nicht einfach auf andere Systeme portiert werden kann.