La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Développement d’applications mobiles sous JAVA Micro Edition J2ME

Présentations similaires


Présentation au sujet: "Développement d’applications mobiles sous JAVA Micro Edition J2ME"— Transcription de la présentation:

1 Développement d’applications mobiles sous JAVA Micro Edition J2ME
Tébourbi Riadh Cours J2ME, Tébourbi Riadh, SUP'COM

2 Présentation de J2ME Historiquement, Sun a proposé plusieurs plate-formes pour le développement d'applications sur des machines possédant des ressources réduites, typiquement celles ne pouvant exécuter une JVM répondant aux spécifications complètes de la plate-forme J2SE. JavaCard : pour le développement sur des cartes à puces EmbeddedJava : systèmes embarqués PersonnalJava : pour le développement sur des machines possédant au moins 2mo de mémoire En 1999, Sun propose de mieux structurer ces différentes plate-formes sous l'appellation J2ME (Java 2 Micro Edition) (Seule le plate-forme JavaCard n'est pas incluse dans J2ME et reste à part.) pour périphériques mobiles et embarqués. Par rapport à J2SE, J2ME utilise des machines virtuelles différentes. Certaines classes de base de l'API sont communes avec cependant de nombreuses omissions dans l'API J2ME. Cours J2ME, Tébourbi Riadh, SUP'COM

3 3 Plateformes Java Java 2 Platform Java2 Standard Edition (J2SE) Java2
Enterprise Edition (J2EE) Java2 Micro Edition (J2ME) Applications : Standards desktop & Workstation Serveurs, Applications Entreprise Petites mémoires Périphériques à Constraintes Cours J2ME, Tébourbi Riadh, SUP'COM

4 Java 2 Micro Edition Plateforme JAVA pour des petits périphériques (mobiles et embarqués). Un sous ensemble de J2SE Périphériques cible: Téléphones Mobiles, Smart Phones PDAs (y compris les PocketPC) TV, VCR, Lecteurs CD Cours J2ME, Tébourbi Riadh, SUP'COM

5 Exemple de systèmes mobiles et de systèmes embarqués
_ SmartCard/Carte à Puce _ Cellular Phone/Téléphone mobile _ PalmPC, PocketPC/Assistant Personnel _ eBook, Cartable Electronique _ Appareil photo, … _ Set Top Box/Decodeur TV Numérique _ Game Console/Console de Jeu _ Electronic Consuming/Electronique _ Terminal de paiement, Guichet, Parcmètre _ Home Portal/Portail maison _ Car/Voiture _ Wearable computer (Augmented Reality) _ Prothèse active _ Satellite ... Cours J2ME, Tébourbi Riadh, SUP'COM

6 Contraintes matérielles des mobiles
Encombrement et poids faibles (pour les nomades) Affichage limité : de 100*60 en NB à 640*240 en couleurs Faible mémoire (car grande consommation): primaire(RAM) et secondaire (FlashRAM, EEPROM) Autonomie (?) (pour les nomades) Clavier et pointage rudimentaire: tablette sensible, écran tactile, PAD, entrée de texte Communication (?): Série (IrDA, station d’accueil USB ou RS232), Réseau LAN, Wireless LAN, Cellulaire…) Résistance aux chocs Cours J2ME, Tébourbi Riadh, SUP'COM

7 Configurations et Profils du J2ME
L'ensemble des appareils sur lequel peut s'exécuter une application écrite avec J2ME est tellement vaste et disparate que J2ME est composé de plusieurs parties : les configurations (CDC, CLDC) et les profiles. J2ME propose donc une architecture modulaire. Chaque configuration peut être utilisée avec un ensemble de packages optionnels qui permet d'utiliser des technologies particulières (Bluetooth, services web, lecteur de codes barre, etc ...). Ces packages sont le plus souvent dépendant du matériel. L'inconvénient de ce principe est qu'il déroge à la devise de Java "Write Once, Run Anywhere“ (partiellement vrai pour des applications développées pour un profile praticulier). Il ne faut cependant pas oublier que les types de machines cibles de J2ME sont tellement différents (du téléphone mobile au set top box), qu'il est sûrement impossible de trouver un dénominateur commun.  nombreuses évolutions en cours de la plate-forme. Cours J2ME, Tébourbi Riadh, SUP'COM

