Cours sur J2ME. Net Innovations



Documents pareils
Machine virtuelle Java pour Palm TX

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Manuel d installation de l application Dimona New via SMS

La technologie Java Card TM

SugarCubes. Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués. Paris, le 9 janvier, 2009

Encadré par : Michel SIMATIC

as Architecture des Systèmes d Information

Environnements de développement (intégrés)

Vulgarisation Java EE Java EE, c est quoi?

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Programmer en JAVA. par Tama

EA D S INNOVA TION W ORKS. Mobilité et sécurité. Nicolas RUFF nicolas.ruff [à] eads.net

Programmation d'applications sur PDA

Plate formes mobiles. Utilisation. Contexte 9/29/2010 IFC 2. Deux utilisations assez distinctes :

Java pour le Web. Cours Java - F. Michel

LES OUTILS DE LA MOBILITE

Plan du cours. Historique du langage Nouveautés de Java 7

La carte à puce. Jean-Philippe Babau

Déploiement d applications Java ME

5.5 Utiliser le WiFi depuis son domicile

Traitement de données

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

J2ME. Développement d applications Java pour terminaux mobiles - 1 -

Point sur les solutions de développement d apps pour les périphériques mobiles

Bases Java - Eclipse / Netbeans

Portage et développement de jeux Java sur téléphones mobiles. Licence Professionnelle SIL 25 juin 2007

Java - la plateforme

Java ME : une présentation. Jean-Marc Farinone

MMSCam. Travail de diplôme Pilotage à distance d un téléphone MMS. Département d électricité et d informatique. Auteur : Jeanmonod David

Le Haut Débit en mobilité. Salon des Technologies de l information et de la communication CWTC - Baie Mahault le 28 nov 2008

Projet de Veille Technologique

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

Livre Blanc WebSphere Transcoding Publisher

LOGO Smartphones, tablettes, et autres gadgets quel impact sur notre métier d ASR

Android. Présentation d Android. Florent Garin

COMMUNITAKE TECHNOLOGIES EXIGENCES TECHNIQUES, DÉPLOIEMENT

TP1 : Initiation à Java et Eclipse

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Vodafone Mobile Connect

Mobile OGSI.NET: Grid Computing on Mobile Devices

LA CARTE D IDENTITE ELECTRONIQUE (eid)

Béatrice Bertrand CDDP de l Eure. Béatrice Bertrand CDDP de l'eure

Java Licence Professionnelle CISII,

Didier Perrot Olivier Perroquin In-Webo Technologies

Éléments de programmation et introduction à Java

Fiche technique rue de Londres Paris Tél. : Mail : contact@omnikles.com

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

DRT TISI. Mémoire. Informatique Mobile d'entreprise. Synchronisation d informations appliquées au dossier médical embarqué

Le Programme SYGADE SYGADE 5.2. Besoins en équipement, logiciels et formation. UNCTAD/GID/DMFAS/Misc.6/Rev.7

Sécurité dans les smartphones

INITIATION AU LANGAGE JAVA

Compte Rendu d intégration d application

Initiation à JAVA et à la programmation objet.

KX GPRS SERIAL ETHERNET MODEM Le modem GPRS/EDGE «Machine to Machine»

Sessions en ligne - QuestionPoint

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Perspectives pour l entreprise. Desktop Cloud. JC Devos IBM IT Architect jdevos@fr.ibm.com IBM Corporation

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Openmoko, free your phone!

Annexe : La Programmation Informatique

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

WINDEV MOBILE. ios SMARTPHONE SUPPORT: IOS, ANDROID, WINDOWS PHONE 8.

WINDOWS Remote Desktop & Application publishing facile!

Cours 1: Java et les objets

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée Virtual Server de Microsoft

Chapitre 3 : Les technologies de la communication. I- Les TIC de la PME

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Leçon 1 : Les principaux composants d un ordinateur

Procédures de qualification Télématicienne CFC Télématicien CFC

Mobile Gaming Services Services pour les jeux multijoueurs sur mobiles

Vérifier la qualité de vos applications logicielle de manière continue

