Wat is een native ontwikkelingskit?
In computerprogrammering en softwareontwikkeling is een native ontwikkelingskit (NDK) meestal een abstracte programmeerinterface (API) die een ontwikkelaar biedt met de mogelijkheid om functies te gebruiken of code rechtstreeks via het kernbesturingssysteem uit te voeren. Deze methode voor het uitvoeren van een programma verschilt duidelijk van het uitvoeren van beheerde code of geïnterpreteerde programma's, waarin de geschreven code wordt uitgevoerd door een virtuele machine of tolk die fungeert als een softwarelaag tussen de kernbesturingssysteemfuncties en de door de gebruiker geschreven code. Het gebruik van een native ontwikkelingskit kan essentieel zijn in applicaties die de snelst mogelijke uitvoerings- en verwerkingstijden vereisen, omdat het directe toegang kan bieden tot hardware en bibliotheken die het besturingssysteem gebruikt. Afhankelijk van het type programma dat wordt geschreven en het beoogde besturingssysteem, kan het gebruik van een native ontwikkelingskit de programmasnelheid helemaal niet verhogen en kan ze code maken die moeilijk te onderhouden, lezen en poort naar OThaar systemen.
Toepassingen die zijn geschreven voor sommige apparaten, zoals smartphones, of gebruik geïnterpreteerde computertalen worden niet rechtstreeks uitgevoerd door de kernbesturingssysteemprocessen of de kernel. In plaats daarvan wordt de programmacode uitgevoerd door een afzonderlijk programma dat bekend staat als een virtuele machine (VM) of tolk. De virtuele machine leest de code, breidt en lost opdrachten uit en lost interfaces met de kernel om de code uit te voeren. Dit kan voor sommige ontwikkelaars gunstig zijn, omdat het een goede laag abstractie biedt voor draagbaarheid en veel complexe details, zoals resource management en bestandsbehandeling, overlaat aan de makers van de virtuele machine.
In sommige gevallen kan de virtuele machine echter een belemmering zijn voor sommige soorten programma's. De VM kan de uitvoering vertragen of geen toegang bieden tot sommige functies binnen de host -kernel. Een native ontwikkelingskit voor de doelstellingen van het doelwitSTEM of apparaat stelt de functies van de kernel bloot aan de applicatie die wordt geschreven. Afhankelijk van de omvang van de kit kan dit een programma rechtstreeks toegang krijgen tot hardware, zijn eigen aangepaste bibliotheken in de kernel laden of systeemspecifieke optimalisaties gebruiken.
Een native ontwikkelingskit wordt meestal alleen gebruikt voor tijdkritische delen van een programma. Dit kunnen berekeningen van grafische verwerking zijn, uitvoer naar het display- of bestandsinvoer en uitvoer. Niet alle programma's die native functies of routines gebruiken, zullen een snelheidsvoordeel zien, omdat de virtuele machine de beheerde code al mogelijk optimaliseert, zodat de resulterende machinecode identiek is, ongeacht of native functies worden gebruikt. Bovendien verbindt native code een programma aan een specifieke implementatie van een besturingssysteem en soms een specifieke versie van een apparaat, wat betekent dat code met behulp van een native ontwikkelingskit mogelijk niet eenvoudig wordt overgedragen naar andere systemen.