Inom datorprogrammering och mjukvaruutveckling är ett inbyggt utvecklingskit (NDK) vanligtvis ett abstrakt programmeringsgränssnitt (API) som ger en utvecklare möjligheten att använda funktioner eller exekvera 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, där koden som skrivs exekveras av en virtuell maskin eller tolk som fungerar som ett mjukvarulager mellan operativsystemets kärnfunktioner och den användarskrivna koden . Användningen av ett inbyggt utvecklingskit kan vara avgörande i applikationer som kräver snabbast möjliga exekverings- och bearbetningstider, eftersom det kan ge direkt åtkomst till hårdvara och bibliotek som operativsystemet använder. Beroende på vilken typ av program som skrivs och måloperativsystem, kanske användningen av ett inbyggt utvecklingskit inte ökar programhastigheten alls, och kan göra kod som är svår att underhålla, läsa och porta till andra system.
Applikationer som är skrivna för vissa enheter, till exempel smarta telefoner, eller som använder tolkade datorspråk exekveras inte direkt av operativsystemets kärnprocesser 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 exekvera 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 dock den virtuella maskinen vara ett hinder för vissa typer av program. Den virtuella datorn kan sakta ner exekveringen eller misslyckas med att ge åtkomst till vissa funktioner i värdkärnan. Ett inbyggt utvecklingskit för måloperativsystemet eller enheten exponerar kärnans funktioner för applikationen som skrivs. Beroende på omfattningen 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 utvecklingskit används oftast bara för tidskritiska delar av ett program. Dessa kan vara grafiska bearbetningsberäkningar, utdata till displayen eller filinmatning och utmatning. Inte alla program som använder inbyggda funktioner eller rutiner kommer att se en hastighetsfördel, eftersom den virtuella maskinen kanske redan gör optimeringar av den hanterade koden så att den resulterande maskinkoden är identisk, oavsett om inbyggda funktioner används. Dessutom kopplar inbyggd kod ett program till en specifik implementering av ett operativsystem och ibland en specifik version av en enhet, vilket betyder att kod som använder ett inbyggt utvecklingskit kanske inte lätt kan porteras till andra system.