Pourquoi Java a-t-il été choisi pour Android?


46

Pourquoi Java a-t-il été choisi pour Android au lieu de quelque chose comme C ++? J'ai entendu dire que Java utilise beaucoup de mémoire et je présume qu'une faible utilisation de la mémoire serait très importante sur les appareils mobiles. Existe-t-il un avantage réel à utiliser Java au lieu d'un langage tel que C ++ sur un appareil mobile?


29
Point mineur, Android n'a pas été lancé par Google. Google a acheté Android, y compris son utilisation de Java.
Ingénieur mondial

2
@ZJR: les principaux langages utilisés chez Google ont toujours été Java, Python et C ++. Java était toujours là même avant Android.
UncleZeiv

15
Android utilise Java Langue et pas la machine virtuelle Java, il y a une grande différence , il utilise même son propre format de code d'octets. Cette question est erronée dans son intention et n’est pas constructive de toute façon!

8
@JarrodRoberson Je pense que c'est constructif tant que ça ne se résout pas en une
guerre de flammes

5
Je rouvre à la suite d' une discussion méta sur des questions d'importance historique . Des questions sur l'histoire du développement de logiciels et des sujets pertinents sont abordées ici et apportent une valeur ajoutée. Compte tenu du libellé de cette question et de ses réponses, je pense que cette question convient parfaitement à cette communauté.
Thomas Owens

Réponses:


40

Cet article apporte un éclairage sur la situation. Le lien le plus pertinent au sein de cet article est présent . Vous avez donc une base d’installation massive avec de nombreux programmeurs qui connaissent la langue et qui l’enseigne largement dans les universités. C ++ a été supprimé du programme de mon école, Java est toujours là. Java a Java ME qui a une base d'installation massive sur d'autres téléphones portables. La Pantec Ease que j’ai dans ma poche en ce moment a une petite tasse de café dans le coin de l’écran. Quelqu'un veut-il deviner ce que c'est?

Cette réponse sur Stack Overflow couvre assez bien aussi.

Résumé de la réponse SO:

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

il est plus difficile de se tirer avec java qu'avec c, car c ++ car il n’a pas d’arithmétique de pointeur

il fonctionne dans un vm, donc pas besoin de le recompiler pour chaque téléphone et facile à sécuriser

grand nombre d'outils de développement pour Java (voir en premier)

plusieurs téléphones mobiles déjà utilisés java me, java était donc connu dans l'industrie

la différence de vitesse n’est pas un problème pour la plupart des applications, sinon vous devriez coder en assembleur


1
Ah, vous m'avez battu, alors je vais ajouter à votre liste. J'ai trouvé cette autre question SO qui ajoute une autre raison pour laquelle Java a été choisi (c'est un langage géré). - stackoverflow.com/questions/5605575/…
Shauna

1
Merci, cela a répondu à ma question. Ne pas avoir à recompiler pour chaque appareil sous Android différent semble en fait un énorme pro pour choisir Java. Je ne sais pas pourquoi je n'y ai pas pensé. Merci!
cgt

2
Compte tenu du nombre d'appareils Android sur lesquels le marché s'est fragmenté, il serait presque impossible de faire face autrement.
Ingénieur mondial

3
C'est correct, mais ils auraient pu choisir n'importe quelle langue. Ils auraient pu en écrire un nouveau même; ils ont construit la VM. Java présente toutefois l'avantage d'une spécification de machine virtuelle clairement définie.
Michael K

18

Je suppose que Google choisit Java pour la familiarité, si rien d'autre. De nombreux projets de Google font appel au moins à des concepts de schémas Java (GWT par exemple).

En outre, il s’agit d’une langue largement enseignée dans les écoles techniques (contrairement à Javascript (que Android soutient également avec zèle)). Java n’est certainement pas le meilleur langage pour un appareil mobile en termes de performances et de production, mais il est bien connu.

Rappelez-vous également qu'Android est arrivé un peu en retard à la fête. Forcer les développeurs à utiliser C ++, un langage de compilation de bas niveau, rendrait plus difficile la génération d’un facteur «wow», et si rien d’autre, Android avait besoin de nombres (d’applications) et de l’étincelle pour décoller.


3
J'aime votre idée sur le développement de l'application. Je n'y avais jamais pensé auparavant, mais c'est logique. +1
Russell

6
Je pense que dans ce cas, l’aversion pour le C ++ par rapport à Java a moins à voir avec le flashiness et le facteur wow, mais plus avec la possibilité pour les développeurs d’écrire plus rapidement et plus facilement des applications pour le marché. Au moment de la rédaction de la spécification, il était de notoriété publique que le succès de l'iPhone était corrélé au succès obtenu par Apple pour rendre le développement d'applications attractif pour les développeurs. C ++ aurait été un peu trop difficile à avaler pour la plupart des développeurs. La perte de performance minimale de Java en valait donc la peine.
maple_shaft

8
@maple_shaft: vraiment ?? il m'a toujours semblé que le succès de l'iPhone avait été obtenu malgré le développement d'applications UNattractive, et non à cause de son attrait!
Carson63000

3
@maple_shaft: Je suis d'accord avec Carson ici. Le développement iOS est un cauchemar. Il y a une raison pour laquelle personne en dehors de l'écosystème Apple n'utilise Objective-C, et c'est avant même que vous abordiez les termes carrément pervers d'Apple lorsqu'il est question d'essayer de déployer l'application que vous avez créée ...
Mason Wheeler

@ Jeffrey, Pourquoi dites-vous qu'Android prend en charge JavaScript?
Pacerier

9

Je ne sais pas pourquoi exactement Java a été choisi, mais c'était probablement pour plusieurs raisons.

  1. Pour capturer le grand groupe de développeurs qui connaissent et utilisent Java

  2. Remplissez le vide mobile en Java, où des technologies telles que J2ME où Java fait défaut.

Deuxièmement, il n'y a pas de machine virtuelle Java spécifiée pour Android. Au lieu de cela, tout le code Java est compilé pour être exécuté sur Dalvik , un ordinateur virtuel léger et optimisé spécialement conçu pour être exécuté dans des environnements mobiles. Il améliore prétendument la durée de vie de la batterie et optimise l'utilisation efficace des ressources.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.