web-dev-qa-db-fra.com

Android: Java, C ou C ++?

J'ai écrit quelques applications simples en Android en utilisant Java.
Mais plus tard, j'ai trouvé ceci:

Il fournit des en-têtes et des bibliothèques qui vous permettent de créer des activités, de gérer les entrées utilisateur, d'utiliser des capteurs matériels, d'accéder aux ressources des applications, et plus encore, lors de la programmation en C ou C++. ( Source )

Quel est le lien avec cela:

Les applications Android sont écrites dans le langage de programmation Java. ( Source )

Les trois langues sont-elles possibles?
Désolé pour la question stupide.

32
Evgeni Reznik

L'article auquel vous liez contient de bonnes informations. Il renvoie également à http://developer.Android.com/sdk/ndk/overview.html qui dit:

Le NDK ne bénéficiera pas à la plupart des applications. En tant que développeur, vous devez équilibrer ses avantages et ses inconvénients; notamment, l'utilisation de code natif n'entraîne pas une augmentation automatique des performances, mais augmente toujours la complexité des applications. En général, vous ne devez utiliser du code natif que s'il est essentiel à votre application, et pas seulement parce que vous préférez programmer en C/C++.

Les bons candidats typiques pour le NDK sont les opérations autonomes et gourmandes en CPU qui n'allouent pas beaucoup de mémoire, comme le traitement du signal, la simulation physique, etc. Le simple recodage d'une méthode à exécuter en C n'entraîne généralement pas une augmentation importante des performances. Lorsque vous examinez si vous devez ou non développer en code natif, pensez à vos besoins et voyez si les API du framework Android fournissent les fonctionnalités dont vous avez besoin. Le NDK peut cependant être un moyen efficace pour réutiliser un grand corpus de code C/C++ existant.

33
Michael Levy

Android est Linux en dessous, vous pouvez donc exécuter n'importe quelle langue dessus. J'ai exécuté des scripts Perl sur un téléphone Android pour le plaisir. D'un point de vue pratique de développement d'applications, la mise en œuvre par Google de Java fonctionnant sur - Dalvik serait la route typique à prendre.

5
Rob Kielty

Java vous permet toujours d'appeler des composants "code natif". Cependant, vous voulez les éviter si possible car ils peuvent introduire des bogues subtils et des dépendances de plate-forme dans votre code.

Je ne crois pas que vous puissiez coder une application entière pour Android en C/C++ cependant - vous devez avoir un wrapper Java au moins).

4
Charlie Martin

C'est une bonne question, AFAIK, c ou c ++ entre en scène lorsque vous voulez vraiment programmer quelque chose de dalvik de base que d'utiliser Android API comme spécifié, vous interrogez, quelque chose comme les fonctionnalités ou le matériel liés aux capteurs.

Si vous souhaitez créer une application à l'aide de l'API, ce sera principalement en Java/XML.

3
kosa

La réécriture de l'une de ces "opérations autonomes et gourmandes en CPU qui n'allouent pas beaucoup de mémoire" en C peut améliorer les performances/la durée de vie de la batterie par un facteur de 17 selon cette enquête . Cet article constate que l'exécution de CCTOOLS Fortran est encore plus rapide. Les langues alternatives méritent donc d'être envisagées.

2
Chris