Pourquoi ne Android utiliser Java? [fermé]


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

Même Android prend en charge les applications de code natif, le principal outil de développement est Java. Mais pourquoi? Je veux dire, n'est-il pas trop lent d'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 des applications 2-5 fois plus rapides. Cela signifie que l'utilisation de Java sur du code natif est 2 fois plus lente.

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

Author: Tshepang, 2010-08-25

9 answers

Quelques points:

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

  2. Il est plus difficile de se filmer avec Java qu'avec du code C / C++ car il n'a pas d'arithmétique de pointeur

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

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

  5. Plusieurs téléphones mobiles utilisaient déjà Java ME, donc 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 le cas, vous devriez coder dans un langage de bas niveau

 92
Author: josefx, 2014-09-02 15:44:21

Au niveau du code octet, Android n'utilise pas Java. La source est Java, mais elle n'utilise pas de JVM.

 37
Author: David Thornley, 2010-08-24 21:01:23

, 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 importante. L'environnement Android permet aux utilisateurs d'exécuter des applications semi-fiables qui pourraient exploiter le téléphone de manière vraiment désagréable sans excellente sécurité. En exécutant toutes les applications dans une machine virtuelle, vous garantissez qu'aucune application ne peut exploiter le noyau du système d'exploitation à moins qu'il n'y ait une faille dans l'implémentation de la machine virtuelle. L'implémentation de la machine virtuelle, à son tour, est vraisemblablement petite et a une petite surface de sécurité bien définie.

Peut-être le plus important, lorsque les programmes sont compilés en code pour une machine virtuelle, ils n'ont pas besoin d'être recompilés pour un nouveau matériel. Le marché des puces téléphoniques est diversifié et en évolution rapide, c'est donc un gros problème.

En outre, l'utilisation de Java rend moins probable que les applications que les gens écrivent seront elles-mêmes exploitables. Pas de dépassement de tampon,d'erreurs avec des pointeurs, etc...

 16
Author: PeterAllenWebb, 2010-08-24 21:28:27

Le code natif n'est pas nécessairement plus rapide que le code Java. Où les données de votre profil montrent-elles que le code natif pourrait s'exécuter plus rapidement?

Pourquoi Java?

  • Android fonctionne sur de nombreuses plates-formes matérielles. Vous devrez compiler et optimiser votre code natif pour chacune de ces différentes plates-formes pour voir de réels avantages.

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

  • Java a un énorme support open source, avec de nombreuses bibliothèques et outils disponibles pour faciliter la vie des développeurs.

  • Java vous protège de nombreux problèmes inhérents au code natif, tels que les fuites de mémoire, la mauvaise utilisation du pointeur, etc.

  • Java leur permet de créer des applications sandbox et de créer un meilleur modèle de sécurité afin qu'une mauvaise application ne puisse pas supprimer l'ensemble de votre système d'exploitation.

 11
Author: Cheryl Simon, 2013-11-24 09:53:02

Java a un argument assez convaincant pour que Google l'utilise dans Android: il a une énorme base de développeurs. Tous ces développeurs sont (en quelque sorte) prêts à développer pour leur plate-forme mobile.

Gardez à l'esprit que, techniquement parlant, Android n'utilise pas de pure Java.

 4
Author: Pablo Santa Cruz, 2010-08-24 21:01:24

Tout d'Abord, selon Google, Android n'utilise pas Java. C'est pourquoi Oracle poursuit Google. Oracle affirme qu'Android enfreint certaines technologies Java, mais Google dit que c'est Dalvik.

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

Pouvez-vous sauvegarder votre conjecture de performance avec des benchmarks réels? La portée de vos présomptions ne semble pas justifiée compte tenu des informations générales inexactes que vous fournissez.

 4
Author: erickson, 2010-08-24 21:04:34

Comme évoqué ailleurs, le principal problème est que Android est conçu comme un système d'exploitation portable, pour fonctionner sur une grande variété de matériel. Il s'appuie également sur un framework et un langage familiers à de nombreux développeurs mobiles existants.

Enfin, je dirais que c'est un pari contre l'avenir-quels que soient les problèmes de performances existants, ils deviendront sans importance à mesure que le matériel s'améliorera-de même, en incitant les développeurs à coder contre une abstraction, Google peut extraire et changer le système d'exploitation sous-jacent beaucoup plus facilement, que si les développeurs codaient sur les API POSIX/Unix.

Pour la plupart des applications, la surcharge liée à l'utilisation d'un langage basé sur une machine virtuelle par rapport au langage natif n'est pas significative (le goulot d'étranglement pour les applications consommant des services Web, comme Twitter, est principalement le réseautage). Le Palm webOS le démontre également-et qui utilise JavaScript plutôt que Java comme langage principal.

Étant donné que presque toutes les machines virtuelles JIT compilent en code natif, la vitesse du code brut est souvent comparable à la vitesse native. Beaucoup de retards les langages de niveau supérieur sont moins liés à la surcharge de la machine virtuelle qu'à d'autres facteurs (exécution d'objet complexe, vérification de la "sécurité" de l'accès à la mémoire en vérifiant les limites, etc.).

Rappelez-vous également que quelle que soit la langue utilisée pour écrire une application, une grande partie du travail réel est effectuée dans des API de niveau inférieur. Le langage de niveau supérieur ne fait souvent qu'enchaîner les appels d'API.

Il y a, bien sûr, de nombreuses exceptions à cette règle-jeux, applications audio et graphiques qui poussent le limites du matériel téléphonique. Même sur iOS, les développeurs descendent souvent en C / C++ pour obtenir de la vitesse dans ces domaines.

 4
Author: JulesLt, 2010-08-25 09:43:07

Le nouveau JIT exécute les applications 2 à 5 fois plus rapidement que l'ancien dalvikVM (les deux JAVA). Donc, la comparaison n'est pas C sur JAVA, mais JIT sur dalvikVM.

 1
Author: keyboardsurfer, 2010-08-24 21:01:03

Tout d'abord, c'est à peu près la même chose que windows mobile ou l'iPhone, le.net framework a besoin de sa propre machine virtuelle ainsi que de cocoa.

Et même si les performances ne sont pas au mieux, car c'est une interprétation du code octet, android apporte toute la communauté java en tant que développeurs potentiels. Plus d'applications, plus de clients, etc.

Pour finir, aucune performance n'est pas si mauvaise, c'est pourquoi java est utilisé même sur des appareils plus petits (voir JavaMe).

 1
Author: Colin Hebert, 2010-08-24 21:05:30