Bluetooth technologie V 1.2 Class II une porté de 10 m A2DP (haute qualité de transmission musical ) DSP pour l élimination des échos Autonomie d

Android 4 Les fondamentaux du développement d'applications Java

Projet de développement

la solution vidéo numérique qui offre une surveillance simple et puissante t: +44 (0) e: w:

Auto-évaluation Programmation en Java

domovea Portier tebis

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

COLLEGE ADRIEN CERNEAU

Services Réseaux - Couche Application. TODARO Cédric

Routeur Gigabit WiFi AC 1200 Dual Band

Guide pratique de vos solutions mobiles à l international. Téléphonez et restez joignable à l étranger GUIDE ROAMING

Programmation Orientée Objet

Mobile VPN Access (MVA)

Fiche produit. Important: Disponible en mode SaaS et en mode dédié

2X ThinClientServer Guide d utilisation

Applications distribuées: le retour du client "riche"

F CFA F CFA F CFA +200 Mo 1000 F de crédit F CFA F CFA. Airtel, 1 er réseau 3G/4G au Gabon.

Rapport de certification

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Programmation Web. Madalina Croitoru IUT Montpellier

JOnAS 5. Serveur d application d

Administration de systèmes

! "# "! # $% & '( ) '* '

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Chapitre 1: Introduction générale

Web Tier : déploiement de servlets

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Rootkit pour Windows Mobile 6

Concept Compumatica Secure Mobile

Transcription:

Cours sur J2ME Net Innovations Avril 2006

SOMMAIRE Présentation générale du marché Présentation des contraintes de développement L API J2ME

Préambule 2001 Bruno Delb crée Net Innovations 2001 Conviction : future adoption de J2ME 2002 Auteur du premier livre francophone sur J2ME : J2ME, applications Java pour terminaux mobiles 2001-2005 Développement d applications "of proof of concept, de démonstrateurs; conférences, évangéliste J2ME 2002-2005 Coopération avec l ETSI pour organiser les PlugTests J2ME Evénements de test d interopérabilité Pour identifier les problèmes, notre solution actuelle résolue de nombreux problèmes identifiés

PARTIE 1 Présentation générale du marché

Rappel historique 1990 Java est né : technologie pour systèmes embarqués 1995 JDK 1.0 (Java pour le Web) : applets, servlets 1999 Subdivision en J2EE, J2SE, J2ME 2000/2001 Premiers mobiles MIDP 1 2002 (Q4) Premiers mobiles MIDP 2 2004 (avril) 250 millions de mobiles Java 2005 (juin) 700 millions de mobiles Java 2006 Changement de nom de J2ME en JavaME

Eléments clés du marché Le positionnement de J2ME par rapport à Java Principales technologies : Navigation : WAP, imode Applicatives : J2ME (MIDP), Symbian C++, DoJa, InFusio, MS, Brew La seule présente sur > 70 % des téléphones en France : J2ME

Eléments clés du marché Réseaux mobiles GSM (Global System for Mobile Communications) Largement répandu en Europe, en Asie et en Australie Utilisé à 3 fréquences différentes : GSM900 et GSM1800 en Europe, Asie et Australie, GSM1900 en Amérique du Nord et dans d autres parties du monde GPRS (General Packet Radio System) Génération suivant le GSM EDGE (Enhanced Data GSM Environment) Version plus rapide du GSM UMTS (Universal Mobile Telecommunications Service) Technologie sans il de 3 ème génération

Eléments clés du marché Réseaux mobiles CDMA (Code-Division Multiple Access) Largement utilisé en Amérique du Nord 3 standards : CDMAOne (IS-95) : Technologie sans fil de 2 ème génération De 14.4Kbps à 115K bps CDMA2000 (IS-136) Technologie sans fil de 3 ème génération De 144Kbps à 2Mbps Utilise les fréquences de 800 Mhz à 1,9 Ghz

Eléments clés du marché Réseaux mobiles iden (Integrated Dispatch Enhanced Network) Développé par Motorola Nextel est un des plus grand opérateurs supportant iden PDC (Personal Digital Cellular) Standard Japonais pour les communications sans fil

