Pourquoi les applications Android sont-elles écrites en Java mais le système d’exploitation est écrit en C++ ?


Eliminons la première idée fausse :
Vous pouvez écrire vos applications en C++. Vous constaterez que la plupart des jeux à haute performance sont écrits en C++.
Maintenant, pour vraiment répondre à la question : Pourquoi les applications Android sont-elles écrites en Java ?
La même raison pour laquelle nous utilisons le framework .Net ou Java sur Windows par exemple.

Écrire une fois, exécuter partout est la théorie.
La bonne chose à propos de l'utilisation d'un framework tel que Java est que votre application s'exécute dans la machine virtuelle Java.
Lorsque vous construisez une application en utilisant Java, elle n'est pas compilée en un code natif qui s'exécute directement sur le processeur mais elle est compilée sous une forme binaire intermédiaire appelée JVM byte code qui est ensuite compilée par la JVM en code natif qui s'occupe d'à peu près tout comme la gestion de la mémoire, la collecte des ordures, les entrées/sorties de fichiers, etc. etc.
Pour autant que je sache, c'est ce qu'on appelle du code géré car tout est géré à l'intérieur de la JVM et en tant que développeur, vous devez juste vous inquiéter de la construction de votre application et pas de tous les autres trucs ennuyeux pour vous assurer que vous n'avez pas de problèmes de sécurité, de fuites de mémoire ou de déchets qui remplissent votre mémoire.


Comme je l'ai dit au début, vous pouvez construire votre application en C++, vous pouvez effectivement créer un C++ dans Android studio mais alors vous devez littéralement vous occuper de tout vous-même ce qui est un peu pénible mais vous obtenez la puissance brute de votre application fonctionnant nativement sur le processeur.

Le problème cependant est que vous devrez recompiler votre app pour chaque type de processeur alors qu'avec Java votre JVM s'occupe de la compilation JIT dans le code correct pour le processeur.

Alors heureusement pour nous, nous avons des frameworks comme Java ou le framework .Net sinon nous n'aurions eu que quelques apps disponibles et dont beaucoup auraient de sérieux problèmes.