Applicamons mobiles
Transcription
Applicamons mobiles
Applica'ons mobiles Par'e 1 Introduc'on JavaME Contexte : systèmes mobiles et embarqués • • • • • • • • • Téléphone mobile Assistant Personnel Livre électronique Appareil photo Console de jeu Terminal de paiement Cartes à puce GPS … Nombre de lignes mobiles (en millions) 70 60 50 40 30 20 10 0 Année 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 Source : ARCEP, 2008 Usages • • • • • • • • • • • • Téléphoner Envoyer des messages succincts : SMS Photographier Écouter de la musique Envoyer des messages avec texte, image, audio : MMS Enregistrer des vidéos Jouer Naviguer sur Internet Lire et rédiger des emails Regarder la télévision Servir de modem à un ordinateur … … ... Nouveaux usages -‐ Progrès matériels -‐ Kits de développement pour mobile -‐ Besoins spécifiques -‐ Imagina'on des développeurs Contexte d’u'lisa'on énorme ! Spécificités matérielles Encombrement et poids faibles : mobilité Autonomie Faible mémoire Affichage limité# $Clavier et pointage rudimentaire Ecran mul'touch Communica'on (bande passante)# 3G, Wifi, Bluetooth $Accéléromètre GPS … … … Conséquences logicielles sur les choix de développement Panorama des plateformes mobiles Plateforme Langages Posi0f Néga0f Windows Mobile .net -‐ C++ -‐ Performance (code na'f) -‐ Intégra'on -‐ OS … -‐ Standard fermé Symbian OS S60 C++ -‐ Performance (code na'f) Très peu portable CDC / CLDC / MIDP Java -‐ Standard ouvert -‐ Le plus grand parc de tel -‐ Non homogène -‐ Versions non compa'bles -‐ Librairies supplémentaires Androïd C++ -‐ Java -‐ Performance -‐ Open source -‐ SDK De + en + de terminaux (HTC G1, …) iPhone objec've C -‐ Performance -‐ Intégra'on -‐ SDK (apps) -‐ Homogène Trois terminaux : iPod Touch, iPhone et iPad Ou'ls de développement Plateforme Environnement de développement SDK Windows Mobile Visual Studio Windows Mobile SDK Symbian OS S60 Carbide C++ (basé sur Eclipse) Symbian SDK CDC / CLDC / MIDP Eclipse + SDK Sun Sun WTK hkp://msdn.microsom.com/windowsmobile hkp://developer.symbian.com/main/ index.jsp hkp://java.sun.com/javame/index.jsp Androïd Eclipse Androïd SDK iPhone Xcode iPhone SDK hkp://code.google.com/intl/fr/android/ download.html hkp://developer.apple.com/iphone Présenta'on de JavaME • Plateforme Java pour les pe'ts périphériques (mobiles et embarqués) • Périphériques cibles très vaste ! – Téléphones mobiles, Smartphones – PDA – TV, VCR, Lecteurs CD API définissant un sous-‐ensemble de J2SE Architecture en couche (configura'ons / profiles) Les configura'ons JavaME • Définissent les caractéris'ques de bases d’un environnement d’exécu'on – Classe de terminaux possédant des caractéris'ques et ressources similaires – Con'ent une machine virtuelle, et une API de base • CDC (Connected Device Configura'on) – Processeur 32bits ; > 2M RAM ; bande passante • CLDC (Connected Limited Device Configura'on) – Terminaux de ressources réduites, la majorité des téléphones actuels Les profiles JavaME • Définit une API par'culière à un type de machine, ou à une fonc'onnalité spécifique – Associé à une configura'on – Assure une « certaine » modularité à JavaME • Complément aux configura'ons – Profiles aux dessus de CLDC • MIDP (Mobile Informa'on Device Profile) • PDA Profile – Les profiles au dessus de CDC • Founda'on Profile • JDBC Profile Les profiles JavaME Le profile MIDP (Mobile Informa'on Device Profile) • Standard défini pour un ensemble de terminaux aux ressources et interfaces limitées • hkp://java.sun.com/products/midp – 128KB of non-‐vola'le memory – 32KB of vola'le memory for the run'me heap – 8KB of non-‐vola'le memory for peristent data – A screen of at least 96x54 pixels – Some capacity for input, either by keypad, keyboard, or touch screen – Two-‐way network connec'on, possibly intermikent MIDP 1.0 : limita'ons • Pas de support de virgule flokante • Pas de support audio (seulement les ‘beeps’) • Graphique – Pas de support de la transparence – GUI très limitée – Pas adapté (du tout) aux jeux • Réseau – Ne supporte que le protocole HTTP MIDP 2.0 : Nouveautés • Support mul'média (sous ensemble de MMAPI) • Package dédié aux jeux (sous ensemble de Game API) • Réseau : HTTP, HTTPS, sockets, port série • Sécurité • GUI améliorée Applica'on MIDP • Toute applica'on MIDP doit dériver de la classe MIDlet – Définie et contrôle le cycle de vie d’une applica'on – Se trouve dans le package : javax.microedi'on.midlet • Trois méthodes sont appelées pour prendre en charge le cycle de vie de la MIDlet – startApp() – pauseApp() – destroyApp() • Développement : – javac / preverify / packaging / déploiement Structure de l’API • Les composants graphiques -‐ javax.microedi'on.lcdui -‐ « Look and feel » minimal, pris en charge par la JVM Indépendant du téléphone MIDP 2.0 Game API • API dédiée aux jeux – Augmenta'on des performances – Réduc'on de code : prise en charge de la logique du jeu – Basés sur des éléments graphiques bas niveau ( Graphics, Image,Canvas) • Package javax.microedi'on.lcdui.game, 5 classes à connaître ! – GameCanvas : gère l’affichage du jeu, sa logique – Layer : couche graphique (transparence) – LayerManager : gère une série de layers – Sprite : gère les anima'ons – TiledLayer : U'le pour les maps MMAPI (JSR 135) • Permet l’enregistrement et la lecture de fichiers mul'medias – – – – Lecture de fichiers packagés avec la midlet (wave, midi, videos, …) Lecture de fichiers internes au mobile Lecture de fichiers accessible via le réseau (streaming) Prise de photos, … • Package javax.microedi'on.media, les classes principales – – – – Player Control Manager PlayerListener • Package javax.microedi'on.media.control – VolumControl – ToneControl – VideoControl J2ME/ MIDP : Le développement • Déploiement d’une midlet – Le .jad (fichier de descrip'on) est téléchargé, précisant • • • • • • L’URL de téléchargement du .jar La taille de l’applica'on Le nom du jeu La midlet de démarrage (qui étend MIDLet) La version Les resssouces, les protocoles u'lisés, … – Le .jar est téléchargé • Un seul .jar • Ne peut u'liser que les bibliothèque présentes dans le téléphone • Pas de partage de ressources entre MIDlets téléchargées – Demande, si l’applica'on a besoin d’accéder à des ressources (réseau) – L’applica'on se lance Java Mobile, les pièges • « Write Once, Run Everywhere » : A OUBLIER !!! – Les JVM sont souvent exo'ques – Les JSR sont souvent implémentées par'ellement – Le comportement de l’applica'on sur l’émulateur peut être différent sur le terminal Tester, tester, re-‐tester (sur tous les téléphones cibles) Conseils JavaME • Aken'on à la mémoire – Limiter le nombre de classes (pas plus de 10 !), les regrouper – Sor'r les constantes du code dans un fichier de conf (binaire) – Eviter les sta'c final – Bannir les string au maximum, elles apparaissent en clair dans les .class, donc augmentent leur taille. Conseils JavaME • Ménager le processeur – Regrouper les créa'ons d’objets (« new ») à l’ini'alisa'on de l’applica'on – Recycler les objets : • On créé au démarrage de l’applica'on un pool d’Objets, et on les cast • Travail à mémoire constante • Eviter au maximum le déclenchement du garbage collector : Un lancement du garbage collector peut freezer l’applica'on !! iPhone SDK • Objec've-‐C – – – – Syntaxe Ges'on mémoire (retain/release) Cocoa (NSString, NSNumber, NSMutableArray) Framework Founda'on • Xcode + Interface Builder – Outlets – Framework UIKit • Model-‐View-‐Controller – NSNo'fica'onCenter iPhone SDK • Fenêtres et vues – UIWindow, UIView – UINaviga'onController – UITabBarController • Entrées/Sor'es – UITextField, UILabel – Préférences – Photo/Vidéo • Géolocalisa'on, Services web • Mul'touch, Anima'on, QuartzCore iPhone SDK • Projets…