Qual è la differenza tra SDK e NDK?

NDK è anche un SDK

Google è responsabile di questa nomenclatura libera.

Tradizionalmente, tutti i Software Development Kit (SDK) erano in C, pochissimi in C++. Poi arriva Google e rilascia una libreria basata su Java per Android e la chiama SDK.

Finora andava bene.

Tuttavia, poi è arrivata la richiesta di una libreria basata su C/C++ per lo sviluppo. Principalmente dagli sviluppatori C/C++ che miravano allo sviluppo di giochi e alcune applicazioni ad alte prestazioni.

Così, Google ha rilasciato una libreria basata su C/C++. Cosa fare con il nome? Hmm ... l'hanno semplicemente chiamata Native Development Kit (NDK). Ma l'NDK è comunque un kit di sviluppo software.

Prologo.

NDK è progredito con ogni nuova versione in termini di accesso alle risorse del sistema operativo. Così come il numero di applicazioni che sono scritte in C/C++ per Android, con alcune obbligatorie in Java, non per scelta degli sviluppatori ma per insistenza di Google.

Ironicamente, sono i linguaggi collaudati come C e C++ che sono veramente cross platform.

Ti permettono di scrivere applicazioni che possono compilare per Windows, Windows UWP, GNU/Linux, Android, iOS, Mac OS X, BSD, Solaris ecc. senza cambiare una sola riga di codice, se si utilizza una libreria wrapper C/C++ adatta.

Performance

La scelta di Google è discutibile, perché la disponibilità di accessi basati su C/C++ per Windows Mobile e iOS ha dimostrato di avere prestazioni migliori o comparabili con Android anche su telefoni Windows o iOS relativamente poco potenti. Tanto che molti telefoni Android assomigliano a un desktop decente in termini di specifiche e forniscono solo una frazione delle capacità di un desktop.

La prova del nove è l'esistenza di numerose applicazioni per la pulizia della memoria, il raffreddamento della CPU, l'aumento delle prestazioni.

Complessità

Qualcuno ha scritto che C/C++ richiede un codice complesso.

Davvero? Complesso per chi?

Uno "sviluppatore" che gioca con i linguaggi, ha la sua base in Java/C# troverà il C/C++ complesso.

Che dire degli sviluppatori con 10+ anni di C/C++ sotto la cintura?

In tutta onestà, sono gli strumenti di sviluppo di Java ad essere complessi, perché sono mal strutturati e sono una perdita di produttività.

Voterei davvero al ribasso i commenti ignoranti sulla complessità del C++. Ho appena consegnato un'applicazione di rete scritta in C++ usando Qt che gira su tutti i cellulari.

La parte della complessità? La perdita di tempo chiamata Java, con i suoi standard di strumenti incoerenti tra le varie versioni che rendono la sua integrazione con QtCreator un inferno.