Vad är ett Native Development Kit?
Vid datorprogrammering och mjukvaruutveckling är ett nativt utvecklingspaket (NDK) vanligtvis ett abstrakt programmeringsgränssnitt (API) som ger en utvecklare möjlighet att använda funktioner eller köra kod direkt genom kärnoperativsystemet. Denna metod för att köra ett program skiljer sig tydligt från att köra hanterad kod eller tolkade program, i vilken koden som skrivs exekveras av en virtuell maskin eller tolk som fungerar som ett mjukvarulager mellan de centrala operativsystemfunktionerna och den användarskrivna koden . Användning av ett inbyggt utvecklingspaket kan vara väsentligt i applikationer som kräver snabbast möjliga körning och behandlingstider, eftersom det kan ge direkt tillgång till hårdvara och bibliotek som operativsystemet använder. Beroende på vilken typ av program som skrivs och måloperativsystemet kanske användningen av ett inbyggt utvecklingspaket inte ökar programhastigheten alls och kan göra kod som är svår att underhålla, läsa och port till andra system.
Program som är skrivna för vissa enheter, till exempel smarta telefoner, eller som använder tolkade datorspråk, körs inte direkt av de centrala operativsystemprocesserna eller kärnan. Istället exekveras programkoden av ett separat program som kallas en virtuell maskin (VM) eller tolk. Den virtuella maskinen läser koden, expanderar och löser kommandon och gränssnitt med kärnan för att köra koden. Detta kan vara fördelaktigt för vissa utvecklare, eftersom det ger ett bra lager av abstraktion för portabilitet och lämnar många komplexa detaljer, såsom resurshantering och filhantering, till skaparna av den virtuella maskinen.
I vissa fall kan emellertid den virtuella maskinen hindra vissa typer av program. VM kan bromsa exekveringen eller misslyckas med att ge åtkomst till vissa funktioner i värdkärnan. Ett ursprungligt utvecklingspaket för måloperativsystemet eller enheten exponerar kärnans funktioner för applikationen som skrivs. Beroende på utsträckning av satsen kan detta tillåta ett program att direkt komma åt hårdvara, ladda sina egna anpassade bibliotek i kärnan eller använda systemspecifika optimeringar.
Ett inbyggt utvecklingspaket används ofta bara för tidskritiska delar av ett program. Dessa kan vara beräkningar av grafikbearbetning, utgång till displayen eller filinmatning och -utgång. Inte alla program som använder inbyggda funktioner eller rutiner kommer att få en hastighetsfördel, eftersom den virtuella maskinen redan kan göra optimeringar av den hanterade koden så att den resulterande maskinkoden är identisk, oavsett om inbyggda funktioner används. Dessutom knyter native code ett program till en specifik implementering av ett operativsystem och ibland en specifik version av en enhet, vilket innebär att kod med hjälp av en native utvecklingskit kanske inte enkelt kan porteras till andra system.