Architecture
Multiplateforme mais performant
➔« Write once, execute everywhere » la philosophie du langage Java
-Partie haut niveau (en bleu) du Java
-Partie bas niveau (en vert et rouge) du code c/c++ compilé
-La Dalvik VM permet d’interpréter le code Java
Architecture partie Java
-La couche « Applications » : Android est utilisé dans un ensemble contenant déjà des applications natives comme un client de mail, des programmes pour envoyer des SMS, d’agenda, de navigateur web, de contacts personnels
-La couche « Application Framework » : cette couche permet au programmeur de construire de nouvelles applications. Cette couche fournit la gestion :
*des Views (= IHM)
*des ContentProviders = l’accessibillité aux données des autres applications (ex. : les contacts) et donc les partages de données
*des ressources = les fichiers non code comme les images, les écrans (Resource Manager)
*des Notifications (affichage d’alerte dans la barre de titre)
*des Activitys = l’enchaînement des écrans
Architecture partie compilée
-La couche « Libraries » (bibliothèques) = couche logicielle basse
pour utiliser :
*les formats multimédia : images, audio et vidéo
*les dessins 2D et 3D, bitmap et vectoriels
*une base de données SQL (SQLite)
*l’environnement d’exécution (Android Runtime). Toute application est exécutée dans son propre processus, dans sa propre Dalvik virtual machine
*le noyau Linux sur lequel la Dalvik virtual machine s’appuie pour gérer le multithreading, la mémoire. Le noyau Linux apporte les services de sécurité, la gestion des processus, etc.
Dalvik Virtual Machine (DVM)
-Est la machine virtuelle Java pour les applications Android
-Conçue pour exécuter du code Java pour des systèmes ayant des contraintes de place mémoire et rapidité d’exécution
-Exécute du code .dex (Dalvik executable) = des .class adaptées à l’environnement Android
-Écrit par Dan Bornstein d’où le nom (= village islandais dont sont originaires certains de ses ancêtres)
-A été choisi par Google, car une machine Android peut lancer plusieurs instances de la DVM efficacement (comme en Java)
-Référence : http://en.wikipedia.org/wiki/Dalvik_virtual_machine
-Le code de la DVM est open source (Apache License 2.0) :
http://code.google.com/p/dalvik/
-Machine à registre (register based) vs Java, machine à pile (stack based)
-JIT (Just in time compiler) introduit avec Android 2.2
-Performances controversées (selon Oracle, 3x moins par rapport à HotSpot). Facteur 100 avec une application native
-Un remplacement prévu. ART qui précompile le byte-code à l’installation.
➔Inconvénient, des app plus volumineuses
➔Un gain de performance non encore prouvé
-Android Asset Packaging Tool (AAPT) convertit les JAR en dex (dexer)..
Apprendre la programmation sur système Android (1,05 MO) (Cours PDF)