Professional Documents
Culture Documents
mobiles sous
JAVA Micro Edition J2ME
Attariuas Hicham
ENSAT
c
]ré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.
1. JavaCard : pour le développement sur des cartes à puces
2. EmbeddedJava : systèmes embarqués
3. PersonnalJava : pour le développement sur des machines possédant au
moins 2mo de mémoire
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.
a ]lateformes Java
Java 2 ]latform
a
Java 2 Micro Edition
Exemple de systèmes mobiles et de
systèmes embarqués
_ SmartCard/Carte à ]uce
_ Cellular ]hone/Téléphone mobile
_ ]alm]C, ]ocket]C/Assistant ]ersonnel
_ eBook, Cartable Electronique
_ Appareil photo, Ʀ
_ Set Top Box/Decodeur TV Numérique
_ Game Console/Console de Jeu
_ Electronic Consuming/Electronique
_ Terminal de paiement, Guichet, ]arcmètre
_ Home ]ortal/]ortail maison
_ Car/Voiture
_ Wearable computer (Augmented Reality)
_ ]rothèse active
_ Satellite ...
Contraintes matérielles des mobiles
ƥClavier et pointage rudimentaire: tablette sensible, écran tactile, ]AD, entrée de texte
ƥCommunication (?): Série (IrDA, station dƞaccueil USB ou RS2a2), Réseau LAN,
Wireless LAN, CellulaireƦ)
·
Configurations et ]rofils 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.
ƥ 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.
X
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'A]I de base.
ù
Les profiles
j
!"#$
%
& ' (
)
Profil Configuration
x
Exemples
Avant de pouvoir développer sur un mobile il faut connaître sa configuration et ses profils
quƞil peut supporter:
Wireless Frequency
Manufacturer Model Software Screen
Technology (MHz)
`
Xa
x cù `c cùcùc
c
`aùù x cù cx c c a c·
X·c ù x cù cx c cX· ùc·
c
c x cù cx c c cùc· c·
" x ù x cù cx # ùa c·
ccc`!c
c `cc
c
Les VM
" (SUN) pour CLDS
* " (SUN) pour CDC
" " (H]) : Support KVM (processeur 16 ou a2 bits, ]almOS (64 k), Linux,
]ocket]C/SHa /Strong ARM
- " (IBM) : machine virtuelle pour lƞembarqué. OS: ]almOS, HardHatLinux, WinCE. ß?:
X86, ARM, Strong ARM, MI]S, ]ower]C..
cc
]rofile MID]
(Mobile Information Device ]rofile)
MID] est un profile standard défini pour un ensemble de machines embarquées
possédant des ressources et une interface graphique limitée.
http://java.sun.com/products/midp/ :
c
Applications MID]
º Toute application MID] doit dériver dƞune classe spéciale:
MIDlet
º Développement (javac
(javac),
), ]reverify (KVM), ]ackaging (.jar),
Description/Déploiement (.jad
(.jad))
ca
Structure de lƞA]I
Displayable
Low level A]I (jeux)
c
]rogrammation dƞune MIDlet
º Une application MID] doit être une sous
sous--classe de la
classe MIDlet :
?
""
""
. "+
/01
º ® "+
"+
&
"+
"+
$)
$)
c
Architechture dƞun programme MIDlet
(1)
""
. "+
/
""
$)/
223
1
$)/
22
""
$
)
1
c·
Architechture dƞun programme
MIDlet(2)
cX
9 #.
HelloSupcomMIDlet.java c2!
cù
!2!
cx
â Afficher un texte qui défile: utilisation de la classe Ticker: HelloSupcomMIDletbis.java
9 . #.
c2!
SimpleListe1.java
c
!2!
Remarque sur le constructeur de la classe List: new 3(String title,
: , Ʀ)
(SimpleListe1.java)
(SimpleListe2.java)
(SimpleListea.java)
a
Action après choix dans une liste: #.
;j
3 <6 c2!
!2!
Forms et Items
·
Diagramme des Items
X
Example 4 (1/2)
Form1.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
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);
}
ù
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());
}
x
Image et ImageItem
ƥ*
ƥ ;
6
, 3
&
ƥ ;
& =#
&
&$ 4 4
4 )
ƥ"+ . & ;
ƥ
; $
& .
)
ƥ
; >
&
a
Affichage dƞune image
* ;
Image createImage(String name)
=;
ac
Exemple 5 (1/2)
?
6
a
Exemple 5 (2/2)
aa
Les Threads
ƥUtilisés pour faire du multitâche:
]endant 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".
a
Les Threads
Création dƞun Thread dans une Midlet
a
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.
a·
MID] 2.0
® C$
!DDA)
E9
E"
;"
" $"")
E
E ?FB
E F
6.
F *43 " 43 4
:
3 4j
aX
MID] 2.0
ƥ Sécurité
ƥ HTT]S
ƥ ]KI (Certificats)
ƥ JAR signé
La signature et la clé publique sont ajoutés au JAD
ƥ ]ermissions
Nouvelles entrées du JAD : MIDIet-]ermissions, MIDIet-]ermissions-Op
aù
Messaging
ƥ SMS, ...
ax
Multimédia
ƥMobile Media A]I (MMIA)
ƥSon,MIDI, Vidéo, streamingƦ
ƥEn remplacement de JMF (trop gros 650k, awt)
ƥCompact: 150K (MIDI, M]EG1, M]a,Ʀ)
á á
á
! & á'!
!
!
&-.- $
Mobile Media A]I (MMIA)
Introduction
j;
c
Gestion/Traitement du contenu
Deux parties:
ƥGestion du protocole (Protocol Handling): Lire les données dƞune source, exemple:
fichier, serveur(réseau), streaming.
â Trois classes:
ƥ
;3
& 4
ƥ" ;
46
4
ƥ+j ;+ &
$ 44)
G
+j $
.
)
Manager
*&
'
(
;
$+j )
$j 4j )
$j
)
a
]layer
ƥCréé avec Manager
ƥ]ermet de restituer un contenu multi-media
*3Gj#+;
4
ƥ
I $)
ƥ $)
]assage dƞun état à un ƥ$)
autre: ƥ$)
ƥ
$)
ƥ
$)
]layer(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:
8=8
·
Exemple 6 (2/2)
X
Exemple 7 (1/2)
Video]layer1.java
0
ù
Snapshot (capture dƞune image)
Vidéo lue â capturer une image
Exemple:
VideoControl vc;
byte[] snapshot;
ImageItem imi;
snapshot = vc.getSnapshot("encoding=jpeg");
Image im = Image.createImage(snapshot, 0, snapshot.length);
x
Application
EN T]:
Video]layer2.java
Video]layera.java
Déploiement
9 "
6
;
Dans les deux cas : il faut créer un package dƞinstallation .jar (archive) {.class , images,
fichiers etc..} et .jad (description))
c
Exemple
hello1.jad
(En locale copier hello1.jar et hello1.jad sur le mobile (par liaison USB,
Blutooth etc..) et exécuter hello1. )
Exemple OTA(1)
j
j#? #9?
9?3;;22K 2 2
c
ƥCopier les fichiers .jar et .jad dans le répertoire des applications WEB
ƥÉcrire hello1.html qui contient un lien vers hello1.jad
Hello1.html
P
Q
P Q
P
Q
cP2
Q
P2 Q
P Q
P %J;22
;ODOD2 2
c6 JQ
c6 P2Q
P2 Q
P2
Q
a
Exemple OTA(2)
j
"
1 2 a 4
5 6 7 8
Outils de développement
º Quelques outils
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 a.2
º Motorola LWT1.0
Sun ONE Studio Mobile Edition
·
BlackBerry Java Development
Environment
X
Nokia Developerƞs Suite & CodeWarrior
ù
J2ME Wireless Toolkit
x
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
·
Création dƞune Midlet(1)
« DémarrerâprogrammesâJ2ME Wireless Toolkit 2.2âKToolbar »
New]roject: hello
« Settings »
Nom
Nom classe
(fichier .java)
·c
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: « ]rojectâBuild »
Exécuter: « ]rojectâRun »: exécution sur lƞémulateur
JAR: « ]rojectâpackageâcreate package »: création du .jar
·
Création dƞune deuxième Midlet
Nous allons rajouter au projet hello une deuxième midlet: HelloSupcomMIDletbis
Build + RUN â
Exécution avec choix
Midlet à exécuter
·a
G9j+# G9#?
·