Quelques explications sur le fonctionnement d’Android :
Si Google a choisi le Java, c’est pour que les applications puissent être exécutées indépendamment de la plateforme !
La réalité est un peu différente car en fait Google aurait pu choisir n’importe quel autre langage de programmation pour être indépendants de la plateforme (y compris le C) vu ce qu’Android fait du code Java … Ce qui permet à du code d’être exécuté de façon indépendante de la plateforme, c’est l’utilisation d’une machine virtuelle.
Justement, Java utilise une machine virtuelle, donc on peut bien dire que Google utilise le Java pour être indépendant de l’architecture machine, non ?
Non … Non car Google n’utilise pas la machine virtuelle Java … Google a créé pour Android sa propre machine virtuelle, la Dalvik Virtual Machine.
En temps normal, quand on code en Java, le code source est transformé en bytecode Java. Ce n’est pas ce qu’il se passe quand vous développez une application pour Android.
Oui votre code source est compilé en bytecode, mais pas en bytecode Java. Il s’agit d’un bytecode propre à Google. Ensuite, ce bytecode est exécuté par la Dalvik Virtual Machine, une machine virtuelle optimisée pour les plateformes avec une faible puissance. Un outil – dx – contenu dans le SDK d’Android transforme donc les classes java standard en classe spécial .dex.
Tout cela signifie que l’on aurait pu coder en C ou du .Net, par exemple, du moment que ce langage aurait été compilé sous la forme de bytecode.
Mais alors pourquoi utiliser du Java ?
Utiliser du Java pour le framework Android a un intérêt extrêmement important : celui d’attirer toute la communauté des développeurs d’applications pour téléphones mobiles, et surtout leur expérience en la matière. En effet, ces derniers travaillent déjà en Java, sont habitués à ce langage, à cette syntaxe, à ce mode de pensée (car le langage parlé ou codé influe sur votre façon de penser), etc. Autant ne pas les brusquer et s’attirer leur foudre, autant tout faire pour leur plaire.
Sur la licence enfin :
Bien que Java soit libre, le terme “java” reste soumis à de nombreuses conditions qu’impose le comité qui pilote son développement (respect du standard java principalement), de plus “java” est une Marque commerciale (Trademark). Google n’a donc pas intérêt à se répandre trop sur le terme. Nous détaillerons les choix de Google en termes de licence et ses rapports avec Sun dans un prochain article.