Le marché Données sur le marché : Nombre de mobiles en 2003 : 470 millions d unités / 59 milliards de $ Jeux mobiles : 2003 = 400 millions de $, 2007 = 6 à 8 milliards de $ Déclencheurs du marché : Qualité des produits (c est un marché de masse) Efficacité de la distribution (opérateurs mobiles) Effort de portage réduit (les applications doivent être adaptées à chaque mobile)

Le marché Modèle économique : Paiement à l acte de téléchargement Paiement à la mise à jour / évolution Paiement par upload de meilleur score (jeux) Paiement à la période d utilisation Paiement à la requête / à l événement

PARTIE 2 Présentation des contraintes de développement

Définition de J2ME Le positionnement de J2ME par rapport à Java J2EE Java 2 Enterprise Edition Destiné aux serveurs lourds J2SE Java 2 Standard Edition Destiné aux terminaux de bureau et aux postes de travail J2ME Java 2 Micro Edition Destiné aux terminaux à mémoire réduite et aux appareils Internet

Définition de J2ME Serveur Station de travail PDA Pager Communicator NC Set-top box, net TV POS PC, laptop Screenphone Smartphone Téléphone cellulaire Profile Profile Profile Profile J2EE (Java 2 Enterprise Edition) J2SE (Java 2 Standard Edition) TV Profile Screen Phone Profile Personal Profile Car Profile PDA Profile Java 2 Micro Edition MID Profile Carte Smart Card Profile Java Language HotSpot JVM KVM Card VM

Définition de J2ME Pagers La cible de J2ME Téléphones cellulaires PDA (notamment le Palm Pilot) Téléphones avec écran Internet Communicateurs (téléphone / PDA) Boîtiers Terminaux de point de vente Electronique du grand public

Définition de J2ME Java = langage interprété incluant un compilateur en byte-code A l origine prévu pour des systèmes embarqués (Oak) Adoption par le Web avec Servlets / JSP pour les serveurs et Applets / applications Java pour les postes de travail Nouveau : J2ME = Java pour les terminaux mobiles (retour aux sources)

Concepts de base Mémoire limitée De nombreuses constraintes Minimiser la mémoire utilisée Elimiter l instantiation d objets dès que possible Marquer comme disponible toutes les grandes allocations de mémoire Puissance de calcul limitée Stockage limité Autres alternatives : stockage dans le fichier jar, lecture depuis le réseau Bande passante limitée Différents types de connexion (de GSM à UMTS) La connexion peut être intermittente Taille d écran limitée Mécanismes possibles : zoom, barres de défilement

Concepts de base Midlet Application écrite pour MIDP i-appli Aussi appelé Java pour i-mode Environnement Java basé sur CLDC Développé avant la fin de la spécification MIDP Incompatible avec MIDP Utilisé dans les mobiles i-mode

Concepts de base Couches : Profiles Configurations Machines virtuelles Système d exploitation de hôte

Concepts de base Les configurations Configuration = spécifications pour un ensemble de périphériques ayant des caractéristiques similaires J2ME a deux types de terminaux ciblés : Les terminaux qui sont enfichées dans le mur : téléphones avec écran Internet, boîtiers, appareils mis en réseau (CDC) Les terminaux que vous tenez dans votre main : téléphones cellulaires, pagers, PDAs (CLDC)

Concepts de base Les limites de la configuration : Délimitation entre les configurations floue Limites en général définies par la quantité de mémoire, la bande passante, la connectivité, la consommation en batterie / puissance et l interface utilisateur

Concepts de base Les machines virtuelles KVM (Kilo Virtual Machine) Implémentation runtime extrêmement légère de la machine virtuelle Java pouvant être utilisée dans les terminaux avec peu de mémoire. Le K signifie Kilobyte, indiquant que cette machine virtuelle fonctionne avec un total de mémoire de quelque 100 Ko.

Concepts de base Les machines virtuelles CVM (Convergence Virtual Machine) Machine virtuelle Java 2 conçue pour les terminaux ayant besoin de l ensemble des fonctionnalités de la JVM mais avec des capacités plus réduites. Les terminaux utilisant CVM sont généralement des terminaux compacts et connectés, orientés consommateur.

