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…