Co to jest Native Development Kit?
W programowaniu komputerowym i programowaniu natywny zestaw programistyczny (NDK) zazwyczaj jest abstrakcyjnym interfejsem programistycznym (API), który zapewnia programistom możliwość korzystania z funkcji lub wykonywania kodu bezpośrednio za pośrednictwem podstawowego systemu operacyjnego. Ta metoda wykonywania programu wyraźnie różni się od uruchamiania kodu zarządzanego lub interpretowanych programów, w których zapisywany 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 . Korzystanie z natywnego zestawu programistycznego może być niezbędne w aplikacjach, które wymagają najszybszego możliwego czasu wykonania i przetwarzania, ponieważ zapewnia bezpośredni dostęp do sprzętu i bibliotek używanych przez system operacyjny. W zależności od rodzaju pisanego programu i docelowego systemu operacyjnego użycie natywnego zestawu programistycznego może wcale nie zwiększyć szybkości programu i może utrudnić utrzymanie, odczyt i przeniesienie kodu do innych systemów.
Aplikacje napisane dla niektórych urządzeń, takich jak smartfony lub używające interpretowanych języków komputerowych, nie są uruchamiane bezpośrednio przez podstawowe procesy systemu operacyjnego ani jądro. Zamiast tego kod programu jest wykonywany przez osobny program znany jako maszyna wirtualna (VM) lub interpreter. Maszyna wirtualna odczytuje kod, rozwija i rozwiązuje polecenia oraz współpracuje 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 może zapewnić dostępu do niektórych funkcji w jądrze hosta. Natywny zestaw programistyczny 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 zastosowanie optymalizacji systemowych.
Natywny zestaw programistyczny jest najczęściej używany tylko do części programu o krytycznym czasie. Mogą to być obliczenia przetwarzania grafiki, wyjście na wyświetlacz lub wejście i wyjście pliku. Nie wszystkie programy, które używają natywnych funkcji lub procedur, zauważą większą szybkość, ponieważ maszyna wirtualna może już dokonywać optymalizacji kodu zarządzanego, więc wynikowy kod maszyny jest identyczny, niezależnie od tego, czy używane są funkcje natywne. Ponadto natywny kod wiąże program z konkretną implementacją systemu operacyjnego, a czasem z określoną wersją urządzenia, co oznacza, że kod korzystający z natywnego zestawu programistycznego może nie być łatwo przeniesiony do innych systemów.