O que é um kit de desenvolvimento nativo?
Na programação de computadores e no desenvolvimento de software, um kit de desenvolvimento nativo (NDK) geralmente é uma interface de programação abstrata (API) que fornece ao desenvolvedor a capacidade de usar funções ou executar código diretamente através do sistema operacional principal. Esse método de execução de um programa é distintamente diferente da execução de código gerenciado ou de programas interpretados, nos quais o código gravado é executado por uma máquina virtual ou intérprete que atua como uma camada de software entre as funções principais do sistema operacional e o código gravado pelo usuário . O uso de um kit de desenvolvimento nativo pode ser essencial em aplicativos que exigem os tempos de execução e processamento mais rápidos possíveis, pois pode fornecer acesso direto ao hardware e bibliotecas que o sistema operacional utiliza. Dependendo do tipo de programa que está sendo gravado e do sistema operacional de destino, o uso de um kit de desenvolvimento nativo pode não aumentar a velocidade do programa e tornar o código difícil de manter, ler e portar para outros sistemas.
Os aplicativos criados para alguns dispositivos, como smartphones, ou usam linguagens de computador interpretadas, não são executados diretamente pelos processos principais do sistema operacional ou pelo kernel. Em vez disso, o código do programa é executado por um programa separado, conhecido como máquina virtual (VM) ou intérprete. A máquina virtual lê o código, expande e resolve comandos e faz interface com o kernel para executar o código. Isso pode ser benéfico para alguns desenvolvedores, pois fornece uma boa camada de abstração para portabilidade e deixa muitos detalhes complexos, como gerenciamento de recursos e manipulação de arquivos, aos criadores da máquina virtual.
Em alguns casos, no entanto, a máquina virtual pode ser um obstáculo para alguns tipos de programas. A VM pode retardar a execução ou falhar ao fornecer acesso a algumas funções no kernel do host. Um kit de desenvolvimento nativo para o sistema operacional ou dispositivo de destino expõe as funções do kernel ao aplicativo que está sendo gravado. Dependendo da extensão do kit, isso pode permitir que um programa acesse diretamente o hardware, carregue suas próprias bibliotecas personalizadas no kernel ou use otimizações específicas do sistema.
Um kit de desenvolvimento nativo geralmente é usado apenas para partes críticas de tempo de um programa. Podem ser cálculos de processamento gráfico, saída para a tela ou entrada e saída de arquivo. Nem todos os programas que usam funções ou rotinas nativas terão um benefício de velocidade, porque a máquina virtual já pode fazer otimizações no código gerenciado para que o código da máquina resultante seja idêntico, independentemente de as funções nativas serem usadas. Além disso, o código nativo vincula um programa a uma implementação específica de um sistema operacional e, às vezes, a uma versão específica de um dispositivo, o que significa que o código que usa um kit de desenvolvimento nativo pode não ser facilmente transportado para outros sistemas.