U računalnom programiranju i razvoju softvera, izvorni razvojni komplet (NDK) obično je apstraktno programsko sučelje (API) koje programeru pruža mogućnost korištenja funkcija ili izvršavanja koda izravno kroz jezgro operacijskog sustava. Ova metoda izvođenja programa izrazito se razlikuje od pokretanja upravljanog koda ili interpretiranih programa, u kojima napisani kod izvršava virtualni stroj ili tumač koji djeluje kao softverski sloj između funkcija jezgre operacijskog sustava i koda koji je napisao korisnik. . Korištenje izvornog razvojnog kompleta može biti ključno u aplikacijama koje zahtijevaju najbrže moguće vrijeme izvršenja i obrade, jer može pružiti izravan pristup hardveru i knjižnicama koje koristi operativni sustav. Ovisno o vrsti programa koji se piše i ciljnom operativnom sustavu, korištenje izvornog razvojnog kompleta možda uopće neće povećati brzinu programa i može stvoriti kod koji je teško održavati, čitati i prenositi na druge sustave.
Aplikacije koje su napisane za neke uređaje, kao što su pametni telefoni, ili koriste interpretirane računalne jezike, ne izvode se izravno od strane temeljnih procesa operacijskog sustava ili kernela. Umjesto toga, programski kod izvršava poseban program poznat kao virtualni stroj (VM) ili interpreter. Virtualni stroj čita kod, proširuje i razrješava naredbe te se povezuje s kernelom kako bi izvršio kod. To može biti korisno za neke programere jer pruža dobar sloj apstrakcije za prenosivost i ostavlja mnoge složene detalje, kao što su upravljanje resursima i rukovanje datotekama, kreatorima virtualnog stroja.
U nekim slučajevima, međutim, virtualni stroj može biti smetnja nekim vrstama programa. VM može usporiti izvršenje ili ne omogućiti pristup nekim funkcijama unutar jezgre hosta. Izvorni razvojni komplet za ciljni operativni sustav ili uređaj izlaže funkcije kernela aplikaciji koja se piše. Ovisno o opsegu kompleta, to može omogućiti programu izravan pristup hardveru, učitavanje vlastitih prilagođenih knjižnica u kernel ili korištenje optimizacija specifičnih za sustav.
Izvorni razvojni komplet najčešće se koristi samo za vremenski kritične dijelove programa. To mogu biti izračuni grafičke obrade, izlaz na zaslon ili unos i izlaz datoteke. Neće svi programi koji koriste izvorne funkcije ili rutine vidjeti prednost u brzini, jer virtualni stroj možda već vrši optimizacije upravljanog koda tako da je rezultirajući strojni kod identičan, bez obzira na to koriste li se izvorne funkcije. Dodatno, izvorni kod povezuje program sa specifičnom implementacijom operativnog sustava, a ponekad i s određenom verzijom uređaja, što znači da se kod koji koristi izvorni razvojni komplet možda neće lako prenijeti na druge sustave.