¿Por qué hay muchas aplicaciones de Android como Quora, Facebook desarrolladas con NDK? ¿Es por el problema de rendimiento?

Además de la gran respuesta de Léon Pelletier:

  1. Algunas cosas son más fáciles de hacer en un lenguaje de bajo nivel.
    Cosas como el procesamiento de video, el procesamiento de paquetes, la codificación y decodificación de audio, cualquier cosa que use estructuras de memoria complejas y retransmita cómo los datos se representan binariamente en la memoria.
  2. A veces necesita un nivel de acceso bajo a las API del sistema operativo.
    El código NDK le permite acceder a las API de Linux y Android que no siempre están disponibles para los programadores de Java.
    El NDK le permite escribir contenedores Java para interfaces c / c ++ usando JNI.
  3. El código nativo puede permitirle reemplazar segmentos de la aplicación sin tener que actualizar desde el Android Market. Si su aplicación incluye paquetes ejecutables compilados, puede descargar una versión más reciente de esos ejecutables sin tener que actualizar la aplicación desde Google Play.
    Tenga en cuenta que este es un riesgo de seguridad importante, por lo que si siempre se asegura de cumplir con las pautas de Google Play y utiliza firmas digitales sólidas en cualquier código que descargue y ejecute.

¿Hay realmente “muchas” aplicaciones? No lo creo. Creo que solo las empresas a las que no les importa cuánto esfuerzo y dinero gastarán en una aplicación están creando su aplicación en C / C ++ ya que hoy en día, esto no es tan común de desarrollar de esa manera.


1. Gestión de memoria: desde el principio de los tiempos (bueno, desde hace un tiempo), el uso de C / C ++ siempre ha tenido una gran ventaja frente a más lenguajes de alto nivel y Framework (Java, .Net): gestión de memoria.

2. Portabilidad, también conocida como la capacidad de reutilizar la misma biblioteca en iPhone, Windows Phone, Android, etc. Personalmente, incluso si estoy menos familiarizado con C / C ++, encuentro emocionante construirlo y “enchufarlo y jugarlo” Una biblioteca muy optimizada, estable y bien conocida en mi aplicación. No sé por qué, pero estas bibliotecas desarrolladas a menudo por programadores talentosos generalmente funcionan fuera del libro. El uso de C ++ para integrar una biblioteca existente en lugar de portarlo a un lenguaje específico de plataforma ha precedido de alguna manera a las herramientas multiplataforma actuales.

3. Uso compartido de código entre plataformas: una parte del código de la aplicación en sí, la lógica básica y la modelación, puede escribirse en C / C ++ y compartirse entre todas las plataformas.


Les digo “bravo” a estos codificadores genuinos. Pero personalmente, si fuera un CEO, me quedaría con los desarrolladores de Java / C # / Objective-C.