Concepts de base CLDC Les configurations Consiste en la machine virtuelle K (KVM) et un ensemble de bibliothèques de classes noyau appropriées à l utilisation dans un profil de l industrie. Les terminaux concernés sont dotés d interfaces utilisateur simplifiées, d au moins 128 Ko de mémoire et de connexions réseau intermittentes à faible bande passante. Deux versions : CLDC 1.0 (JSR 30) & CLDC 1.1 (JSR 139) avec notamment l ajout de la virgule flottante

Concepts de base CDC (JSR 36) Basé sur la spécification de machine virtuelle classique, qui définit un environnement runtime complet. Destinée aux terminaux plus gros et qui peuvent se connecter à Internet ou à d autres terminaux, comme les visiophones fonctionnant sur Internet, les communicateurs et les systèmes de navigation.

Concepts de base Quelles sont les différences entre CDC et CLDC? CDC : Destiné aux terminaux puissants. Implémentation Java complète. CLDC : Destiné aux terminaux limités. Implémentation d un sous-ensemble de Java.

Concepts de base Ce qui n est pas inclus dans CLDC JNI (Java Native Interface) Les chargeurs de classe définis par l utilisateur La réflexion La finalisation Les références faibles La virgule flottante Bibliothèques de classe plus petites que celles de J2SE Certaines classes non inclues : File, Properties, Double, EventObject Gestion des erreurs limitée Concept de prévérification

Concepts de base Et par rapport à J2SE? Inclut le package javax.microedition Packages noyau java.* (dans certains cas) modifiés pour inclure uniquement ce qui est nécessaire : java.io, java.lang, java.util Architecture plus modulaire

La famille J2ME MIDP Les profils Nécessite l implémentation de référence CLDC Fournit des classes pour l écriture d applications téléchargeables qui tournent sur des terminaux mobiles comme les téléphones cellulaires et les pagers bidirectionnels Permet le téléchargement de nouveaux services comme les jeux, les applications de commerce et les services de personnalisation Cible les téléphones mobiles comme les PalmOS

La famille J2ME Que manque-t-il dans MIDP 1? Graphismes plein écran Transparence de l image Son Composants utilisateur dans l interface utilisateur de bas niveau Accès à l environnement (caméra, address book, )

La famille J2ME MIDP 2 API pour les jeux Signature des applications Transparence pour les images Amélioration de la gestion des pressions de touche Support du son OTA (Over The Air) obligatoire Push registry Amélioration du graphisme

La famille J2ME PDAP (JSR 75) Se trouve au niveau supérieur de la spécification CLDC. Fournit une API de stockage de données A l origine, destiné à une nouvelle famille de terminaux En définitive, simple surcouche de MIDP permettant : Un accès au système de fichier du mobile Un accès aux fonctionnalités PIM du mobile (répertoire d adresse, agenda, )

La famille J2ME Foundation Profile (JSR 46) Destiné aux terminaux qui ont besoin de support pour une plate-forme Java avec un réseau riche mais ne nécessitent pas d interface utilisateur Fournit en outre un profil de base pour d autres profils, qui auraient besoin de construire leurs propres fonctionnalités en ajoutant, par exemple, une GUI Cible les terminaux suivants : 1 024 Ko de ROM (sans compter les besoins mémoire des applications) 512 Ko de RAM (sans compter les besoins mémoire des applications) connectivité à certains types de réseaux aucune GUI

La famille J2ME Personal Profile (JSR 62) Repackage l environnement d application PersonalJava pour fournir la spécification J2ME aux terminaux qui ont besoin d un haut niveau de connectivité Internet et d une fidélité Web. Conçu pour être compatible avec la spécification de l environnement d application PersonalJava. Cible les terminaux suivants : 2,5 Mo de ROM 1 Mo de RAM connectivité robuste à certains types de réseaux GUI avec un haut degré de fidélité Web et la possibilité de faire tourner des applets

La famille J2ME RMI (JSR 66) Supporte le RMI interapplication sur des connexions TCP/IP pour des applications écrites en Foundation Profile Interopérable avec l API J2SE RMI Ouverture ultérieure sur JINI (pour les périphériques)

