119 votes

Pourquoi Android utilise Java ?

OK, cela devrait vraiment être demandé à quelqu'un de chez Google, mais je veux juste les opinions d'autres.

Même Android prend en charge les applications de code, le principal outil de développement Java. Mais pourquoi? Je veux dire, n'est-il pas trop lent pour interpréter le code sur un appareil mobile? Lors de l'introduction de Froyo, Google a déclaré que le nouveau compilateur JIT peut atteindre 2 à 5 fois plus rapides des applications. Cela signifie, que l'utilisation de Java sur le code natif est de 2 x fois plus lent.

Oui, je sais que l'utilisation de code managé des applications est plus sûr en termes de stabilité du système, depuis la machine virtuelle a un meilleur contrôle de programme, mais encore, cette chute des performances est énorme, et je ne vois pas pourquoi l'utiliser.

103voto

josefx Points 8417

Certains points:

  1. Java est un langage connu, les développeurs le savent et ne pas avoir à l'apprendre

  2. il est plus difficile de tirer vous-même avec Java qu'en C/C++ code car il n'a pas l'arithmétique des pointeurs

  3. il s'exécute dans une machine virtuelle, donc pas besoin de le recompiler pour chaque téléphone là-bas et facile à obtenir

  4. grand nombre d'outils de développement pour Java (voir point 1)

  5. plusieurs téléphones mobiles déjà utilisé Java ME, de sorte que Java était connu dans l'industrie

  6. la différence de vitesse n'est pas un problème pour la plupart des applications; si c'était vous devriez code en langage de bas niveau

41voto

David Thornley Points 39051

Sur le plan de byte-code, Android n’utilise pas Java. La source est de Java, mais il n’utilise pas une JVM.

23voto

PeterAllenWebb Points 4731

L'amélioration de la stabilité du système est très important sur un appareil comme un téléphone cellulaire.

La sécurité est encore plus important. L'environnement Android permet aux utilisateurs d'exécuter semi-applications de confiance qui pourrait exploiter le téléphone vraiment désagréable sans une excellente sécurité. Par l'exécution de toutes les applications dans une machine virtuelle, vous garantissez qu'aucune application peut exploiter le noyau de système d'exploitation, sauf si il y a une faille dans la machine virtuelle mise en œuvre. La machine virtuelle de mise en œuvre, à son tour, est sans doute la petite et possède un petit bien de sécurité définie par la surface.

Peut-être le plus important, lorsque les programmes sont compilés en code pour une machine virtuelle, ils n'ont pas à être recompilé pour le nouveau matériel. Le marché des puces de téléphone est diversifié et en constante évolution, de sorte que c'est une grosse affaire.

Aussi, à l'aide de Java, il est moins probable que les applications de gens à écrire sera exploitable eux-mêmes. Pas de tampon dépassements, des erreurs avec les pointeurs, etc...

14voto

Cheryl Simon Points 25259

Code natif n'est pas forcément plus rapide que du code Java. Où est votre profil de données montrant que le code natif pourrait courir plus vite?

Pourquoi Java?

  • Android fonctionne sur de nombreuses plates-formes matérielles. Vous auriez besoin de compiler et d'optimiser votre code natif pour chacun de ces différentes plates-formes pour voir de véritables avantages.

  • Il existe un grand nombre de développeurs déjà compétent en Java.

  • Java a un énorme open source de soutien, avec de nombreuses bibliothèques et les outils disponibles pour rendre la vie des développeurs plus facile.

  • Java vous protège contre de nombreux problèmes inhérents à du code natif, comme des fuites de mémoire, la mauvaise utilisation du pointeur, etc.

  • Java permet de créer un bac à sable applications, et de créer un meilleur modèle de sécurité ainsi que d'une mauvaise Application peut pas prendre vers le bas l'ensemble de votre système d'exploitation.

7voto

erickson Points 127945

Tout d’abord, selon Google, Android n’utilise pas Java. C’est pourquoi Oracle poursuit Google. Oracle affirme qu’Android empiète sur des technologies Java, mais Google affirme qu’il est Dalvik.

Deuxièmement, je n’ai pas vu un interpréteur de code octet Java depuis 1995.

Vous pouvez sauvegarder votre conjecture de performance avec quelques points de repère réels ? La portée de vos présomptions ne paraît justifié compte tenu de l’information inexacte que vous fournissez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X