8 Les configurations Définissent les caractéristiques de bases d'un environnement d'exécution pour un certain type de machine possédant un ensemble de caractéristiques et de ressources similaires. Elles se composent d'une machine virtuelle et d'un ensemble d'API de base. Deux configurations sont actuellement définies : CLDC (Connected Limited Device Configuration): concerne des appareils possédant des ressources faibles (moins de 512 Kb de RAM, faible vitesse du processeur, connexion réseau limitée et intermittente) et une interface utilisateur réduite (par exemple un téléphone mobile ou un PDA "bas de gamme"). Elle s'utilise sur une machine virtuelle KVM (Kuaui VM de SUN) (=V avec des limites) CDC (Connected Device Configuration) : concerne des appareils possédant des ressources plus importantes (au moins 2Mb de RAM, un processeur 32 bits, une meilleure connexion au réseau), par exemple un Set Top box ou certains PDA "haut de gamme". Elle s'utilise sur une machine virtuelle CVM (CVM=JVM (SUN) mais plus compact) Cours J2ME, Tébourbi Riadh, SUP'COM

9 Les profiles Se composent d'un ensemble d'API particulières à un type de machines ou à une fonctionnalité spécifique. Ils permettent l'utilisation de fonctionnalités précises et doivent être associés à une configuration. Ils permettent donc d'assurer une certaine modularité à la plate-forme J2ME. (profile = ensemble d’APi minimum pour des “devices” similaires) Profil Configuration MIDP 1.0 CLDC Package javax.microedition.* MIDP 2.0 PDA Sambian, PalmOS Mobile Media API (MMAPI) 1.1 Permet la lecture de clips audio et vidéo Wireless Messaging API (WMA) 1.1 Permet l'envoi et la réception de SMS Java APIs for Bluetooth Foundation Profile CDC Personal Profile Personal Basis Profile RMI optional Profile   Remote Method Invocation JDBC optional Profile J2ME Web Services Specification Web Services Mobile 3D Graphics API for J2ME 3D Game Pour les jeux Cours J2ME, Tébourbi Riadh, SUP'COM

10 Exemples Avant de pouvoir développer sur un mobile il faut connaître sa configuration et ses profils qu’il peut supporter: Manufacturer Model Wireless Technology Frequency (MHz) Software Screen Alcatel One Touch 735i E-GSM, GSM 900, 1800 MIDP 2.0, WMA 1.0, CLDC 1.0 128x128/12 bits Motorola A388c GSM/GPRS 900, 1800, 1900 MIDP 1.0, CLDC 1.0 240x320/16 bits A760 MIDP 2.0, CLDC 1.0 320x240/16 bits T720i 1900 120x160/12 bits Nokia 3100 MIDP 1.0, WMA 1.0, CLDC 1.0 3200 GSM/GPRS/EDGE 5140 GSM CLDC 1.1, MIDP 2.0 9500 GSM, GSM/GPRS 850, 900, 1800, 1900 JTWI 1.0, M3DAPI 1.0, CLDC 1.1, MIDP 2.0, MMAPI 1.1, LAPI 1.0, WMA 1.1 640x200/16 bits 7610 MIDP 1.0, MIDP 2.0, CLDC 1.0 176x208/16 bits Samsung SGH-S100 128x160/16 bits Siemens C55 101x64/1 bit S6V JTWI 1.0, M3DAPI 1.0, CLDC 1.1, MIDP 2.0, MMAPI 1.1, LAPI 1.0, JABWT 1.0, WMA 1.1 132x176/16 bits Sony Ericsson P908 MIDP 2.0, PersonalJava 1.1.1, JABWT 1.0, CLDC 1.0, WMA 1.1 208x320/16 bits Cours J2ME, Tébourbi Riadh, SUP'COM

