Le NDK est aussi un SDK
Gogle est responsable de cette nomenclature lâche.
Traditionnellement, tous les kits de développement logiciel (SDK) étaient en C, très peu en C++. Puis Google arrive et publie une bibliothèque basée sur Java pour Android et l'appelle un SDK.
C'était correct jusqu'à présent.
Cependant, est alors arrivée la demande de bibliothèque basée sur C/C++ pour le développement. Principalement de la part de développeurs C/C++ visant le développement de jeux et certaines apps de haute performance.
Donc, Google a sorti une bibliothèque basée sur C/C++. Que faire avec le nommage ? Hmm ... ils l'ont juste appelé Native Development Kit (NDK). Mais le NDK n'en est pas moins un kit de développement logiciel.
Prologue.
Le NDK a progressé à chaque nouvelle version en termes d'accès aux ressources de l'OS. De même, a augmenté le nombre d'applications écrites en C/C++ pour Android, avec quelques Java obligatoires, non pas par choix des développeurs mais par insistance de Google.
Ironiquement, ce sont les langages éprouvés comme C et C++ qui sont véritablement multiplateformes.
Ils permettent d'écrire des applications qui peuvent se compiler pour Windows, Windows UWP, GNU/Linux, Android, iOS, Mac OS X, BSD, Solaris, etc. sans changement d'une seule ligne de code, si vous utilisez une bibliothèque wrapper C/C++ appropriée.
Performance
Le choix de Google est discutable, car la disponibilité d'accès basés sur C/C++ pour Windows Mobile et iOS a démontré des performances meilleures ou comparables à celles d'Android, même sur des combinés Windows ou iOS relativement peu puissants. A tel point que de nombreux téléphones Android ressemblent à un ordinateur de bureau décent du point de vue des spécifications et ne fournissent qu'une fraction des capacités d'un ordinateur de bureau.
La preuve du pudding est l'existence de nombreuses applications pour le nettoyage de la mémoire, le refroidissement du CPU, l'augmentation des performances.
Complexité
Quelqu'un a écrit que C/C++ appelle un code complexe.
Vraiment ? Complexe pour qui ?
Un " développeur " qui joue avec les langages , a sa base en Java/C# trouvera C/C++ complexe.
Que dire des développeurs qui ont plus de 10 ans de C/C++ à leur actif ?
Honnêtement, ce sont les outils de développement de Java qui sont complexes, parce qu'ils sont mal structurés et sont un frein à la productivité.
Je voterais vraiment à la baisse les commentaires ignorants sur les complexités du C++. Je viens de livrer une application réseau écrite en C++ en utilisant Qt qui fonctionne sur tous les téléphones mobiles.
La partie complexité ? Le gaspilleur de temps appelé Java, avec ses normes d'outillage incohérentes d'une version à l'autre qui font de son intégration avec QtCreator un enfer.
.