La famille J2ME Codage (développeur sur un mobile limité) Commencer avec un mobile limité (par exemple Nokia Serie40) avant de le porter à des mobiles moins limités (par exemple Nokia Serie60) Portage Adaptation du code et du contenu (images, sons, ) à chaque fabricant et à chaque modèle de mobile, parfois à différents firmwares! Prévérification Le process de vérification des classes est découpée en deux process : prévérification : fait en dehors du mobile en utilisant l outil preverify vérification : fait sur le mobile

La famille J2ME Obfuscation Rendre le code difficile à comprendre quand il est décompilé En général, réduit la taille du fichier jar Test & certification Provisioning Provisioning = fourniture de services de télécommunications aux utilisateurs OTA (Over The Air) = technologie de réseau sans fil Bluetooth, câble, IRDA

La famille J2ME Outils de base J2SE (compilateur Java) Wireless Toolkit (émulateur de base, preverifier) SDK & émulateurs Wireless Toolkit (très permissif) Emulateurs de fabricants BlackBerry Java Development Kit Wireless Toolkit (émulateur de base, preverifier) IDE : EclipseME Borland JBuilder Mobile Edition NetBeans Mobility Pack IBM WebSphere Studio Device Developer Metrowerks Codewarrior Wireless Studio

La famille J2ME Compilation : Nokia Developers Suite Ant + Antenna Simplification du codage Remplacement des ressources Ajout de code conditionnel à Java Pré-traitement du code avant compilation Obfuscateur (Pro Guard, Retroguard, ) Editeur de niveau / de carte : Tile Studio Votre propre éditeur Graphiques : Photoshop, etc Test : Emulateurs et téléphones réels

Le challenge du portage J2ME est Une technologie à part grâce à ses principes : Write once, run anywhere Standard de fait Mais L interopérabilité reste à ce jour un voeu pieu Or J2ME sans l interopérabilité perd l essentiel de son sens

PARTIE 3 L API J2ME

J2ME - CLDC Les principaux concepts de MIDP Stockage local de données : Base de données orientée simple enregistrement pour stocker de manière persistente des informations MIDP : RMS (Record Management System) DoJa : Scratchpad Interface utilisateur : 2 APIs pour 2 niveaux : Haut niveau basé sur des widgets Bas niveau basé sur le canvas (niveau des pixels) MIDP : LCDUI (Liquid Crystal Display User Interface)

J2ME - CLDC Communication GCF Generic Communications Framework Multimedia Sons (musiques + sons naturels) Vibreur Lumière Contrôle de la caméra Vidéo

J2ME - CLDC Les classes supportées La classe java.util.properties n est pas supportée. Un jeu limité de propriétés spécifiques à CLDC est supporté. Pour y accéder, il est nécessaire d utiliser la méthode System.getProperty(String key).

J2ME - CLDC Les connexions réseau Les bibliothèques réseau, d E/S et de stockage de la technologie Java sont trop grosses pour les terminaux CLDC : Plus de 100 classes Taille statique totale des fichiers de clase : plus de 200 Ko Les classes d origine n ont jamais été conçues pour les petits terminaux

J2ME - CLDC CLDC spécifie une alternative au framework Generic Connection : Plus de cohérence dans le support de différents types d E/S Moyen pratique de supporter différents protocoles Portabilité améliorée des applications Compatibilité montante avec les bibliothèques de classe Java standard (le mapping existe) Consomme moins de mémoire

J2ME - CLDC Possibilités du Generic Connection Forme générale : Connector.open("<protocole>://<adresse>:<parametres>"); Fichiers : Connector.open("file://pierre.txt"); HTTP : Connector.open("http://www.yahoo.com"); Sockets : Connector.open("socket://129.144.111.222:9000"); Ports de communication : Connector.open("comm://9600:18N");

J2ME - MIDP L interface utilisateur MIDP doit être utilisable sur tous les terminaux : La majorité des terminaux sans fil sont utilisés dans une main Petits écrans Tous les terminaux n ont pas de terminal de pointage Doit constamment penser aux utilisateurs finaux : Les terminaux d information mobile sont des produits clients, pas des ordinateurs de bureau Unification de l interface utilisateur parmi les MIDP

