Cuál es la diferencia entre SDK y NDK?

El NDK también es un SDK

Google es el responsable de esta nomenclatura tan floja.

Tradicionalmente, todos los Kit de Desarrollo de Software (SDK) estaban en C, muy pocos en C++. Entonces llega Google y lanza una librería basada en Java para Android y la llama SDK.

Hasta ahí estaba bien.

Sin embargo, luego llegó la demanda de librerías basadas en C/C++ para el desarrollo. Principalmente por parte de los desarrolladores de C/C++ con el objetivo de desarrollar juegos y algunas apps de alto rendimiento.

Así que Google lanzó una librería basada en C/C++. ¿Qué hacer con el nombre? Hmm ... simplemente lo llamaron Native Development Kit (NDK). Pero el NDK es un kit de desarrollo de software, no obstante.

Prologue.

El NDK ha progresado con cada nueva versión en términos de acceso a los recursos del sistema operativo. También lo ha hecho el número de aplicaciones que se escriben en C/C++ para Android, con algunas obligatoriamente en Java, no por elección de los desarrolladores sino por insistencia de Google.

Irónicamente, son los lenguajes probados como C y C++ los que son verdaderamente multiplataforma.

Permiten escribir aplicaciones que pueden compilar para Windows, Windows UWP, GNU/Linux, Android, iOS, Mac OS X, BSD, Solaris, etc. sin cambiar ni una sola línea de código, si se utiliza una biblioteca envolvente C/C++ adecuada.

El rendimiento

La elección de Google es cuestionable, porque la disponibilidad de acceso basado en C/C++ para Windows Mobile e iOS ha demostrado un rendimiento mejor o comparable frente a Android incluso en terminales Windows o iOS de potencia relativamente baja. Tanto es así que muchos teléfonos Android se asemejan a un ordenador de sobremesa decente en cuanto a especificaciones y ofrecen sólo una fracción de las capacidades de un ordenador de sobremesa.

La prueba del pudín es la existencia de numerosas aplicaciones para la limpieza de la memoria, la refrigeración de la CPU, el aumento del rendimiento.

Complejidad

Alguien ha escrito C/C++ pide un código complejo.

¿En serio? Complejo para quién?

Un "desarrollador" que juguetea con los lenguajes , tiene su base en Java/C# encontrará C/C++ complejo.

¿Qué pasa con los desarrolladores con más de 10 años de C/C++ a sus espaldas?

Honestamente, son las herramientas de desarrollo de Java las que son complejas, porque están mal estructuradas y son un lastre para la productividad.

Realmente votaría a la baja los comentarios ignorantes sobre las complejidades de C++. Acabo de entregar una aplicación de red escrita en C++ usando Qt que se ejecuta en todos los teléfonos móviles.

¿La parte de la complejidad? La pérdida de tiempo llamada Java, con sus estándares de herramientas inconsistentes a través de las versiones que hace que su integración con QtCreator sea un infierno.