Étant donné que les applications Android fonctionnent sur une JVM (Dalvik VM), qui est en fait un processeur virtuel, et que chaque instruction virtuelle doit être mise en correspondance avec l'instruction native du chipset sous-jacent, cette mise en correspondance entraîne-t-elle une augmentation de la consommation d'énergie en raison de la surcharge de cette mise en correspondance ?
Cette question peut être étendue à Java et être formulée comme suit : "les applications Java consomment-elles plus d'énergie ?". Est-ce la raison pour laquelle les téléphones Android ont une durée de vie de la batterie si épouvantable par rapport aux autres plateformes/téléphones ?
Editar : Sur la base des réponses, j'ai clarifié quelques points car j'avais parlé par erreur de JVM et de Dalvik de manière interchangeable. Dans ce passage, je parle de Java uniquement pour demander s'il consomme plus d'énergie et si oui, est-ce que cela s'applique conceptuellement à Android également et est-ce que cela entraîne une diminution de l'autonomie de la batterie.
Contexte : cité de Wikipedia :
- Le bytecode Java est analogue au langage d'assemblage pour le code C.
- Du point de vue d'un compilateur, la machine virtuelle Java n'est qu'un autre processeur doté d'un jeu d'instructions, le bytecode Java, pour lequel du code peut être généré.
- La JVM a une architecture en pile. Dalvik est une machine virtuelle de processus qui n'est pas le même type de virtualisation que JVM et possède une architecture de registre.
Étant donné que le langage de programmation Java est compilé en bytecode (langage assembleur) et qu'il fonctionne sur un processeur virtuel, il permet une véritable portabilité du code logiciel. De plus, étant donné qu'il existe une JVM pour Linux et que Linux a été porté sur du matériel ouvert, cette combinaison permet une véritable portabilité des applications sur l'ensemble de la pile.
Puissance : La question se résume essentiellement à ceci : pour le même ensemble de fonctionnalités de votre code logiciel ou application, quel pourcentage des cycles d'horloge de votre CPU est attribué à l'environnement d'exécution. Il s'agit de l'environnement de compilation Just-In-Time des JVM modernes où si le bytecode est compilé à l'instruction native du chipset sous-jacent, alors l'environnement d'exécution ne devrait être actif que pendant la compilation JIT. Ainsi, combien de cycles d'horloge supplémentaires du CPU sont utilisés pour avoir l'environnement d'exécution qui est censé entraîner une surconsommation d'énergie. Je ne m'intéresse qu'à l'aspect de la consommation d'énergie, et non aux performances relatives par rapport aux langages construits et typés statiquement, et je comprends les avantages de Java. Sous-questions qui pourraient être liées :
- Le moteur d'exécution Java utilise-t-il la libc pour ses fonctionnalités ?
- L'un de ces points relatifs à la consommation d'énergie s'applique-t-il à la VM Dalvik et à Android ?
- Au lieu de généraliser la mauvaise consommation de batterie d'Android sans parler de l'écran et des puces sans fil, parlons du fait que l'iPhone 5 a une batterie de 1440 mAH, ce qui est minuscule comparé aux téléphones Nexus modernes. Toute cette réflexion (Java, processeur virtuel, mappage des instructions, Android) est née parce qu'un ami fidèle à l'iPhone a affirmé que cela pouvait être la raison probable pour laquelle son iPhone avait une meilleure autonomie que mon (génial) Nexus.
En tout cas, merci pour les réponses ci-dessous.