J2ME - MIDP Une interface utilisateur en deux couches Deux couches d API Les APIs de haut niveau pour la portabilité: Etre exécutables et utilisables sur tous les terminaux MIDP Aucun accès direct aux fonctionnalités de terminal natif

J2ME - MIDP Une interface utilisateur en deux couches Les APIs de bas niveau : Accès aux primitives de dessin natif, des événements sur les touches du terminal, des terminaux de saisie natifs, Permet aux développeurs de choisir de compromettre la portabilité pour des apports pratiques à l utilisateur, si besoin

J2ME - MIDP Principes de conception basés sur le Screen Principes : Les interfaces utilisateur MIDlet sont constituées à partir de simples écrans Les écrans doivent contenir une quantité minimale d informations : en général une seule chose Les écrans doivent ne demander qu une seule interaction de l utilisateur Pas d opérations complexes

J2ME - MIDP Le timer Le timer gère les files d attente et les livraisons. Le timer peut : Déclencher plusieurs tâches par timer Etre périodique Etre déclenché à intervalles fixes Faire du one shot

J2ME - MIDP La saisie L API de haut niveau de saisie est gérée en utilisant des commandes abstraites au lieu d accès directs aux boutons softs : Chaque implémentation MIDP fait une correspondance entre les boutons softs et les éléments du menu pour un terminal particulier Les MIDlets peuvent fournit des conseils sémantiques (comme retour) L API de bas niveau donne au développeur le moyen d accéder aux événements de pression des touches.

J2ME - MIDP Exemple : Les commandes d entrée new Command("Achat", Command.SCREEN, 1); new Command("Info", Command.SCREEN, 2); new Command("Retour", Command.BACK, 1);

J2ME - MIDP RMS Base de données orientée enregistrement léger : API indépendante du terminal ID unique d enregistrement pour chaque enregistrement du store Les enregistrements sont des tableaux d octets Partagés dans une suite MIDlet Mise à jour atomique pour les enregistrements simple Support de l énumération, du tri et du filtre

J2ME - MIDP RMS La plate-forme de terminal est responsable de : L intégrité des données lors des boots et des changements de batterie Le stockage en mémoire flash ou d autre terminal

J2ME - MIDP RMS Les méthodes RMS : Stockage : openrecordstore, closerecordstore, listrecordstore, deleterecordstore, getrecordsize, getnumrecords Données : addrecord, deleterecord, getrecord, setrecord, getrecordsize Sélection : RecordEnumeration, RecordFilter, RecordCompare

J2ME - MIDP La connexion réseau Les terminaux MIDP doivent implémenter le protocole http. MIDP étend le réseau du framework Generic Connection de CLDC : Les méthodes HttpConnection comprennent : get/setrequestproperty, get/setrequestmethod, getresponsecode, getresponsemessage, getheaderfield, geturl, gethost, getport, getfile, getquery, getref

J2ME - MIDP Cycle de vie de la midlet : Constructeur startapp() : démarrage et reprise pauseapp() destroyapp() Sortie : destroyapp (false); notifydestroyed (); Analyse d une midlet

J2ME - MIDP Gestion des commande : Mettre en place un listener : implements CommandListener Créer la commande : private Command cmdexit; cmdexit = new Command ("Exit", Command.EXIT, 1); «Enregistrer» la commande : canvas.addcommand (cmdexit); canvas.setcommandlistener (this); Gérer les commandes : public void commandaction (Command mycommand, Displayable mydisplayable) { if (mycommand == cmdexit) { destroyapp (false); notifydestroyed (); } }

Basculer sur l écran graphique : public Display display; Canvas canvas = new MyCanvas(); display = Display.getDisplay(this); display.setcurrent(canvas); J2ME - MIDP

J2ME - MIDP Etendre la classe : extends Canvas Créer l écran graphique Méthode de rafraichissement de l écran : public void paint(graphics g) Etendre la classe : getwidth() & getheight() pour connaître la taille de l écran

J2ME - MIDP Créer un thread : implements Runnable Thread thread; thread = new Thread (this); thread.start(); public void run() { while (true) { } }

