Mise à jour de (par souci de clarté et pour réduire les ambiguïtés) :
Je vais commencer à bricoler des applications Android. J'avais prévu de les écrire en C++ en utilisant le NDK (puisque j'ai plus d'expérience en C++ et que je le préfère à Java) mais je suis tombé sur ce qui suit sur le site de l Page Android NDK :
vous ne devez utiliser le NDK que s'il est essentiel à votre application. application- jamais parce que vous préférez simplement programmer en C/C++.
J'avais l'impression que vous deviez utiliser la langue que vous préférez, pour autant qu'elle soit adaptée au poste. Quelqu'un pourrait-il expliquer pourquoi il est si fortement déconseillé d'utiliser C/C++ pour le développement Android ?
Original :
Je vais commencer à bricoler des applications mobiles, en particulier Android qui est le système d'exploitation de mon téléphone actuel, et je me demandais si écrire l'application en C++ (ou au moins le noyau, puis l'envelopper en Java) était une option acceptable.
Je suis étudiant en informatique et j'ai suivi trois cours de C++ (intro, intermédiaire, OOP, et je suivrai un cours de STL au printemps) et un seul cours de Java (intermédiaire). De ce fait, je suis plus à l'aise avec le C++ et je le préfère à Java. Je suis tombé sur le texte suivant sur le site Page Android NDK :
L'utilisation de code natif sur Android n'entraîne généralement pas d'amélioration notable des performances. amélioration sensible des performances, mais elle augmente toujours la complexité de votre application. En général, vous ne devriez utiliser le NDK que s'il est essentiel pour votre application. application- jamais parce que vous préférez simplement programmer en C/C++.
- J'avais l'impression que vous deviez utiliser la langue qui convient à l'emploi ainsi qu'une langue que vous connaissez bien.
- Je peux vouloir porter l'application sur une autre plateforme mobile, telle que comme iOS, qui supporte C++ mais pas java.
- Alors que Java est un langage de haut niveau et devrait donc permettre un développement plus rapide, j'ai l'impression que le développement serait plus lent car je devrais réapprendre presque tout (puisque je n'ai suivi qu'un cours sur le langage) le langage)
Tout conseil serait très apprécié.
ps : beaucoup de réponses sur ce sujet datent d'il y a plusieurs années et il y a très peu de réponses qui mentionnent que le NDK permet le développement d'applications natives complètes sur Android 2.3 et plus récent.
1 votes
"Acceptable" est un mot étrange - c'est certainement possible via le NDK ...
1 votes
Vous feriez probablement mieux de prendre le taureau par les cornes et d'apprendre Java. La boîte à outils Android est vraiment destinée à être utilisée à partir de Java, et le temps que vous économiseriez en connaissant déjà le C++ serait dépensé à essayer de comprendre comment faire fonctionner tous les trucs Android à partir du C++. Considérez cela comme une opportunité d'apprentissage :)
0 votes
Personnellement, je mordrais la balle comme Jeremy l'a dit et j'apprendrais simplement ce que vous devez faire avec Java. En fait, ça ne devrait pas être que Il est important que vous l'appreniez relativement vite.
0 votes
Pour ce qui est de votre premier point, le C++ ne convient pas au travail (développement pour Android) aussi bien que le Java, indépendamment de la familiarité. Pour votre deuxième point, bien qu'Android soit Linux, il y a une énorme différence entre Android et les applications de bureau ; les cycles de vie sont différents et vous devez traiter des activités au lieu de processus, ce qui est un facteur important. complètement différent mode de développement par rapport au développement normal d'un ordinateur de bureau. Pour votre troisième point, apprendre le SDK Android en C++ vous prendra beaucoup plus de temps que si vous l'apprenez d'abord en Java (après avoir appris Java), puis passez en C++.
0 votes
@ildjarn a mis à jour le post original pour se concentrer sur la raison pour laquelle il est conseillé de ne pas utiliser C ou C++ pour la seule raison que vous le préférez.
2 votes
Trop de gens utilisent le terme "C/C++" comme s'il n'existait qu'un seul langage de ce nom. J'espère que vous êtes conscient que le C et le C++ sont deux langages différents (bien qu'étroitement liés) - et il semble que ce soit le C++, et non le C, qui fasse l'objet de votre question.
0 votes
@KeithThompson Oui, je suis conscient que le C et le C++ sont deux langages distincts ; j'ai utilisé ce terme parce que le NDK supporte à la fois le C et le C++. Je remarque également que les gens utilisent le terme "C/C++" comme s'il s'agissait d'un seul langage et je trouve cela étrange.
0 votes
Pourquoi a-t-elle été fermée ? La réponse de Devunwired était remplie de nombreux faits qui ont permis de mieux comprendre le raisonnement. Le vote initial de fermeture était dû au message original (que j'ai laissé sous mon message mis à jour).