Wat is een native ontwikkelingspakket?
Bij computerprogrammering en softwareontwikkeling is een native ontwikkelkit (NDK) meestal een abstracte programmeerinterface (API) die een ontwikkelaar de mogelijkheid biedt om functies te gebruiken of code rechtstreeks uit te voeren via het kernbesturingssysteem. Deze methode voor het uitvoeren van een programma verschilt duidelijk van het uitvoeren van beheerde code of geïnterpreteerde programma's, waarbij de code die wordt geschreven, wordt uitgevoerd door een virtuele machine of een tolk die fungeert als een softwarelaag tussen de functies van het kernbesturingssysteem en de door de gebruiker geschreven code . Het gebruik van een native ontwikkelkit kan essentieel zijn in toepassingen die de snelst mogelijke uitvoering 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 doelbesturingssysteem, kan het gebruik van een native ontwikkelkit de programmasnelheid mogelijk helemaal niet verhogen en kan het code maken die moeilijk te onderhouden, te lezen en over te dragen is naar andere systemen.
Toepassingen die voor sommige apparaten zijn geschreven, zoals smartphones, of die geïnterpreteerde computertalen gebruiken, worden niet rechtstreeks door de kernprocessen van het besturingssysteem of de kernel uitgevoerd. In plaats daarvan wordt de programmacode uitgevoerd door een afzonderlijk programma dat bekend staat als een virtuele machine (VM) of een interpreter. De virtuele machine leest de code, breidt uit en lost opdrachten op en werkt samen met de kernel om de code uit te voeren. Dit kan voor sommige ontwikkelaars voordelig zijn, omdat het een goede abstractielaag biedt voor draagbaarheid en veel complexe details, zoals resourcebeheer en bestandsverwerking, overlaat aan de makers van de virtuele machine.
In sommige gevallen kan de virtuele machine echter een belemmering vormen voor sommige typen programma's. De VM kan de uitvoering vertragen of geen toegang bieden tot sommige functies binnen de host-kernel. Een native ontwikkelkit voor het doelbesturingssysteem of -apparaat stelt de functies van de kernel bloot aan de applicatie die wordt geschreven. Afhankelijk van de omvang van de kit, kan een programma hiermee rechtstreeks toegang krijgen tot hardware, eigen aangepaste bibliotheken in de kernel laden of systeemspecifieke optimalisaties gebruiken.
Een native ontwikkelkit wordt meestal alleen gebruikt voor tijdkritische delen van een programma. Dit kunnen grafische verwerkingsberekeningen zijn, uitvoer naar het display of bestandsinvoer en -uitvoer. Niet alle programma's die native functies of routines gebruiken, zien een snelheidsvoordeel, omdat de virtuele machine mogelijk al optimalisaties aanbrengt in de beheerde code, zodat de resulterende machinecode identiek is, ongeacht of native functies worden gebruikt. Bovendien koppelt native code een programma aan een specifieke implementatie van een besturingssysteem en soms een specifieke versie van een apparaat, wat betekent dat code die een native ontwikkelingskit gebruikt, mogelijk niet gemakkelijk wordt overgedragen naar andere systemen.