Co to jest natywny zestaw programistyczny?

W programowaniu komputerowym i tworzeniu oprogramowania natywny zestaw programistyczny (NDK) jest zwykle abstrakcyjnym interfejsem programistycznym (API), który zapewnia programiście możliwość korzystania z funkcji lub wykonywania kodu bezpośrednio przez podstawowy system operacyjny. Ta metoda wykonywania programu wyraźnie różni się od uruchamiania kodu zarządzanego lub programów interpretowanych, w których napisany kod jest wykonywany przez maszynę wirtualną lub interpreter, który działa jako warstwa oprogramowania między podstawowymi funkcjami systemu operacyjnego a kodem napisanym przez użytkownika . Użycie natywnego zestawu deweloperskiego może być niezbędne w aplikacjach, które wymagają najszybszego możliwego czasu wykonania i przetwarzania, ponieważ może on zapewnić bezpośredni dostęp do sprzętu i bibliotek używanych przez system operacyjny. W zależności od typu pisanego programu i docelowego systemu operacyjnego, użycie natywnego zestawu programistycznego może wcale nie zwiększyć szybkości programu i może spowodować, że kod będzie trudny do utrzymania, odczytywania i przenoszenia do innych systemów.

Aplikacje napisane dla niektórych urządzeń, takich jak smartfony, lub korzystające z interpretowanych języków komputerowych nie są wykonywane bezpośrednio przez podstawowe procesy systemu operacyjnego lub jądro. Zamiast tego kod programu jest wykonywany przez oddzielny program zwany maszyną wirtualną (VM) lub interpreterem. Maszyna wirtualna odczytuje kod, rozwija i rozwiązuje polecenia oraz łączy się z jądrem w celu wykonania kodu. Może to być korzystne dla niektórych programistów, ponieważ zapewnia dobrą warstwę abstrakcji dla przenośności i pozostawia wiele złożonych szczegółów, takich jak zarządzanie zasobami i obsługa plików, twórcom maszyny wirtualnej.

Jednak w niektórych przypadkach maszyna wirtualna może stanowić przeszkodę dla niektórych typów programów. Maszyna wirtualna może spowolnić wykonywanie lub nie zapewnić dostępu do niektórych funkcji w jądrze hosta. Natywny zestaw deweloperski dla docelowego systemu operacyjnego lub urządzenia udostępnia funkcje jądra pisanej aplikacji. W zależności od zakresu zestawu może to pozwolić programowi na bezpośredni dostęp do sprzętu, załadowanie własnych niestandardowych bibliotek do jądra lub użycie optymalizacji specyficznych dla systemu.

Natywny zestaw programistyczny jest najczęściej używany tylko w przypadku fragmentów programu, w których czas ma kluczowe znaczenie. Mogą to być obliczenia przetwarzania grafiki, wyprowadzanie na wyświetlacz lub wprowadzanie i wyprowadzanie plików. Nie wszystkie programy korzystające z funkcji lub procedur natywnych odnotują korzyści związane z szybkością, ponieważ maszyna wirtualna może już dokonywać optymalizacji kodu zarządzanego, dzięki czemu wynikowy kod maszyny jest identyczny, niezależnie od tego, czy używane są funkcje natywne. Ponadto kod natywny wiąże program z określoną implementacją systemu operacyjnego, a czasem z określoną wersją urządzenia, co oznacza, że ​​kod używający natywnego zestawu deweloperskiego może nie być łatwo przeniesiony do innych systemów.