Développement d'applications pour terminaux mobiles Plate-formes mobiles Jean-Rémy Falleri [email protected] ENSEIRB-MATMECA Département Télécommunication Historique 2000 2010 2000 ● Téléphones « rudimentaires » ● Connexion données très lente (GSM, GPRS) ● Téléphones complètement fermés ● Taux de pénétration du marché très forte 2010 ● Smartphones : téléphones avancés couplés à de nombreux capteurs (GPS, photo, ...) ● Connexion données rapide (Edge, 3G, 4G) ● Téléphones ouverts et programmables ● Evolution matérielle très rapide : tablettes, dual core, ... Web et mobiles Applications mobiles Evolution du marché Les OS ● BlackBerry (Rim) ● Android (Google) ● IOS (Apple) ● Windows Phone (Microsoft) ● Tizen (Samsung) Parts de marché des OS Android et IOS ● Deux acteurs principaux du marché ● IOS ● ● Propriétaire, ● Objective C ● Convergence logiciel matériel Android ● Libre ● Java / C / Linux ● Indépendant du matériel sous-jacent Android ● Développé par Google ● Numéro 1 des ventes depuis 2011 ● Google fournit le système d'exploitation ● Les constructeurs de téléphone l'adaptent à leur hardware ● Samsung, HTC, Sony, LG Les versions Historique Architecture Noyau Linux vs Android ● Utilise LibC à la place de stdlib ● Utilise le framebuffer à la place de X11 ● ● Implémente seulement une sous partie de POSIX Gestion mémoire et ordonnancement de processus optimisés Oracle JDK vs Dalvik ● ● ● Machine virtuelle basée registre Byte-code DEX optimisé (un seul fichier pour tout le programme, …) Programme final contenant le code et des ressources : APK ● Optimisations gestion mémoire ● Optimisations multi instances Android NDK vs JDK ● Le NDK est un framework de développement au dessus du systèmes et des librairies ● ● Code C, optimisation, composants bas niveau Le SDK est un framework de développement au dessus de la machine virtuelle Dalvik ● Code Java, rapide à écrire, composants haut niveau Outils de développement ● ● SDK Android ADT : Android Development Tools (plugin Eclipse) ● AVD : Android Virtual Device ● ADB : Android Debug Bridge Développement natif ● ● Avantage ● Meilleure intégration ● Permet de profiter des widgets natifs ● Performant Désavantages ● Il faut développer plusieurs fois l'application (Android, iOS, …) L'approche framework ● Remplace le développement natif ● On développe dans le cadre d'un framework ● ● ● L'application ensuite s'exporte sur plusieurs plateformes Plusieurs frameworks ● Cordova (JavaScript) ● Kivy (Python) ● ... L'approche la plus classique : application Web Applications Web mobiles ● ● Composants Web dispos sur toutes les plateformes Idéal pour les applications de type Create, Read, Update, Delete ● Api Rest en back-end ● Client web en front-end ● Programmées sur le modèle Single Page Application ● Le serveur renvoie des parties du DOM ● Requêtes Ajax pour récupérer les bouts de DOM ● Se comporte comme une appli native Stack SPA ● HTML/CSS pour la vue ● JavaScript pour le comportement