11 Les VM KVM (SUN) pour CLDS CVM (SUN) pour CDC
Monty (SUN): Nouvelle VM pour CLDC (meilleures performances) CDC Hot Spot (SUN) : Anciennement CVM pour CDC (performance améliorée). Très portable (ARM, Power PC, MIPS, SPARC sur Linux, Solaris..). MicrochaiVM (HP) : Support KVM (processeur 16 ou 32 bits, PalmOS (64 k), Linux, PocketPC/SH3 /Strong ARM J9VM (IBM) : machine virtuelle pour l’embarqué. OS: PalmOS, HardHatLinux, WinCE. μp: X86, ARM, Strong ARM, MIPS, PowerPC.. Cours J2ME, Tébourbi Riadh, SUP'COM

12 Profile MIDP (Mobile Information Device Profile)
MIDP est un profile standard défini pour un ensemble de machines embarquées possédant des ressources et une interface graphique limitée. : 128KB of non-volatile memory for the MIDP implementation 32KB of volatile memory for the runtime heap 8KB of non-volatile memory for persistent data A screen of at least 96 × 54 pixels Some capacity for input, either by keypad, keyboard, or touch screen Two-way network connection, possibly intermittent Cours J2ME, Tébourbi Riadh, SUP'COM

13 Applications MIDP Toute application MIDP doit dériver d’une classe spéciale: MIDlet La classe MIDlet définie et contrôle le cycle de vie d’une application. Se trouve dans le Package: javax.microedition.midlet. Développement (javac), Preverify (KVM), Packaging (.jar), Description/Déploiement (.jad) Cours J2ME, Tébourbi Riadh, SUP'COM

14 Structure de l’API Displayable Low level API (jeux) Screen Canvas
High level API (GUI) Alert Form ListBox TextBox Item ChoiceGroup DateField Gauge ImageItem StringItem TextField Cours J2ME, Tébourbi Riadh, SUP'COM

15 Programmation d’une MIDlet
Une application MIDP doit être une sous-classe de la classe MIDlet : public class MaMidlet extends MIDlet {…} C’est l’équivalent MIDP d’une applet, où le lancement et l’arrêt sont sous le contrôle de l’environnement d’exécution Quand une MIDlet est lancée l’environnement appelle la méthode MIDlet.startApp() Cours J2ME, Tébourbi Riadh, SUP'COM

16 Architechture d’un programme MIDlet (1)
public class MaMidlet extends MIDlet { public MaMidlet() { //Le constructeur } public void startApp() { // ca commence ici au lancement de MaMidlet (après le constructeur) public void pauseApp() { // L’application est en mode “pause” (pas d’affichage) public void destroyApp(boolean unconditional) { // Quand on quitte l’application, Nettoyage si nécessaire Cours J2ME, Tébourbi Riadh, SUP'COM

17 Architechture d’un programme MIDlet(2)
Import packages nécessaires : import javax.microedition.midlet.*; import javax.microedition.lcdui.*; Tout MIDP applications dérive « extend » de la classe MIDlet Cours J2ME, Tébourbi Riadh, SUP'COM

18 1/2 Un premier Exemple HelloSupcomMIDlet.java
Cours J2ME, Tébourbi Riadh, SUP'COM

19 2/2 Cours J2ME, Tébourbi Riadh, SUP'COM

20  Afficher un texte qui défile: utilisation de la classe Ticker: HelloSupcomMIDletbis.java
…..Pour la Suite voir HelloSupcomMIDlet Cours J2ME, Tébourbi Riadh, SUP'COM

21 1/2 Un deuxième Exemple SimpleListe1.java
Cours J2ME, Tébourbi Riadh, SUP'COM

22 2/2 Cours J2ME, Tébourbi Riadh, SUP'COM

23 list = new List("Sample list", List.IMPLICIT, …);
Remarque sur le constructeur de la classe List: new List(String title, int listType, …) list = new List("Sample list", List.IMPLICIT, …); (SimpleListe1.java) list = new List("Sample list", List.EXCLUSIVE, …); (SimpleListe2.java) list = new List("Sample list", List.MULTIPLE, …); (SimpleListe3.java) Cours J2ME, Tébourbi Riadh, SUP'COM

24 Action après choix dans une liste: troisième Exemple: SimpleListe4
Action après choix dans une liste: troisième Exemple: SimpleListe4.java 1/2 Cours J2ME, Tébourbi Riadh, SUP'COM

25 2/2 Cours J2ME, Tébourbi Riadh, SUP'COM

26 Forms et Items Form (class) est le seul "container" dans MIDP
Form contient des objets Item (class) (doc API: A superclass for components that can be added to a Form) Les éléments sont ajoutés en utilisant Form.append() form.append(item); form.append("string"); Quand un Item change d’état (suite à une action sur celui-ci), il génère l’événement ItemStateChanged Capté par un ItemStateListener définit sur la Form Le changement d’état appelle la méthode ItemStateListener Cours J2ME, Tébourbi Riadh, SUP'COM

27 Diagramme des Items 1 Form peut avoir plusieurs Items (components)
Cours J2ME, Tébourbi Riadh, SUP'COM

28 Example 4 (1/2) Form1.java import javax.microedition.midlet.*;
import javax.microedition.lcdui.*; public class Form1 extends MIDlet implements ItemStateListener { protected Display display; protected Form form; public Form1() { display = Display.getDisplay(this); form = new Form("Info entry form"); form.append(new TextField("Name", "", 10, TextField.ANY)); form.append(new Gauge("Age (0-100)", true, 10, 2)); form.append(new ChoiceGroup("Job", Choice.EXCLUSIVE, new String[] {“active", "student"}, null)); form.setItemStateListener(this); } Cours J2ME, Tébourbi Riadh, SUP'COM

29 Example 4 (2/2) public void itemStateChanged(Item item) {
// if an item changes – it gets sent here! System.out.println("State changed on item " + item.toString()); } public void startApp() { display.setCurrent(form); public void pauseApp() { public void destroyApp(boolean unconditional) { display = null; form = null; Cours J2ME, Tébourbi Riadh, SUP'COM

30 Image et ImageItem Classes pour manipuler des images
Image: classe pour créer un objet image et contient des attributs tels que Hauteur Largeur de l’image. ImageItem: sert pour afficher l’image sur une Form. Elle définit comment l’image va être afficher à l’écran (à gauche, centrée, taille, etc..) MIDP offre deux types d’images: immutable: ne peut pas être modifiée après création (une image lue d’un fichier image par exemple) mutable : une image créée et stockée en mémoire par l’utilisateur. Cours J2ME, Tébourbi Riadh, SUP'COM

31 Affichage d’une image Constructeurs: Image createImage(String name)
ImageItem(String label, Image img, int layout, String altText) Affichage sur une Form: Form fmMain = new Form("Images"); ... // Create an image Image img = Image.createImage("/supcom.png"); // Append to a form fmMain.append(new ImageItem(null, img, ImageItem.LAYOUT_CENTER, null)); Cours J2ME, Tébourbi Riadh, SUP'COM

32 Exemple 5 (1/2) HelloSupcomMIDletfin.java
Cours J2ME, Tébourbi Riadh, SUP'COM

33 Exemple 5 (2/2) Cours J2ME, Tébourbi Riadh, SUP'COM

34 Les Threads Utilisés pour faire du multitâche:
Pendant la lecture d’une vidéo, l’interface graphique d’une application est fonctionnelle Lors d’une animation ont peut écouter la musique. Thread = unité d'exécution faisant partie d'un programme. Cette unité fonctionne de façon autonome et parallèlement à d'autres Threads. chaque unité se voit attribuer des intervalles de temps au cours desquels elles ont le droit d'utiliser le processeur pour accomplir leurs traitements Un programme (ou partie d’un programme) java peut être mis sous un Thread. Le principal avantage des Threads est de pouvoir répartir différents traitements d'un même programme en plusieurs unités distinctes pour permettre leur exécution "simultanée". La classe java.lang.Thread et l'interface java.lang.Runnable sont les bases pour le développement des Threads en java. Par exemple, pour exécuter des Midlets dans un thread, il faut que celles ci implémentent l'interface Runnable. Cours J2ME, Tébourbi Riadh, SUP'COM

35 Les Threads Création d’un Thread dans une Midlet
1) public class MaMidlet extends MIDlet implements CommandListener, Runnable {….} 2) public Thread(Runnable target) //Allocates a new Thread object with a specific target object whose run method is called. //Créer un objet Thread pour un autre objet “target” (une Midlet par exemple) et c’est la //methode run() de “target” qui sera exécutée. Thread t = new Thread(this) t.start(); apple de la méthode surchargée run(); 3) //implementation de la méthode run() de la Midlet: public void run() { …..//faire un traitement long } Cours J2ME, Tébourbi Riadh, SUP'COM

36 Les Threads Création d’un Thread pour une méthode
Une méthode d’une Midlet peut être mise sous un Thread indépendant. Elle sera exécuter alors en parallèle avec la Midlet. private void doSomethingBig() { new Thread() { public void run() { …….//Faire qq chose de long } }.start(); Cours J2ME, Tébourbi Riadh, SUP'COM

37 MIDP 2.0 Quoi de neuf ? (disponible été 2003) • UI
•Multimédia :Mobile Media API (MMAPI) •Amélioration des formulaire •Images RGB • Game API javax.microedition.lcdui.game GameCanvas, LayerManager, Layer, TiledLayer, Sprit Cours J2ME, Tébourbi Riadh, SUP'COM

38 MIDP 2.0 • Sécurité • HTTPS • PKI (Certificats) • JAR signé
La signature et la clé publique sont ajoutés au JAD • Permissions Nouvelles entrées du JAD : MIDIet-Permissions, MIDIet-Permissions-Op • Lancement Push de MIDLet sur des demandes entrantes de connexions réseaux • L'entrée MIDlet-Push-<n> du JAD précise: l’URL local de connection URL la classe de la MIDLet l’adresse IP de la machine autorisée à lancer un push • Exemple : MIDIet-Push-1: socket://:76, exemple.PushLet Cours J2ME, Tébourbi Riadh, SUP'COM

39 Messaging Wireless Messaging API (WMA) pour J2ME
Messageries pour « pager » et téléphone mobile • WMA 1.1 (JSR 120) permet l’envoie et la réception de SMS (Short Message Service) ou de CBS (Cell Broadcast Service) • WMA 2.0 (JSR 205) prend en compte l’envoies MMS Cours J2ME, Tébourbi Riadh, SUP'COM

40 Wireless Messaging API (WMA 2.0)
package, javax.wireless.messaging Message: classe de base pour définir un message. C’est une superclasse pour des types de messages BinaryMessage (fichier wav par exemple), MultipartMessage (message en plusieurs parties) et textMessage (message texte). MessageConnection: fournie les fonctionnalités de base pour créer, envoyer et recevoir les messages. Cours J2ME, Tébourbi Riadh, SUP'COM

41 Wireless Messaging API (WMA 2.0)
MessageListener: Interface pour définir un “listener” et permet d’implémenter des notifications asynchrones des messages reçus MessagePart: permet de définir une partie a ajouter à un message ayant plusieurs parties (MultipartMessage).  smsExemple.java Cours J2ME, Tébourbi Riadh, SUP'COM

42 Multimédia Mobile Media API (MMIA) Son,MIDI, Vidéo, streaming…
En remplacement de JMF (trop gros 650k, awt) Compact: 150K (MIDI, MPEG1, MP3,…) MIME Type Description audio/midi MIDI files audio/sp-midi Scalable Polyphony MIDI audio/x-tone-seq MIDP 2.0 tone sequence audio/x-wav WAV PCM sampled audio image/gif GIF 89a (animated GIF) video/mpeg MPEG video video/vnd.sun.rgb565 Video capture Cours J2ME, Tébourbi Riadh, SUP'COM

43 Mobile Media API (MMIA) Introduction
Spécificités: Support pour “Génération de tonalité”, “Playback”, et “enregistrement/capture multimédia”: l’API accepte tout contenu audio et vidéo. Tien compte des contraintes de mémoire sur des plateformes CLDC Extensible: Nouvelles fonctionnalités peuvent être rajoutées; d’autres formats de contenu audio, vidéo peuvent être supportés. Cours J2ME, Tébourbi Riadh, SUP'COM

44 Gestion/Traitement du contenu
Deux parties: Gestion du protocole (Protocol Handling): Lire les données d’une source, exemple: fichier, serveur(réseau), streaming. Gestion du contenu(Content Handling): une fois lu, le contenu est décodé et restitué via une sortie du périphérique (haut parleur pour le son, écran pour la vidéo)  Trois classes: Player: Lit les données d’une source, les traites et les restitue. Manager: Pour créer des players, jouer des tonalités, contient les protocoles et les types de contenus que le mobile supporte. DataSource: Définit comment des données d’une source (fichier, http, rtp) sont lues. On peut créer un nouveau DataSource (pour un nouveau format par exemple) Cours J2ME, Tébourbi Riadh, SUP'COM

45 Manager C’est la classe centrale pour creéer des “players” et offre trois methodes pour indiquer la source de données: createPlayer(DataSource source) createPlayer(InputStream stream, String type) createPlayer(String locator) Player p = Manager.createPlayer ("http://nokia.com/chanson.mp3"); Player p = Manager.createPlayer("http://movies.com/film.mpg"); Player p = Manager.createPlayer("capture://video"); Type Media Exemple syntaxe Capture audio "capture://audio" : capture audio sur périph défaut. "capture://devmic0?encoding=pcm" capture audio sur devmic0 avec encodage PCM. Capture vidéo "capture://video" : capture video à partir du périphérique de capture par défaut "capture://devcam0?encoding=rgb888&width=100&height=50" : capture d’une camera, rgb888 mode encodage, avec “width” “height” (taille) spécifiques Radio "capture://radio?f=105.1&st=stereo " : tuner à la fréquence FM mode stéréo. Streaming vidéo/audio/texte d’une source externe "rtp://host:port/type" : type = audio, vidéo ou texte Jouer des tonalités/ MIDI "device://tone" :player pou jouer des tonalités "device://midi" :ou MIDI Cours J2ME, Tébourbi Riadh, SUP'COM

46 Player Créé avec Manager Permet de restituer un contenu multi-media
Possède des états: UNREALIZED, REALIZED, PREFETCHED, STARTED, et CLOSED UNREALIZED: état initial, juste après création REALIZED: initialise les infos sur les medias (type, périphériques de captures, etc). PREFETCHED: établis la connexions avec la média et la charge, établit les connections réseau pour le streaming. STARTED: la lecture a commencé (mode lecture) CLOSED: arrêt de lecture, arrêt du lecteur realize() prefetch() start() stop() deallocate() close() Passage d’un état à un autre: Cours J2ME, Tébourbi Riadh, SUP'COM

47 Player(2) On associe à un lecteur un contrôle (control) : une fonctionnalité média spécifique. Examples: VideoControl: obtient et contrôle la fenêtre vidéo MIDIControl, ToneControl: accès aux propriétés MIDI/Tonalités du périphérique. VolumeControl: contrôle du volume Usage: Player p; Form frm; vc = (VideoControl)p.getControl("VideoControl"); volc = (VolumeControl)p.getControl("VolumeControl"); frm.append((Item)vc.initDisplayMode(vc.USE_GUI_PRIMITIVE, null)); //Ajout de la fenêtre vidéo sur une forme en tant que Item. volc.setLevel(50); //Volume à 50 (entre 0 et 100) Cours J2ME, Tébourbi Riadh, SUP'COM

48 Exemple 1 (1/2) VideoPlayer.java
Lecture d’un fichier vidéo stocké sur un serveur (exmple apache Tomcat). Url: Cours J2ME, Tébourbi Riadh, SUP'COM

49 Exemple 6 (2/2) Cours J2ME, Tébourbi Riadh, SUP'COM

50 Exemple 7 (1/2) VideoPlayer1.java
Lecture d’un fichier vidéo à partir de l’archive jar. Utilisation de Manager. createPlayer(InputStream stream, String type) L’InputStream est obtenu à partir de l’objet application obtenu par getClass() ….. ….. Cours J2ME, Tébourbi Riadh, SUP'COM

51 Snapshot (capture d’une image)
Vidéo lue  capturer une image Méthode getSnaphot sur un objet VideoControl byte[] getSnapshot(java.lang.String imageType) Exemple: VideoControl vc; byte[] snapshot; ImageItem imi; snapshot = vc.getSnapshot("encoding=jpeg"); Image im = Image.createImage(snapshot, 0, snapshot.length);  On obtient un objet Image qu’on peut afficher à l’aide d’un ImageItem (voir exemple 5) Cours J2ME, Tébourbi Riadh, SUP'COM

52 Application EN TP: MIDlet qui lit une vidéo depuis un URL dans une liste Fonctions Play, Pause et Stop (utilisation d'un thread pour play) Fonction Snapshot (produire une image à partir de la vidéo) (un autre thread) Fonction contrôle volume (utilisation de Gauge) Fonction partage URL avec un ami par SMS VideoPlayer2.java VideoPlayer3.java Cours J2ME, Tébourbi Riadh, SUP'COM

53 Déploiement Une Midlet java peut être déployée sur un périphérique mobile: 1) Directement par liaison USB, Série, Blutooth.. entre un PC et le Mobile Utilisation d’un logiciel de téléchargement (Oxygène phone manager, NOKIA phone manager,..) 2) OTA: Over The Air: Téléchargement à partir d’un serveur. Utilisation d’un URL = adresse de la Midlet (Acces à travers le réseau), exemple: http//nokia.com Dans les deux cas : il faut créer un package d’installation .jar (archive) {.class , images, fichiers etc..} et .jad (description)) Sur le mobile: le « Application Manager » gère l’installation, mise à jour, désinstallation et exécution des applications java (un mini SE) Cours J2ME, Tébourbi Riadh, SUP'COM

54 Exemple hello1.jad MIDlet-1: HelloSupcomMIDletfin, , HelloSupcomMIDletfin MIDlet-Jar-Size: 66756 MIDlet-Jar-URL: MIDlet-Name: hello1 MIDlet-Vendor: Tebourbi Riadh MIDlet-Version: 1.0 MicroEdition-Configuration: CLDC-1.0 MicroEdition-Profile: MIDP-2.0 (En locale copier hello1.jar et hello1.jad sur le mobile (par liaison USB, Blutooth etc..) et exécuter hello1. ) Cours J2ME, Tébourbi Riadh, SUP'COM

55 URL: http://ip_serveur/midp/hello1.html
Exemple OTA(1) Sur le SERVEUR URL: Copier les fichiers .jar et .jad dans le répertoire des applications WEB Écrire hello1.html qui contient un lien vers hello1.jad Exemple de serveur: Tomcat Hello1.html <html> <head> <title>hello1</title> </head> <body> <a href="http://localhost:8080/midp/hello1.jad">hello1.jad</a> </body> </html> Cours J2ME, Tébourbi Riadh, SUP'COM

56 Exemple OTA(2) Sur le Mobile 2 3 4 1 5 6 7 8
Cours J2ME, Tébourbi Riadh, SUP'COM

57 Outils de développement
Quelques outils: J2ME Wireless Toolkit 2.0.1 Sun ONE Studio Mobile Edition 5 CodeWarrior Wireless Studio 7.0 Nokia Developer’s Suite Beta J2ME RIM BlackBerry JDE 3.2 Motorola LWT1.0 Cours J2ME, Tébourbi Riadh, SUP'COM

58 Sun ONE Studio Mobile Edition
Cours J2ME, Tébourbi Riadh, SUP'COM

59 BlackBerry Java Development Environment
Cours J2ME, Tébourbi Riadh, SUP'COM

60 Nokia Developer’s Suite & CodeWarrior
Cours J2ME, Tébourbi Riadh, SUP'COM

61 J2ME Wireless Toolkit Cours J2ME, Tébourbi Riadh, SUP'COM

62 Installation j2me_wireless_toolkit-2_2-windows.exe. Installation dans c:/wtk22 Applications Midlets Midlet hello1 .jar, .jad Les .class Ressources de l’application: exemple: supcom_rgb.png Codes sources, exemple: HelloSupcomMIDletfin.java Cours J2ME, Tébourbi Riadh, SUP'COM

63 Création d’une Midlet(1)
« DémarrerprogrammesJ2ME Wireless Toolkit 2.2KToolbar » NewProject: hello « Settings » Nom Nom classe (fichier .java) Cours J2ME, Tébourbi Riadh, SUP'COM

64 Création d’une Midlet(1)
Nous allons tester la Midlet « HelloSupcomMIDlet » (exemple 1)  Le répertoire C:\WTK22\apps\hello\src doit contenir le fichier HelloSupcomMIDlet.java Ecrire le fichier HelloSupcomMIDlet.java (à l’aide d’un éditeur de texte, ou KAWA). Le copier dans le répertoire C:\WTK22\apps\hello\src Compiler: « ProjectBuild » Exécuter: « ProjectRun »: exécution sur l’émulateur JAR: « Projectpackagecreate package »: création du .jar Cours J2ME, Tébourbi Riadh, SUP'COM

65 Création d’une deuxième Midlet
Nous allons rajouter au projet hello une deuxième midlet: HelloSupcomMIDletbis Ecrire le fichier HelloSupcomMIDletbis.java (à l’aide d’un éditeur de texte, ou KAWA). Le copier dans le répertoire C:\WTK22\apps\hello\src Dans « Settings »  « Midlets »  « Add » entrer le nom de la midlet et la nom de la classe (HelloSupcomMIDletbis)  « OK » Build + RUN  Exécution avec choix Midlet à exécuter Cours J2ME, Tébourbi Riadh, SUP'COM

66 A VOUS DE JOUER Cours J2ME, Tébourbi Riadh, SUP'COM


Télécharger ppt "Développement d’applications mobiles sous JAVA Micro Edition J2ME"

Présentations similaires


Annonces Google