Android
28 septembre 2015

J'ai programmé Windows avec Delphi et j'ai aussi programmé des sites Web avec HTML, PHP et Javascript (jQuery en particulier) et j'ai soudain voulu programmer aussi mon téléphone Galaxy qui opère sous Android. Dans cette page, je présente Android en tant que système d'exploitation.

Tout comme Windows et OS X, Android est un système d'exploitation qui gère le matériel sur lequel il s'exécute (smartphone, tablette, ordinateur ou d'autres) ainsi que les logiciels qu'il permet d'exécuter.

À l'origine, « Android » était le nom d'une PME américaine, Android Incorporated, créée en 2003 puis rachetée par Google en 2005, qui avait la ferme intention de s'introduire sur le marché des produits mobiles. L'objectif d'Android, était de développer un système d'exploitation mobile plus intelligent, qui ne se contenterait pas uniquement de permettre d’envoyer des SMS et transmettre des appels, mais qui devait permettre à l'utilisateur d'interagir avec son environnement (notamment avec son emplacement géographique).

Architecture logicielle d'Android
[tiré de Android : Découvrez ce qui se cache sous ce nom]

En fait, Android, un logiciel libre, est une pile de composants logiciels en couches entourant un noyeau Linux (c'est une version conçue spécialement pour l'environnement mobile, avec une gestion avancée de la batterie et une gestion particulière de la mémoire) qui offre un niveau d'abstraction entre le logiciel et le matériel (pilotes pour périphériques ainsi que capacités de résautage). En fait, le noyau est l'élément du système d'exploitation qui permet de faire le pont entre le matériel et le logiciel.

Autour de ce noyeau, on retrouve un ensemble de bibliothèques de bas niveau comprenant un moteur de navigation Webkit, les bibliothèques nécessaires pour la programmation en C, la base de données SQLite et diverses bibliothèques permettant d'enregistrer et de reproduire des fichiers audio et vidéo. Les bases de Java y sont présentes: on y trouve un ensemble cohérant de composants logiciels structurels (framework) servant à créer les fondations de la programmation Java en plus de ceux qui facilitent la construction des interfaces, du graphisme et de l'accès aux bases de données. À ce même niveau, on retrouve aussi la machine virtuelle Dalvik qui permet à chaque applications Android de s'exécuter dans son propre processus avec sa propre instanciation de la machine virtuelle Dalvik.

La couche suivante intéresse tout particulièrement les programmeurs. Elle offre des services de haut niveau aux applications sous la forme de classes Java que les développeurs peuvent utiliser lors de la création d'applications.

La couche supérieure externe est celle des applications elle-mêmes.

Historique des versions

En Novembre 2007 a ​​été publié le premier kit de développement Android, et presque un an plus tard (août 2008) est née Android 0.9 SDK bêta. Un mois plus tard Google lance Android 1.0 (Release). Six mois plus tard (Mars 2009) est présentée la version 1.1 (Petit Four) d’Android avec quelques modifications esthétiques et de nouvelles possibilités, comment la recherche vocale et le développement d’application dans l’Android Market.

En mai 2009 Google lance Android 1.5 (Cupcake) qui inclut l’enregistrement vidéo, le Bluetooth stéréo, le clavier personnalisable. C’est avec cette version qu’a eu lieu le premier boom d’Android, au travers des ventes du HTC Dream, le HTC Hero, le Motorola Backflip et bien d’autres encore…

Quelques mois plus tard apparaît Android 1.6 (Donut, Septembre 2009), l’amélioration de la recherche vocale et l’indicateur d’utilisation de la batterie sont quelques nouveautés apportées sur cette version. Cette nouvelle version fait littéralement exploser les ventes.

En novembre 2009 Google lance le Motorola droid qui est le premier mobile à être équipé d’Android 2.0 (Eclair) avec des améliorations surtout portée sur la performance des composants électroniques,  puis dans la continuité arrive Android 2.1 au travers du Google Nexus One. Avec cette nouvelle version arrive de meilleures capacités graphiques.

Les versions les plus récentes sont Android 2.2 (Froyo), 2.3 (Gingebread) et 2,4 (Ice Cream Sandwich, sortie prévue fin 2011) sur lesquelles les fonctions sont très proches de l’utilisateur afin de répondre du mieux qu’il soit aux besoins du client, cela pour rendre le mobile indispensable à notre quotidien. Vous trouverez ci-dessous une vidéo d’introduction à Android 2.3 (intégration du NFC sur cette version). Par ailleurs il faut aussi signaler qu’Android 3.0 est exclusivement affilié aux tablettes électroniques pour répondre à des besoins plus ou moins différents

Depuis, Android a beaucoup évolué et le nombre de ses versions est impressionnant. Les voici:

Nom Version API Date
Android 1.0 1 23 septembre 2008
Petit Four 1.1 2 9 février 2009
Cupcake 1.5 3 30 avril 2009
Donut 1.6 4 15 septembre 2009
Éclair 2.0 5 26 octobre 2009
2.01 6 3 décembre 2009
2.1 7 12 janvier 2010
Froyo 2.2 8 20 mai 2010
Gingerbread 2.3 9 6 décembre 2010
2.3.3 10 9 février 2011
Honeycomb 3.0 11 02/2011
3.1 12 10 mai 2011
3.2 13 15 juillet 2011
Ice Cream Sandwich 4.01 14 19 octobre 2011
4.0.3 15 16 décembre 2011
Jelly Bean 4.1 16 9 juillet 2012
4.2 17 29 octobre 2012
4.3 18 24 juillet 2013
KitKat 4.4 19 3 septembre 2013
Lollipop 5.0   3 novembre 2014
Marshmallow     mai 2015

Programmation Java standard

La figure suivante est un schéma qui indique les étapes nécessaires à la compilation et à l'exécution d'un programme Java standard.

Étapes nécessaires à la programmation Java standard
[tiré de L'Architecture d'Android]

Le code est une suite d'instructions que l'on trouve dans un fichier .java qui, suite à la compilation, produit un fichier intermédiaire qui s'appelle un bytecode. C'est un fichier incompréhensible pour les humains mais il est compris, compilé et exécuté par la la machine virtuelle Java ou JVM (Java Virtual Machine).

C'est un des éléments les plus importants de la plate-forme Java. Elle assure l'indépendance du matériel et du système d'exploitation lors de l'exécution des applications Java. Une application Java ne s'exécute pas directement dans le système d'exploitation mais dans une machine virtuelle qui s'exécute dans le système d'exploitation et propose une couche d'abstraction entre l'application Java et ce système.

C'est un environnement d'exécution pour applications Java, c'est à dire un appareil informatique fictif qui exécute des programmes compilés sous forme de bytecode Java. Elle exécute les instructions données par le bytecode contenu dans la classe java en suivant le modèle de la pile : chaque niveau de pile contient alors les données propres à chaque opération.

Programmation Java Android

Le procédé est différend pour Android. Ici, la machine Java standard n'est pas disponible. Elle est remplacée par la machine virtuelle Dalvik (cette machine virtuelle est optimisée pour mieux gérer les ressources physiques limitées du système mobile). Elle permet par exemple de laisser moins d'empreinte mémoire (la quantité de mémoire allouée à une application pendant son exécution) ou d'utiliser moins de batterie qu'une machine virtuelle Java. La figure qui suit montre l'intervention de la machine virtuelle Dalvik dans la génération d'une application.

Intégration de la machine virtuelle Dalvik dans le processus d'exécution d'une application
[tiré de L'Architecture d'Android]

On voit bien que le code Java est converti en bytecode Java. Comme ce bytecode n'est pas prêt à son interprétation par le mobile, il faut procéder à une autre conversion à l'aide d'un programme qui s'appelle « dx » qui s'occupe de traduire les applications de bytecode Java en bytecode Dalvik, qui, lui, est compréhensible par la machine virtuelle d'Android. L'objectif de Dalvik est de fournir une machine virtuelle alternative, adaptée aux limitations des appareils mobiles. Les fichiers exécutables pour Dalvik (.dex) sont créés par consolidation des fichiers de bytecode Java. La taille du fichier .dex est typiquement la moitié de la taille des fichiers de bytecode Java desquels il est issu.


Pour toute question ou commentaire
E-Mail
page modifiée le 25 novembre 2015 à 13:12:36. []