Ce este un kit de dezvoltare nativ?

În programarea computerelor și dezvoltarea de software, un kit de dezvoltare nativ (NDK) este de obicei o interfață de programare abstractă (API) care oferă dezvoltatorului capacitatea de a utiliza funcții sau de a executa cod direct prin sistemul de operare de bază. Această metodă de executare a unui program este diferit de rularea codului gestionat sau a programelor interpretate, în care codul care este scris este executat de o mașină virtuală sau un interpret care acționează ca un strat software între funcțiile de bază ale sistemului de operare și codul scris de utilizator. . Utilizarea unui kit de dezvoltare nativ poate fi esențială în aplicațiile care necesită cei mai rapizi timpi de execuție și procesare posibil, deoarece poate oferi acces direct la hardware și biblioteci pe care le utilizează sistemul de operare. În funcție de tipul de program care este scris și de sistemul de operare țintă, utilizarea unui kit de dezvoltare nativ ar putea să nu mărească deloc viteza programului și ar putea face cod dificil de întreținut, citit și portat la alte sisteme.

Aplicațiile care sunt scrise pentru anumite dispozitive, cum ar fi telefoanele inteligente, sau care folosesc limbaje interpretate pentru computer, nu sunt executate direct de procesele de bază ale sistemului de operare sau de nucleu. În schimb, codul programului este executat de un program separat cunoscut sub numele de mașină virtuală (VM) sau interpret. Mașina virtuală citește codul, extinde și rezolvă comenzile și interacționează cu nucleul pentru a executa codul. Acest lucru poate fi benefic pentru unii dezvoltatori, deoarece oferă un strat bun de abstractizare pentru portabilitate și lasă multe detalii complexe, cum ar fi gestionarea resurselor și gestionarea fișierelor, creatorilor mașinii virtuale.

În unele cazuri, totuși, mașina virtuală poate fi o piedică pentru anumite tipuri de programe. VM-ul poate încetini execuția sau nu poate oferi acces la unele funcții din nucleul gazdă. Un kit de dezvoltare nativ pentru sistemul de operare sau dispozitivul țintă expune funcțiile nucleului aplicației care este scrisă. În funcție de amploarea kit-ului, acest lucru poate permite unui program să acceseze direct hardware-ul, să își încarce propriile biblioteci personalizate în kernel sau să utilizeze optimizări specifice sistemului.

Un kit de dezvoltare nativ este cel mai adesea folosit doar pentru porțiunile de timp critice ale unui program. Acestea pot fi calcule de procesare grafică, ieșire pe afișaj sau intrare și ieșire a fișierelor. Nu toate programele care folosesc funcții sau rutine native vor avea un beneficiu de viteză, deoarece mașina virtuală ar putea face deja optimizări pentru codul gestionat, astfel încât codul mașină rezultat să fie identic, indiferent dacă sunt utilizate funcții native. În plus, codul nativ leagă un program de o implementare specifică a unui sistem de operare și uneori de o versiune specifică a unui dispozitiv, ceea ce înseamnă că codul care utilizează un kit de dezvoltare nativ ar putea să nu fie ușor portat pe alte sisteme.