39
J2ME Présenté Par: Amdane SAMB Serigne Moustapha KANE

Java ME by Amdane Samb at BarCamp Goree, December 2010

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Java ME by Amdane Samb at BarCamp Goree, December 2010

J2ME

Présenté Par: Amdane SAMB

Serigne Moustapha KANE

Page 2: Java ME by Amdane Samb at BarCamp Goree, December 2010

• INTRODUCTION DE J2ME• DEMONSTRATION D'UNE APPLICATION J2ME

PLAN

2MOBILE SENEGAL

Page 3: Java ME by Amdane Samb at BarCamp Goree, December 2010

SOMMAIRE

• INTRODUCTION• CONFIGURATIONS - CLDC• PROFILES - MIDP• INSTALLATION DES LOGICELS• REALISATION D'UN PROGRAMME J2ME• PREMIER PROGRAMME J2ME• WMA• RMS• REFERENCES

3MOBILE SENEGAL

Page 4: Java ME by Amdane Samb at BarCamp Goree, December 2010

INTRODUCTION

• J2ME (Java 2 Micro Edition) est une plateforme Java pour les terminaux mobiles (téléphones, pda,…) et les systèmes embarqués.

• L’architecture J2ME est modulaire et est composée de deux éléments fondamentaux:• Une configuration (i.e. une machine virtuelle et un ensemble de

classes de base et d'API): • CDC (Connected Device Configuration) utilsée par les

terminaux disposant de quelques Mégaoctets de mémoire; et

• CLDC (Connected Limit Device Configuration) pour les petits terminaux.

• Un profile (i.e. une spécification Java définie, utilisée par les fabricants et développeurs pour des terminaux spécifiques).

• Dans notre exposé, nous nous intéresserons aux petits terminaux utilisant une configuration CLDC. 4MOBILE SENEGAL

Page 5: Java ME by Amdane Samb at BarCamp Goree, December 2010

5

Le CLDC (Connected Limit Device Configuration) est développé pour les terminaux disposant d'une petite mémoire entre 160 à 512 Ko de mémoire.

Le rôle de CLDC est de définir une plateforme standard adaptée aux terminaux légers dotés de peu de ressources et fonctionnant en mode connecté. Il est utilisé avec KVM (K Virtual Machine) fonctionnant avec une mémoire de 100 Ko.

Le CLDC a besoin d'un MIDP (Mobile Information Device Profil) fournissant un ensemble de classes tournant sur de petits terminaux pour mieux garantir la portabilité et l’interopérabilité du code entre les différents types de terminaux mobiles.

CONFIGURATION CLDC

MOBILE SENEGAL

Page 6: Java ME by Amdane Samb at BarCamp Goree, December 2010

6

Le MIDP (Mobile Information Device Profil) fournit un ensemble de classe et est destiné à la configuration CLDC.

Il prend en charge un nombre limité des classes de J2SE et définit des classes d'entrée / sortie et d'interface spécialisées pour une configuration CLDC.

PROFILE MIDP

MOBILE SENEGAL

Page 7: Java ME by Amdane Samb at BarCamp Goree, December 2010

7

INSTALLATION DES LOGICIELS

Logiciels : JAVA, Eclipse, WTK, plugin EclipseME

Installation: • Installation du plugin EclipseME (Eclipse feature)• Configuration du CLDC et du MIDP• Utilisation de WTK

MOBILE SENEGAL

Page 8: Java ME by Amdane Samb at BarCamp Goree, December 2010

8

REALISATION D'UN PROGRAMME J2ME

L‘ écriture du code repose sur :• L'extension de la classe MIDlet• Des méthodes obligatoires: startApp(), pauseApp(),

destroyApp()• L'interaction avec l’ utilisateur : Les classes

Command et CommandListener• Un ou plusieurs midlets dans une midletSuite

MOBILE SENEGAL

Page 9: Java ME by Amdane Samb at BarCamp Goree, December 2010

9

REALISATION D'UN PROGRAMME J2ME

Compilation : • Automatique dans Eclipse• monMIDlet.java

Packaging :• Un fichier .jar qui qui est format compressé du

programme contenant un fichier manifest, les fichiers .class, les éléments multimedias

• Un fichier .jad

MOBILE SENEGAL

Page 10: Java ME by Amdane Samb at BarCamp Goree, December 2010

10

REALISATION D'UN PROGRAMME J2ME

Le rôle de la MIDletSuite :

Dans MID (Mobile Information Device), l'AMS (Application Management Software) fournit un environnement pour l'installation, le start, le stop, et la mise à jour des midlets

L'AMS assure que les midlets de la même suite interagissent dans une une même JVM

MOBILE SENEGAL

Page 11: Java ME by Amdane Samb at BarCamp Goree, December 2010

11

PREMIER PROGRAMME J2ME

Nous allons écrire notre premier programme intitulé BonjourGoree

Pour cela executons Eclipse File New OtherJ2ME MIDletSuite Next BonjourGoree Next Finish

MOBILE SENEGAL

Page 12: Java ME by Amdane Samb at BarCamp Goree, December 2010

12

PREMIER PROGRAMME J2ME

// Les Bibliothèquesimport javax.microedition.lcdui.Command;import javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Form;import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;

public class BonjourGoree extends MIDlet implements CommandListener{

public BonjourGoree() {// TODO Auto-generated constructor stub}

protected void destroyApp( boolean arg0) throws MIDletStateChangeException {

// TODO Auto-generated method stub

}

MOBILE SENEGAL

Page 13: Java ME by Amdane Samb at BarCamp Goree, December 2010

13

PREMIER PROGRAMME J2ME

protected void pauseApp() {

// TODO Auto-generated method stub

}

protected void startApp() throws MIDletStateChangeException {

}

public void commandAction(Command arg0, Displayable arg1) {// TODO Auto-generated method stub

}

} //fin de l'application

MOBILE SENEGAL

Page 14: Java ME by Amdane Samb at BarCamp Goree, December 2010

14

PREMIER PROGRAMME J2ME

L' execution de ce bout de code donne le résultat suivant :

L'écran est entiérement vide donc c'est à nous d'y mettre du contenu

MOBILE SENEGAL

Page 15: Java ME by Amdane Samb at BarCamp Goree, December 2010

15

PREMIER PROGRAMME J2ME

Le contenu de mon écran peut être :• Form : des formulaires• TextBox : des zones de saisies• List : des listes d'éléments à choisir• Ticker : des textes défilant continuellement sur un écran• TextField : des champs de saisie• Item : des éléments pouvant être insérés dans une Form

ou une Alert• Alert : des alertes i.e. des messages attendant un laps de

temps pour passer à un autre écran• Command : des Commandes (Commands) correspondant

à des actions • …

MOBILE SENEGAL

Page 16: Java ME by Amdane Samb at BarCamp Goree, December 2010

16

PREMIER PROGRAMME J2ME

MOBILE SENEGAL

Page 17: Java ME by Amdane Samb at BarCamp Goree, December 2010

17

PREMIER PROGRAMME J2ME

MOBILE SENEGAL

Page 18: Java ME by Amdane Samb at BarCamp Goree, December 2010

18

PREMIER PROGRAMME J2ME

L‘ execution de ce bout de code donne le résultat suivant :

Commande"OK"

MOBILE SENEGAL

Titre de la Form "Gorée BarCamp

Page 19: Java ME by Amdane Samb at BarCamp Goree, December 2010

19

PREMIER PROGRAMME J2ME

Ce bout de code nous permet d'avoir un champ de texte dans notre Form

MOBILE SENEGAL

Page 20: Java ME by Amdane Samb at BarCamp Goree, December 2010

20

PREMIER PROGRAMME J2ME

Notre champ de saisi

MOBILE SENEGAL

Page 21: Java ME by Amdane Samb at BarCamp Goree, December 2010

21

PREMIER PROGRAMME J2ME

MOBILE SENEGAL

Page 22: Java ME by Amdane Samb at BarCamp Goree, December 2010

22

PREMIER PROGRAMME J2ME

Nous remarquons ici que notre choiceGroup prend comme option BUTTON et permet d'avoir une liste avec des boutons à cocher

Cependant, il existe d'autres types d'options tels que :• EXCLUSIVE : un choix exclusif sur une liste• MULTIPLE : un choix multiple sur une liste d'éléments• …

MOBILE SENEGAL

Page 23: Java ME by Amdane Samb at BarCamp Goree, December 2010

23

PREMIER PROGRAMME J2ME

Liste à choix multipleListe exclusive

MOBILE SENEGAL

Page 24: Java ME by Amdane Samb at BarCamp Goree, December 2010

24

PREMIER PROGRAMME J2ME

Un champ DateField

Un champ de Gauge

MOBILE SENEGAL

Page 25: Java ME by Amdane Samb at BarCamp Goree, December 2010

25

PREMIER PROGRAMME J2ME

Comme nous l'avons vu dans les écrans précédents, MIDP dispose d'un ensemble de classes et bibliothèques pouvant nous servir pour faire un programme adapté à notre quotidien

MOBILE SENEGAL

Page 26: Java ME by Amdane Samb at BarCamp Goree, December 2010

26

WMA

La Wireless Messaging API est un packages optionnel en MIDP et offre des capacités de messageries aux MIDP

Ils assurent les mécanismes d'envoi et de réception de messages et sont contenus dans le package java.wireless.messaging

WMA est basé sur le CLDC et constitue une sous interface de Connection: MessageConnection

Pour l'envoi des messages, MessageConnection utilise des méthodes de type "factory" pour créer des objets

Pour la réception, il utilise un mécanisme basé sur les eventListener

MOBILE SENEGAL

Page 27: Java ME by Amdane Samb at BarCamp Goree, December 2010

27

WMA

Les objets Messages doivent implémenter l'interface Message

Un Message est composé d'une partie adresse et d'une partie donnée.

La partie données peut être du texte ou des données binaires

MOBILE SENEGAL

Page 28: Java ME by Amdane Samb at BarCamp Goree, December 2010

28

WMA

import java.io.IOException;import javax.microedition.io.Connector;import javax.microedition.lcdui.Command;import javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Form;import javax.microedition.lcdui.Gauge;import javax.microedition.lcdui.Ticker;import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;import javax.wireless.messaging.MessageConnection;import javax.wireless.messaging.TextMessage;

MOBILE SENEGAL

Test avec WTK

Page 29: Java ME by Amdane Samb at BarCamp Goree, December 2010

29

WMA

public class BonjourGoree extends MIDlet implements CommandListener{

//Creation d'un form private Form goreeForm;private Command mSend;private Command mExit;private Display myDisplay;

public BonjourGoree() {

}protected void destroyApp(boolean arg0) throws MIDletStateChangeException {

}MOBILE SENEGAL

Page 30: Java ME by Amdane Samb at BarCamp Goree, December 2010

30

WMAprotected void pauseApp() {

}

protected void startApp() throws MIDletStateChangeException {

goreeForm = new Form("Goree Bar Camp Envoi de Sms");

//Initialisation des commandes d'envoi et de sortiemExit = new Command("Quitter", Command.EXIT, 1);mSend = new Command("Envoyer", Command.SCREEN, 0);

goreeForm.addCommand(mExit);goreeForm.addCommand(mSend);

goreeForm.setCommandListener(this);

// Utilisation d'un TickergoreeForm.setTicker(new Ticker("Gorée BarCamp 2010"));

myDisplay = Display.getDisplay(this);myDisplay.setCurrent(goreeForm);

}

MOBILE SENEGAL

Page 31: Java ME by Amdane Samb at BarCamp Goree, December 2010

31

WMApublic void commandAction(Command arg0, Displayable arg1) {

if(arg0 == mSend){new Thread (new Runnable(){

public void run() {sendText("+5550001","Bienvenue à Gorée");}

}).start();}else if(arg0 == mExit){try {destroyApp(true);} catch (MIDletStateChangeException e) {

e.printStackTrace();}

notifyDestroyed();}

} MOBILE SENEGAL

Page 32: Java ME by Amdane Samb at BarCamp Goree, December 2010

32

WMApublic void sendText(String address, String text) {

MessageConnection mc;try {mc = (MessageConnection) Connector.open("sms://" + address);

TextMessage tm = (TextMessage) mc.newMessage(MessageConnection.TEXT_MESSAGE);

tm.setPayloadText(text);mc.send(tm);} catch (IOException e) {e.printStackTrace();}

}

}MOBILE SENEGAL

Page 33: Java ME by Amdane Samb at BarCamp Goree, December 2010

33

WMA

MOBILE SENEGAL

Page 34: Java ME by Amdane Samb at BarCamp Goree, December 2010

34

WMA

MOBILE SENEGAL

Page 35: Java ME by Amdane Samb at BarCamp Goree, December 2010

35

LES WMA

De la même maniére, il exite une méthode de réception des messages. Mais cette fois, on implémente MessageListener et on crée une méthode notifyIncommingMessage().

MOBILE SENEGAL

Page 36: Java ME by Amdane Samb at BarCamp Goree, December 2010

36

LES RMSLes RMS (Record Management System) sont des mécanismes de stockage persistants. Ce sont des modèles très simples et utilisent des enregistrements. Il sont gérés par le package java.microedition.rms.

Une telle base de données est appelée RecordStore et est modélisée par une classe de même nom. Elle posséde des opérations usuelles telles que add, delete, get, set,…

Dans une MIDletSuite, plusieurs RecordStore peuvent coéxister, avec la possibilité de communiquer entre eux.

Dans un RecordStore, toutes les opérations sont atomiques et chaque enregistrement possède un identifiant, le recordId de type entier.MOBILE SENEGAL

Page 37: Java ME by Amdane Samb at BarCamp Goree, December 2010

37

LES RMS

L'utilisation des RecordStore repose sur: openRecordStore(…) closeRecordStore(…) Des méthodes Des interfaces

MOBILE SENEGAL

Page 38: Java ME by Amdane Samb at BarCamp Goree, December 2010

38

LES RMS

L'interface RecordListener gére la réception des opérations de records par les méthodes:

public void recordAdded(RecordStore recordStore,int recordId) public void recordChanged(RecordStore recordStore,int

recordId) public void recordDeleted(RecordStore recordStore,int

recordId)

MOBILE SENEGAL

Page 39: Java ME by Amdane Samb at BarCamp Goree, December 2010

39

REFERENCES

J2ME (MIDP) de A. HANGAY et Y. Guyomarch

Mobile Training de Dr. Christelle SCHARFF

http://mobilesenegal.com

MOBILE SENEGAL