Hva er et Native Development Kit?
I programvareutvikling og programvareutvikling er et native utviklingskit (NDK) vanligvis et abstrakt programmeringsgrensesnitt (API) som gir en utvikler muligheten til å bruke funksjoner eller utføre kode direkte gjennom kjernen operativsystem. Denne metoden for å utføre et program er tydelig forskjellig fra å kjøre administrert kode eller tolket programmer, der koden som er skrevet blir kjørt av en virtuell maskin eller tolk som fungerer som et programvarelag mellom kjernens operativsystemfunksjoner og den brukerskrevne koden. . Bruken av et eget utviklingssett kan være viktig i applikasjoner som krever raskest mulig utførelse og behandlingstid, fordi det kan gi direkte tilgang til maskinvare og biblioteker operativsystemet bruker. Avhengig av hvilken type program som skrives og målet operativsystem, kan det hende at bruken av et eget utviklingssett ikke øker programhastigheten i det hele tatt, og kan lage kode som er vanskelig å vedlikeholde, lese og port til andre systemer.
Programmer som er skrevet for noen enheter, for eksempel smarttelefoner, eller som bruker tolket dataspråk, kjøres ikke direkte av kjernens operativsystemprosesser eller kjernen. I stedet kjøres programkoden av et eget program kjent som en virtuell maskin (VM), eller tolk. Den virtuelle maskinen leser koden, utvider og løser kommandoer og grensesnitt med kjernen for å utføre koden. Dette kan være gunstig for noen utviklere, fordi det gir et godt lag med abstraksjon for portabilitet og overlater mange komplekse detaljer, som ressursstyring og filhåndtering, til skaperne av den virtuelle maskinen.
I noen tilfeller kan imidlertid den virtuelle maskinen være til hinder for noen typer programmer. VM kan bremse utførelsen eller unnlater å gi tilgang til noen funksjoner i vertskjernen. Et eget utviklingssett for måloperativsystemet eller enheten eksponerer funksjonene til kjernen for applikasjonen som skrives. Avhengig av omfanget av settet, kan dette gi et program direkte tilgang til maskinvare, laste egne tilpassede biblioteker inn i kjernen eller bruke systemspesifikke optimaliseringer.
Et eget utviklingssett brukes ofte bare for tidskritiske deler av et program. Dette kan være beregninger for grafikkbehandling, output til displayet eller fil input og output. Ikke alle programmer som bruker native funksjoner eller rutiner vil ha en hastighetsgevinst, fordi den virtuelle maskinen allerede kan gjøre optimaliseringer av den administrerte koden slik at den resulterende maskinkoden er identisk, uavhengig av om native funksjoner brukes. I tillegg knytter native code et program til en spesifikk implementering av et operativsystem og noen ganger en spesifikk versjon av en enhet, noe som betyr at kode som bruker et native utviklingskit, kanskje ikke lett blir portert til andre systemer.