J2ME - MIDP Gérer le clavier : public void keypressed (int keycode) { switch (keycode) { case Canvas.KEY_NUM1: break; default: switch (getgameaction (keycode)) { case Canvas.FIRE: break; } } }

J2ME - MIDP Charger et afficher une image : Image myimage = null; try { myimage = Image.createImage ("/monimage.png"); } catch (Exception e) { } public void paint(graphics g) { g.setcolor(255, 255, 255); g.fillrect(0, 0, getwidth(), getheight()); g.drawimage (myimage, getwidth() / 2, getheight() / 2, Graphics.HCENTER Graphics.VCENTER); }

J2ME - MIDP Mécanisme de rafraichissement de l écran : public void run() { while (true) { if (!pause) { repaint(); try { Thread.sleep (100); } catch (Exception e) { } } } }

J2ME - MIDP Jouer un son : try { InputStream is = getclass().getresourceasstream("music.wav"); Player p = Manager.createPlayer(is, "audio/x-wav"); p.start(); } catch (IOException ioe) { } catch (MediaException me) { }

J2ME - MIDP Autres APIs JSR 75 : accès au système de fichier et aux fonctionnalités PIM du mobile JSR 82 : accès à la couche Bluetooth du mobile depuis Java JSR 120 : possibilité d envoyer et de recevoir des SMS depuis et vers des applications Java JSR 135 : API multimédia (son, vidéo, caméra, ) JSR 172 : appel de Web services (incluse un parser XML)

J2ME - MIDP JSR 177 : pont entre J2ME et la carte SIM JavaCard JSR 179 : géolocalisation du mobile JSR 180 : protocole SIP (ex d application : VoIP) JSR 184 : 3D JSR 205 : possibilité d envoyer et de recevoir des MMS depuis et vers des applications Java JSR 226 : support du format SVG en Java

J2ME - MIDP Le portage se heurte à de gros problèmes Fragmentation des caractéristiques des mobiles : Taille de l écran Taille maximale des jar Taille de la heap memory Taille maximale du RMS, Fragmentation des fonctionnalités des terminaux : Bugs d implémentation APIs : MIDP 1 / MIDP 2 / DoJa / VSCL/ etc Fragmentation des caractéristiques des opérateurs mobiles : Passerelles Ports ouverts,

J2ME - MIDP Guideline de portage Développer seulement un code source Un code source automatiquement généré pour chaque mobile (en utilisant un préprocesseur) Adapter automatiquement les ressources aux limitations du terminal Images (images plein écran + + sprites) Musiques (format, characteristics, ) Sons (format) Limitations concernant la taille des objets, la taille des images, la heap memory, la taille maximale du jar, les bugs connus, Adapter dynamiquement à la taille de l écran dès que possible

J2ME - MIDP Traiter dynamiquement les images dès que possible (ex: utiliser le mirroir, ) Gérer les événements externes (comme les appels entrants) Supporter la localisation Supporter les fonctionnalités avancées quand elles sont disponibles (exemple : vibreur, sons naturels, exécution en tâche de fond, appel téléphonique, envoi d un SMS, )

J2ME - MIDP Nokia 6600 Screen size : 176x208 Max jar size : no limit («dynamic allocation») Heap memory size : 3 Mb Storage size : 6 Mb Nokia 7210 Screen size : 128x128 Max jar size : 63 Kb Heap memory size : 195 Kb Storage size : 610 Kb Nokia E70 Screen size : 352x416 Max jar size : no limit («dynamic allocation») Heap memory size : no limit («dynamic allocation») Storage size : 70 Mb

Ressources J2ME Wireless Toolkit 2.1 http://java.sun.com/products/j2mewtoolkit/download- 2_1.html Portail Sun Java : http://java.sun.com Livres : J2ME, applications pour terminaux mobiles. Bruno Delb (éditions Eyrolles, juin 2002) Java development on PDAs. Daryl Wilding- McBride (éditions Addison-Wesley) J2ME in a nutshell. Kim Topley (éditions O Reilly)

Conclusion Net Innovations Bruno Delb bruno.delb@netinnovations.fr Web : http://www.netinnovations.fr Mob : 06 09 35 26 14