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 Windows Mobile.net - C++ Symbian OS S60 C++ CDC / CLDC / MIDP Java Androïd C++ - Java iphone objec've C Posi0f - Performance (code na'f) - Intégra'on - Performance (code na'f) - Standard ouvert - Le plus grand parc de tel - Performance - Open source - SDK - Performance - Intégra'on - SDK (apps) - Homogène Néga0f - OS - Standard fermé Très peu portable - Non homogène - Versions non compa'bles - Librairies supplémentaires De + en + de terminaux (HTC G1, ) 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 hkp://msdn.microsom.com/windowsmobile Symbian OS S60 Carbide C++ (basé sur Eclipse) CDC / CLDC / MIDP Eclipse + SDK Sun Sun WTK Symbian SDK hkp://developer.symbian.com/main/ index.jsp hkp://java.sun.com/javame/index.jsp Androïd Eclipse Androïd SDK hkp://code.google.com/intl/fr/android/ download.html iphone Xcode iphone SDK 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
Les composants graphiques - javax.microedi'on.lcdui Structure de l API - «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
Projets iphone SDK