2012-01-17 16 views
31

Escribí algunas aplicaciones simples en Android usando Java.
Pero más tarde me encontré con esto:Android: Java, C o C++?

Proporciona las cabeceras y bibliotecas que le permiten construir actividades, la entrada del usuario mango, sensores de uso de hardware, recursos de aplicaciones de acceso, y más, cuando se programa en C o C++. (Source)

¿Cómo se relaciona esto:

aplicaciones Android están escritas en el lenguaje de programación Java. (Source)

¿Son posibles los tres idiomas?
Lo siento por la pregunta tonta.

Respuesta

33

El artículo que enlaza tiene buena información. También enlaces a http://developer.android.com/sdk/ndk/overview.html que dice:

El NDK no beneficiará a la mayoría de las aplicaciones. Como desarrollador, necesita para equilibrar sus beneficios con sus inconvenientes; en particular, el uso del código nativo no da como resultado un aumento automático del rendimiento, pero siempre aumenta la complejidad de la aplicación. En general, solo debe usar el código nativo si es esencial para su aplicación, no solo porque prefiere programar en C/C++.

Los buenos candidatos típicos para el NDK son operaciones autónomas, intensivas en CPU que no asignan mucha memoria, como el procesamiento de señales, simulación física, y más. Simplemente volver a codificar un método para ejecutar en C generalmente no da como resultado un gran aumento en el rendimiento. Cuando examine si debe desarrollar en código nativo, piense en acerca de sus requisitos y vea si las API de marco de Android proporcionan la funcionalidad que necesita. El NDK puede, sin embargo, ser una forma efectiva de de reutilizar un gran corpus de código C/C++ existente.

4

Java siempre le permite llamar a los componentes de "código nativo". Sin embargo, desea evitarlos si es posible porque pueden introducir errores sutiles y dependencias de plataforma en su código.

No creo que puedas codificar toda una aplicación para Android en C/C++, sin embargo, debes tener un contenedor Java como mínimo.

3

Esta es una buena pregunta, AFAIK, c o C++ aparece en la imagen cuando realmente desea programar algo de la característica principal de Dalvik que utilizando la API de Android como se especifica su pregunta, algo así como características relacionadas con el sensor o hardware.

Si desea construir aplicaciones mediante API, estará principalmente en Java/XML.

+0

Dalvik está escrito principalmente en C++, pero trabajar en JVM no es realmente igual a las aplicaciones de escritura para Android. La aplicación de C++ es mucho más limitada que la de java. Ni siquiera estoy seguro de que exista una API nativa para los sensores ... obviamente, hay una para Java. – Voo

5

Android es Linux por debajo para que pueda ejecutar cualquier idioma en él. He ejecutado guiones Perl en un teléfono Android por diversión. Desde un punto de vista práctico, de desarrollo de aplicaciones, la implementación de Java de Google que se ejecuta en Dalvik sería la ruta típica a seguir.

2

Reescribiendo una de esas "operaciones independientes, así intensivo de la CPU que no asignan la cantidad de memoria" en C pueden mejorar la vida de rendimiento/batería en un factor de 17 según this investigation. This article considera que ejecutar CCTOOLS Fortran es aún más rápido. Entonces vale la pena considerar los lenguajes alternativos.