Tietokoneohjelmoinnissa ja ohjelmistokehityksessä natiivikehityspaketti (NDK) on yleensä abstrakti ohjelmointirajapinta (API), joka tarjoaa kehittäjälle mahdollisuuden käyttää toimintoja tai suorittaa koodia suoraan ydinkäyttöjärjestelmän kautta. Tämä ohjelman suoritusmenetelmä eroaa selvästi hallitun koodin tai tulkittujen ohjelmien suorittamisesta, joissa kirjoitettu koodi suoritetaan virtuaalikoneella tai tulkilla, joka toimii ohjelmistokerroksena käyttöjärjestelmän ydintoimintojen ja käyttäjän kirjoittaman koodin välillä. . Alkuperäisen kehityssarjan käyttö voi olla välttämätöntä sovelluksissa, jotka edellyttävät nopeinta mahdollista suoritus- ja käsittelyaikaa, koska se voi tarjota suoran pääsyn käyttöjärjestelmän käyttämään laitteistoon ja kirjastoon. Kirjoitetun ohjelman tyypistä ja kohdekäyttöjärjestelmästä riippuen alkuperäisen kehityssarjan käyttö ei välttämättä lisää ohjelman nopeutta ollenkaan ja voi tehdä koodin, jota on vaikea ylläpitää, lukea ja siirtää muihin järjestelmiin.
Sovelluksia, jotka on kirjoitettu joillekin laitteille, kuten älypuhelimille, tai jotka käyttävät tulkittuja tietokonekieliä, eivät suorita suoraan käyttöjärjestelmän ydinprosessit tai ydin. Sen sijaan ohjelmakoodin suorittaa erillinen ohjelma, joka tunnetaan nimellä virtuaalikone (VM) tai tulkki. Virtuaalikone lukee koodin, laajentaa ja ratkaisee komennot ja on yhteydessä ytimeen koodin suorittamiseksi. Tästä voi olla hyötyä joillekin kehittäjille, koska se tarjoaa hyvän keräyskerroksen siirrettävyydelle ja jättää monia monimutkaisia yksityiskohtia, kuten resurssienhallinnan ja tiedostojen käsittelyn, virtuaalikoneen luojalle.
Joissakin tapauksissa virtuaalikone voi kuitenkin estää tietyntyyppisiä ohjelmia. VM voi hidastaa suorittamista tai olla antamatta pääsyä joihinkin toimintoihin isäntäydimessä. Kohdekäyttöjärjestelmää tai -laitetta koskeva kehityssarja paljastaa ytimen toiminnot kirjoitettavalle sovellukselle. Paketin laajuudesta riippuen tämä voi antaa ohjelman käyttää suoraan laitteistoa, ladata omia mukautettuja kirjastojaan ytimeen tai käyttää järjestelmäkohtaisia optimointeja.
Alkuperäistä kehityssarjaa käytetään useimmiten vain ohjelman kriittisiin osiin. Nämä voivat olla grafiikkaprosessointilaskelmia, tulostus näyttöön tai tiedoston syöttö ja tulostus. Kaikki natiivitoimintoja tai -rutiineja käyttävät ohjelmat eivät näe nopeusetua, koska virtuaalikone saattaa jo tehdä optimointeja hallittuun koodiin, joten tuloksena oleva konekoodi on identtinen riippumatta siitä, käytetäänkö natiivitoimintoja. Lisäksi natiivikoodi yhdistää ohjelman tiettyyn käyttöjärjestelmän toteutukseen ja joskus tiettyyn laitteen versioon, mikä tarkoittaa, että natiivikehityspakettia käyttävää koodia ei ehkä voi helposti siirtää muihin järjestelmiin.