J.2.ME Java 2 Micro Edition Objectifs

Transcription

J.2.ME Java 2 Micro Edition Objectifs
J2ME
Janvier 2001
J.2.M.E
Java 2 Micro Edition
Michel RIVEILL
Université de Nice – ESSI
Email : [email protected]
1
Objectifs
n
n
n
Présenter les différentes
configurations et profils de J2ME
Présenter quelques aspects
techniques liés à KVM, CLDC et MIDP
Présenter l’environnement de
développement J2ME
2
1
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Présentation de J2ME
Configurations et profils
3
Diversité des terminaux…
et java
n
Une grande variété de
terminaux
¡
¡
¡
¡
¡
¡
n
Un seul langage de
programmation : Java
¡
PCs
PDAs
Téléphones
Pageurs
Terminaux embarqués
Cartes
¡
¡
¡
¡
La seule de manière de
programmer sur certains
terminaux
Partager le même langage,
la même conception depuis
le terminal jusqu’aux
serveurs
Permet le chargement
dynamique de code
Programmes compacts et
portables
Développement rapide et
sûr
4
2
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Architecture d’une application
sur terminaux mobiles
Version 1 Version 2
serveur
Serveurs
J2EE
TCP/IP
PCs
JDK 1.1.x
PDAs
PersonnalJ J2ME/CDC
ava
Téléphone
s
J2SE
PC
TCP/IP, WSP
J2ME/CLD
C
Terminaux
embarqués
Embedded
Java
J2ME/CLD
C
Cartes
JavaCard
JavaCard
série,
USB
Bluetooth,
802.11, IrDA
Terminal ‘léger’
Terminal ‘léger’
5
Naviguer dans le monde Java
n
J2EE : Java 2 plateform, Enterprise Edition
¡
n
J2SE : Java 2 plateform, Standard Edition
¡
n
Solutions pour les postes clients : applications autonomes,
applets, …
J2ME : Java 2 plateform, Micro Edition
¡
n
Solutions pour les entreprises : E-commerce, E-business
Solutions pour les terminaux embarqués : téléphones,
PDAs, TV box, …
Les différents environnements sont basés sur le
même langage Java mais avec
¡
Différentes JVMs et différentes APIs
6
3
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Pourquoi 2JME ?
n
Le nombre de terminaux ‘légers’ dépassera
largement celui des ordinateurs personnels
¡
¡
311.000.000 de PCs en 2001
1.000.000.000 de terminaux ‘léger’ en 2003
n
n
Il sera nécessaire de télécharger des logiciels sur
les terminaux légers
¡
n
30 à 50 % de ces terminaux seront connectés à Internet
Être capable d’adapter les services à la très grande
variété des équipements
J2ME est la plate-forme pour le développement de
service sur ces terminaux
7
J2ME
Configurations et profiles
n
Une seule plate-forme J2ME ne peut couvrir tous les besoins
¡
¡
n
Les terminaux sont trop différents
Les besoins applicatifs sont très variables
Configurations
¡
¡
Bibliothèque minimale et JVM
2 configurations
n
n
n
Profils
¡
¡
Bibliothèques pour des terminaux particuliers ou un domaines
applicatifs
Profils existants :
n
n
n
CLDC : connexion limitée
CDC : connecté
MIDP
Foundation, Bluetooth, Personal, …
Configurations et profils sont définis par la ‘Java Community
Process’
8
4
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Configuration
n
Une configuration définie une machine
virtuelle et un ensemble de bibliothèques
minimaux pour
¡
n
Un ensemble de terminaux qui possèdent des
caractéristiques similaires (tailles mémoires,
capacité du processeur, etc)
Elles sont définies par le ‘Java Community
Process’
¡
¡
Test de compatibiltés
2 configurations sont disponibles
n
n
Connected Limited Device Configuration (CLDC)
Connected Device Configuration (CDC)
9
Profils
n
Un ensemble d’APIs qui complètent la
configuration pour définir des bibliothèques
pour
¡
¡
n
n
Un domaine applicatif
Un type de terminaux
L’objectif est de donner plus de flexibilité
pour maintenir la portabilité des applications
entre les terminaux
Ils sont définis par le ‘Java Community
Process’
¡
Test de compatibiltés
10
5
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Plateforme Java 2
Bibliothèques
aditionelles
Va faire l’objet de
la suite de l’exposé
Bibliothèques
aditionelles
Profil
Profil
Personnel RMI
J2EE
J2SE
Autre
Profile
Fondation
profil
Profil pour les
équipements mobiles
CDC
CLDC
JavaCard
APIs
Langage de programmation Java
Java
HotSpot
JVM
KVM
CardVM
11
Les APIs Java pour les
mobiles
* En cours de définition
JavaPhone
Personnal
Java
(JVM)
Profil Profil
personnel*PDA*
Profil
MID
Fondation
Profil
APIs Bluetooth
Profil
PDA*
RMI Profile*
APIs Bluetooth
CDC (CVM)
CLDC (KVM)
PDAs
Haut de gamme
Profil
MID
PDAs
Bas de gamme
Java Card
Cartes SIM
et téléphone
12
6
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Les configurations…
n
n
n
Connected Limited Device
Configuration (CLDC)
Spécification définies dans
JSR-000030
Pour les terminaux avec
¡
¡
¡
¡
n
128 KB – 512 KB de mémoire
(RAM+ROM)
Battery
Connectivité réseau
Interfaces utilisateurs
contraintes
n
n
Connected Device
Configuration (CDC)
Spécification définies dans
JSR-000036
¡
¡
¡
¡
n
Pour les terminaux avec
¡
On peut télécharger les
spécifications et
l’implémentation de référence
JSR 36 (PersonnalJava)
JSR 46 (fondation)
JSR 62 (personnel, nouvelle
version du JSR 36)
JSR 66 (RMI)
¡
¡
¡
¡
512 KB ROM minimum
256 KB RAM minimum
Connectivité réseau
Supporte une JVM complète
Interfaces utilisateurs
contraintes
13
Profil pour les terminaux
mobiles
n
n
n
Le premier profil J2ME défini
Les terminaux cibles implémentent CLDC
Le profil défini
¡
¡
¡
¡
¡
n
Affichage
Gestion de données persistantes
Envoie de message (SMS, email, etc)
Sécurité
Réseaux sans fils
Implémentation de référence disponible
14
7
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Exemples
Votre
MIDIlet
Annuaire, horaires de train, jeux, …
Profil pour
terminaux
mobile
IHM, HTTP networking, …
J2ME
CLDC = KVM + J2ME
KVM
Exemple ARM :
Processeur DSP
32-bit RISC, 256 K ROM, 256 K Flash, 64 K RAM
15
Profil J2ME
Profil
Configuration
JSR# JCP état
MID
CLDC
37
Version finale
Fondation
CDC
46
Version finale
proposée
Personnel
CDC
62
Groupe d’experts
formé
PDA
CLDC
75
Groupe d’experts
formé
Bluetoth
CLDC
82
Groupe d’experts
formé
RMI
CDC
66
Version finale
proposée
8
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
16
J2ME
Janvier 2001
Java technologies
n
Téléphones
¡
n
Liste disponible à http://www.javamobiles.com
PDAs
PalmOS
MIDP pour Palm
(Sun)
J2ME MIDP
Windows CE 2.11
Peronal Java
Runtime (Sun)
IBM J9
PersonalJava
PalmOS,
WindowsCE
…
Différentes
bibliothèque
17
CLDC et KVM
Connected Limited Device
Configuration
K Virtual Machine
18
9
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Terminaux cibles
n
n
n
n
n
128 – 512 KB de mémoire
Vitesse du processeur : 16 – 32 MHz
Fonctionnement sur batterie
Communication réseau limitée : 9600
bps
Très large diffusions des terminaux
¡
PDAs, Téléphones, …
19
Objectifs
n
Définir un ensemble de technologie Java
homogène pour une large gamme de
terminaux ayant des contraintes techniques
¡
n
Mémoire, énergie, vitesse processeur, taille
écran, connection réseau
Permettre la diffusion d’application sur ces
terminaux de manière sûres, dynamiques,
flexibles, évolutives, …
¡
¡
Construction d’application selon des architecture
3 parties
Travail en collaboration avec les fournisseurs de
terminaux mais aussi les fournisseurs
d’applicatifs
20
10
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Domaine de couverture de
CLDC
n
Pris en charge
¡
¡
¡
¡
¡
n
Machine virtuelle Java et langage Java
Modèle de sécurité
Entrée / sortie
Support réseau
Internationalisation
Pas pris en charge
¡
¡
¡
¡
¡
¡
Cycle de vie et installation des applications
Support des IHM
Gestion des événements
Modèle applicatifs de haut niveau
Accès au base de données
Ces aspects sont définis dans des profils comme MIDP
21
KVM
n
‘petite’ machine virtuelle Java construite pour les
terminaux contraint
¡
Qq dizaines de kilobytes
n
n
Implémentation modulaire en C : 24.000 lignes de code
40 à 80 kB (taille statique) selon les options de compilation
¡
n
n
¡
Comprend les parties communes de J2ME
n
Compatible avec JVM (avec qq restrictions)
¡
¡
¡
¡
taille vs vitesse, mise au point
Sur PalmOS et Win32 environ 60 kB
Fonctionne ) 30-80 % de la vitesse du JDK (sans JIT)
Pas de gestion des flottants (qui n’existent pas sur les
processeurs visés)
Gestion spécifiques des fils d’exécution (thread)
Possibilité de porter facilement l’algorithme de GC
CLDC fonctionne sur la KVM
22
11
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Principales restrictions
n
JNI
Réflexion
Groupe de fils d’exécution
Référence légère
Finalisation
Support incomplet des erreurs
Nouvelle implémentation du chargeur (classfile)
n
Il existe une implémentation de référence du CLDC 1.0
n
n
n
n
n
n
¡
¡
¡
¡
Win32
PalmOS
Solaris
De nombreux autres portages de la KVM et de CLDC ont été
fait.
23
Bibliothèque CLDC
n
Classes héritée de J2SE
¡
¡
¡
n
Nouvelles classes
¡
n
Javax.microedition.io.*
CLDC Internationalization
¡
n
Java.lang.*
Java.io.*
Java.util.*
InputStreamReader( InputStream ); InputStreamReader( InputStream ,
String ); OutputStreamWriter( OutputStream ); OutputStreamWriter(
OutputStream, String );
Propriétés CLDC
¡
¡
¡
¡
microedition.platform
microedition.encoding
microedition.configuration
microedition.profiles
24
12
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Support réseau
n
Les bibliothèques J2SE réseau, IO et stockage sont
trop grosses pour les terminaux visés
¡
¡
n
Elles n’ont jamais été construites pour ces
terminaux
¡
¡
n
Plus de 100 classes
Plus de 200 kB
TCP/IP doit être disponible
Pas ou peu de possibilité pour introduire de nouveaux
protocoles : Bluetooth, IrDA
Introduction de nouvelles classes (Generic
Connection Framework)
¡
¡
¡
Plus cohérentes
Support de différents types de protocoles, extensibles
Compatibilité avec les bibliothèques existantes
25
Generic Connection
Framework
n
6 interfaces de bases
¡
¡
¡
¡
n
Input série
Output série
Communication par
datagramme
Communication par circuit
virtuel
n
CDLC ne défini pas de
protocole de communication
¡
n
C’est le rôle des profils
L’implémentation de référence
possède qq protocoles
¡
Peut servir de point de départ
TCP, connection HTTP légère
Connection
input
Stream notifier
output
datagramme
stream
content
13
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
26
J2ME
Janvier 2001
Exemple de connection
n
Forme générale
¡
n
HTTP
¡
n
Connector.open("socket://129.144.111.222:90
00");
Ports séries
¡
n
Connector.open("http://www.codecamps.com");
Sockets
¡
n
Connector.open(« <protocol>:<path>:<paramet
ers>");
Connector.open("comm:0;baudrate=9600");
Fichiers
¡
Connector.open("file:codecamps.dat");
27
Sécurité
n
Impossibilité d’implémenter le modèle de
sécurité de J2SE
¡
n
Sa taille est supérieur au CDLC
Modèle de sécurité du CDLC
1.
Niveau de la machine virtuelle
n
n
2.
Une application s’exécutant sur la VM ne doit pas
pouvoir causer de dommage au terminal
Nouveau Classfile vérificateur certifié
Niveau applicatif
n
n
n
Une partie seulement de l’API Java est disponible
Un programme ne peut pas surcharger certaines
classes standards
L’accès aux fonctions natives n’est pas autorisé
28
14
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Certification des classes
Station de développement
Myappp.java
Terminal d’exécution
download
javac
Myappp.java
vérificateur
prévérificateur
interpréteur
Myappp.java
29
Télécharger le CLDC
n
http://java.sun.com/product/cldc
¡
¡
¡
¡
¡
¡
Binaires et sources pour KVM et prévérificateur
Classes CDLC
Documentation
Exemples
Source pour JAM et Java technology Code
Compact
Com.sun.kjava
n
n
bibliothèque non supportée : IHM, cycle de vie
Les applications utilisent généralement
¡
MIDP ou Wireless toolkit
30
15
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
MIDP
Mobile Information Device Profile
n
Le premier profil J2ME (JSR-0037)
¡
n
Les terminaux visés doivent supporter
CLDC
Objectifs
¡
¡
¡
Tolkit de visualisation, input
Gestion de données persistantes
Messages
n
¡
¡
SMS, email
Sécurité
Connexion par réseau sans fils
31
Caractéristiques du terminal
n
Affichage
¡
n
Entrée
¡
n
Un ou deux ‘clavier’, écran tactile optionnel
Mémoire
¡
¡
¡
n
Taille de l’écran : 96x54 pixels
128 kb non volatile pour MIDP composants
8 kb non volatile pour les données persistantes
32 kb volatile pour le runtime java (pile, tas, …)
Réseau
¡
Connexion full-duplex, intermittente, sans fils,
débit faible
16
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
32
J2ME
Janvier 2001
objectifs
n
Définir une architecture et les APIs
associées pour l’écriture d’application
pour des terminaux mobiles
¡
n
La simplicité est recherchée, parfois au
détriment de la complétude
En dehors des objectifs
¡
¡
¡
¡
Installation de l’application sur le device
Modèle de sécurité applicatif
Besoins spécifiques des applications
Les différents détails d’implémentation
33
architecture
applications
applications
MIDP
applications
Classes
OEM
CLDC
logiciel natif
Terminal mobile
17
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
34
J2ME
Janvier 2001
Administration d’application
n
Le MIDP permet la gestion des
applications
¡
¡
¡
En les adaptants aux caractéristiques
des terminaux
En permettant l’installation, la suppresion
via un réseau sans fils ou un serveur web
En permettant l’évoluytion d’une MIDlet
35
Hypothèses
n
MIDP fait les hypothèses suivantes
¡
¡
¡
¡
¡
existence un noyau minimal qui gère le matériel
avec au moins un fils d’exécution exécutant la
machine virtuelle Java
existence un mécanisme permettant de lire et
d’écrire en mémoire non-volatile
Capacité minimale pour utiliser un écran bitmap
(même réduit)
Capacité permettant de lire et d’écrire via un
périphérique sans fils
existence de dates pouvant être utilisées pour le
stockage des données
36
18
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Bibliothèques de classes
n
Gestion du cycle de vie de l’application
¡
n
IHM
¡
n
Javax.microedition.rms
Accès réseau
¡
n
Javax.microedition.lcdui
Gestion de la persistance
¡
n
Javax.microedition.midlet
Javax.microedition.io
Langage
¡
¡
Java.lang
Java.util
37
MIDP Application
MIDlet
n
MIDlets
¡
¡
¡
n
Ont un cycle de vie bien déterminé
Fournissent des informations sur elles-mêmes
Étendent javax.microedition.midlet.MIDlet
MIDlets persistantes
¡
¡
¡
Résident, au moins pour partie, dans la mémoire
non-volatile (ROM ou EEPROM)
Peuvent être téléchargée et recopiée dans la
mémoire persistante du MID
Une fois installée, elles peuvent exécutées
plusieurs fois sans nouvelle installation
38
19
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Interaction avec les utilisateurs
n
Les MIDlets sont généralement des applications dialoguants
avec l’utilisateur
¡
n
n
¡
¡
¡
¡
n
Celui-ci est pris en compte dès le début de la conception
APIs définies dans javax.microedition.lcdui
API de haut niveau, portable
Orientée écran et widget
Une application utilisant cette API pourra s’exécuter sur tous les
terminaux
Ne pas accéder directement aux attributs des terminaux
(couleurs, tailles, entrée)
Plus simple et plus puissant que AWT
API de bas-niveau
¡
¡
¡
Primitives de dessin
Événements claviers
L’utilisation compromet la portabilité de l’application
39
Gestion de la persistence
n
n
n
n
n
n
n
n
Permet uniquement l’enregistrement de structure
(RMS)
API indépendante des terminaux
API définie dans javax.microedition.rms
Un enregistrement est un tableau de bytes
Les enregistrements de l’application peuvent être
sauvegarder en mémoire
Les enregistrements en mémoire peuvent être
partagés entre les applications
Support pour les énumérations et les ensembles
(sorting, filtering)
Mise à jour atomique des enregistrements simples
40
20
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Entrée-sortie
n
n
n
Implémente les spécifications du
CLDC
Défini javax.microedition.io
Peut ouvrir des connections HTTP
(RFC2616)
41
Utilitaires MIDP
n
Classes et interfaces très utiles
¡
Spécifié dans java.util
n
n
n
n
n
n
n
n
Calendrier
Date
Enumération
Table de hachage
Tirage aléatoire
Pile
alarme (timer,timerTask)
vecteur
21
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
42
J2ME
Janvier 2001
internationalisation
n
n
Support des caractères ISO Latin 1
(ISO8859-1)
Peut être adapté en fonction du
terminal dans microedition.locale
¡
¡
Chaque terminal doit fournir ses propres
classes
Les applications sont constituées d’un
ensemble de fichiers jar
43
Pour télécharger le MIDP
n
http://java.sun.com/products.midp
¡
¡
¡
¡
n
Émulateur sous forme binaire (windows )
Classes et sources pour bibliothèques (java & C)
Documentation (pdf et javadoc)
Examples
Status
¡
¡
¡
¡
¡
¡
¡
MIDP 1.0 spec., RI and TCK available
MIDP for Palm OS in development – Based on MIDP 1.0
specification
– To be available later this year
• MIDP RI 1.0.2 in development – Based on MIDP 1.0
specification
– To be available later this year
• J2ME Wireless Toolkit 1.0.2 in development – Based on CLDC
RI 1.0.2 and MIDP RI 1.0.2
– To be available later this year
44
22
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Les évolutions…
n
n
n
n
n
n
n
n
n
n
n
MIDP NG JSR submitted
– http://java.sun.com/jcp/jsr/jsr_118_midpng. html
– Final spec, RI and TCK should be available within 6 to 9
months (H1 2002)
– Commercially available on real devices in H2 2002
• MIDP NG specification goals – Backward compatibility with
MIDP 1.0 specification
– Continued focus on small, high- volume wireless phones
– Maintain tight footprint objectives to limit growth in the core
APIs
– Information learned from MIDP 1. 0 deployments to fine tune
MIDP 1.0
APIs
– Focus on core functions needed by all devices and
applications
– Focus on enabling mCommerce, service- based applications
45
Nouvelles fonctionnalités
n
n
n
n
n
n
n
n
n
n
n
Domain security model, including signing of applications and
verification of certificates
• HTTPS and secure networking
• Network connectivity via sockets and datagrams
• Formal inclusion of OTA Provisioning
• Push architecture: external events and messages routed to
appropriate MIDlets
• User Interface - extensions to low- level LCDUI to allow
greater
game functionality and layout control for larger screen sizes.
• A small, efficient XML parser to enable platformindependent
data exchange
• Base sound API
46
23
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Cycle de vie d’une MIDlet
New()
1.
2.
3.
Recherche de l’appli
Installation
Chargement
1.
2.
3.
paused
Création d’une instance
Initialisation
Terminaison
DestroyApp()
4.
Gestion de version
n
Le logiciel d’administration PauseApp()
¡
¡
¡
n
destroyed
StartApp()
installe les MIDlets sur les
terminaux
vérifie la sécurité
met à jour la version de l’appli
si nécessaire
DestroyApp()
MIDP défini les mécanismes
nécessaire
¡
Formats des Jar et Jad,
MIDlet descripteurs dans
javax. microedition. midlet
active
47
MIDP cycle de vie des
applications
serveur
MIDlet
transférer
publier
créer
installer
MIDlet
Environnement
de développement
MIDlet
terminal
24
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
détruire
48
J2ME
Janvier 2001
Transfert de l’application
n
n
Le MID transfère la MIDlet depuis un serveur
Le médium de transfert doit être identifier
¡
¡
¡
n
Une négociation à lieu entre le MID et le serveur
¡
¡
¡
n
Cable série
Port Infra Rouge(IrDA)
Réseau sans fils
Caractéristiques du terminal
Taille de l’application
Coût du transfert
Le transfert recopie la MIDlet dans la mémoire du
terminal
¡
¡
Vérification de la sécurité
Transformation du code de la MIDlet du format public au
format du terminal
49
exécution d’une MIDlet
n
¡
n
New()
Chargement
Installe la MIDlet dans la KVM
Nouvelle version
¡
¡
¡
paused
Une nouvelle version peut être
installée après l’installation
Le logiciel d’administration contrôle
les MIDlets installées et leur
numéro de version
Cette information est utilisée pour
changer de version
DestroyApp()
destroyed
PauseApp()
StartApp()
¡
n
Les attributs des MIDlets (versions,
dates, etc.) sont contenus dans le
descripteur lui même inclus dans le
fichier JAR.
DestroyApp()
Suppression d’une application
¡
La suppression de l’image de la
MIDlet provoque aussi, si possible
la suppression des ressources
liées et des données écrites en
mémoire persistantes
active
50
25
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
MIDlet jar
n
n
Un jar peut contenir plusieurs MIDlets
Chaque MIDlet et fichier jar est accompagné d’un
descriteur
¡
¡
¡
¡
¡
Verifier que la suite de MIDlet peut être téléchargée
Définir les attributs de configuration
Permettre le transfert simultané de plusieurs MIDlet
Les descripteurs sont stockés dans des fichiers jad
Le type MIME d’un fichier .jad est
n
¡
Text /vnd.sun.j2me.app-descriptor
Pour configurer un navigateur
n
n
n
n
Description: MIDP app descriptor MIDP app descriptor
MIME Type: text/vnd.sun.j2me.app-descriptor
Extension: jad
Application: d:\midp\midp.exe -transient file://%1
51
Exemple de descripteurs
n
n
n
n
n
n
n
n
n
n
n
n
n
n
MIDlet-Name: SunSamples
MIDlet-Version: 1.0
MIDlet-Vendor: Sun Microsystems, Inc.
MicroEdition-Profile: MIDP-1.0
MicroEdition-Configuration: CLDC-1.0
MIDlet- 1: Sokoban, /icons/Sokoban.gif, example.sokoban. Sokoban
MIDlet- 2: Tickets, /icons /Auction.gif, TicketAuction
MIDlet- 3: Colors , /icons /ColorChooser.gif, example.Color
MIDlet- 4: Stock, /icons/Stock.gif, example.stock.StockMIDlet
MIDlet- 5: Tiles, /icons /Tiles.gif, example.tiles.Tiles
MIDlet- 6: ManyBalls, /icons /ManyBalls.gif, example.ManyBalls
MIDlet- 7: Sampler, /icons /App.gif, Sampler
MIDlet- 8: Properties, /icons /App.gif, example.PropExample
MIDlet- 9: HttpTest, /icons/App.gif, example.HttpTest
52
26
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Attributs des descripteurs
Attribute Name
MIDlet-Name
MIDlet-Version
MIDlet-Vendor
MIDlet-Description
MIDlet-Info-URL
MIDlet-< n>
File
Req
Req
Req
Opt
Opt
MIDlet-Jar-URL
MIDlet-Jar-Size
MIDlet-Data-Size
Req
Req
Opt
MicroEdition-Profile
MicroEditionConfiguration
Description
Name of the MIDlet suite.
Version number of the MIDlet suite.
Organization that provides the MIDlet suite.
Description of this MIDlet suite.
URL for further information on the MIDlet suit
Name, icon, and class of the <n> th MIDlet in JAR
file, separated by ",".
URL from which to download the JAR file.
Number of bytes in the JAR file.
Minimum number of bytes of persistent data
required by the MIDlet.
The required J2ME Profile.
The required J2ME Configuration.
53
javax. microedition. midlet
n
Défini les interfaces et les classes nécessaires
¡
¡
n
pour écrire des MIDlet
Pour le dialogue MIDlet – administrateur d’application
Classes abstraites pour les MIDlets
¡
¡
¡
¡
¡
¡
¡
– protectedMIDlet()
// constructeur sans paramètre
– protectedabstract void startApp() throwsMIDletStateChangeException
// appelée quand la MIDlet démarre (paused -> active state)
– protectedabstract void pauseApp()
// appelée quand la MIDlet est suspendue (active -> paused state)
– protectedabstract void destroyApp( boolean unconditional) throws
MIDletStateChangeException
// appelé quand la MID let est détruite (* -> removed state)
– public final void notifyDestroyed()
// prévient l’administrateur d’application que la MIDlet a été
supprimée
– public final void notifyPaused()
// prévient l’administrateur d’application que la MIDlet a suspendue
– public final String getAppProperty( String key )
// appelé par une MIDlet pour lire ses propriétés
54
27
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
C’est ma première MIDlet
1.
2.
3.
4.
5.
6.
Ecrire le code Java
Compiler le code Java
Prévérifier le code
Construire le fichier Jar
Créer le descripteur de la MIDlet
Exécuter la MIDlet sur l’émulateur (ou
sur le terminal)
http://java.sun.com/products/j2mewtoolkit
55
Ecrire le code Java
import javax.microedition.midlet.*;
public class HelloMIDlet extends MIDlet {
public void startApp() {
System. out. println( “Hello J2ME Camp…” );
pauseApp();
}
public void pauseApp() {
System. out. println( “In pauseApp…” );
destroyApp( true );
}
public void destroyApp( boolean unconditional) {
System. out. println( “In destroyApp…” );
}
}
28
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
56
J2ME
Janvier 2001
Compiler et ‘vérifier’ le code
n
n
javac –g:none
–bootclasspath c:\midp-fcs\classes
HelloMIDlet.java
preverify
-classpath .;c:\midp-fcs\classes
HelloMIDlet
57
Construire le fichier Jar et le
decripteur ‘Hello.jad’
n
n
jar cf Hello. jar *. Class
Le decripteur doit contenir :
¡
¡
¡
¡
¡
¡
¡
MIDlet-1: HelloMIDlet
MIDlet-Description: Ma première MIDlet
MIDlet-Jar-Size: 922
MIDlet-Jar-URL: FirstMIDlet.jar
MIDlet-Name: FirstMIDlet
MIDlet-Vendor: Sun Microsystems
MIDlet-Version: 1.0
58
29
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Excuter la MIDlet
n
n
midp
–classpath Hello.jar
– descriptor Hello.Jad
Les paramètres de la commande
¡
¡
¡
¡
¡
¡
¡
-classpath <path>
// directories and zip files to search
-descriptor <jad file> //MIDlet app descriptor file to use
-transient <url> <app_ name>
// run app_ name from descriptor at url
-autotest <url> <app_ name>
// repeatedly run application
-verbose
// enable classloading information
-debug
//enable debugging info
-help show this message
59
Variable d’exécution d’une MIDlet
Option
Défaut
Description
HTTP_PROXY
Null
URL sur serveur
proxy
Classes utilisateurs
Null
Codage des
caractères
Utilisation du
double tampon pour
l’affichage
2, 4, 8 pour 4, 16
60
ou 256 couleurs
CLASSPATH
ENCODING
DOUBLE_BUFFER True
ING
SCREEN_DEPTH
1 (b/w)
30
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Environnement de
développement MIDP
n
<<à faire présenter les différents
environnements de programmation
J2ME>>
61
Principales bibliothèques
n
n
n
n
UI (User Interface)
Réseau : connexion HTTP
Persistance : orientée enregistrement
Dans : java.util
¡
¡
¡
Classes: Timer, TimerTask, Calendar, Date,
HashTable, Random, Stack, TimeZone,
Vector
Interfaces : Enumeration
Exceptions : EmptyStackException,
NoSuchElementException
62
31
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Recommandations pour un code
Java performant et compact
n
n
n
Oublier les bonnes méthodes de
programmation J
Construire de petites applications, les plus
simples possibles
Mettre les méthodes en « private »
¡
n
n
Identifiant de méthodes plus compact, …
JAR non compressé pour accélérer le
démarrage
Internationalisation à l’installation
¡
Une version de l’application (JAR) par langue,
pays, …
63
Recommandations pour un code
Java performant et compact
n
Economie de mémoire à l’exécution
¡
Utiliser les types scalaires plutôt que des objets
n
n
¡
void setSize(int width, int height);
void setSize(Dimension size);
Aider le Ramasse-Miette
n
Mettre les références qui ne seront plus utilisées à null
n
Reutiliser les objets instanciés
¡
n
Pool d’objets, …
Car les exceptions sont des objets et leur
déclenchement augmente la taille du code
64
32
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
J2ME
Janvier 2001
Recommandations pour un code
Java performant et compact
n
Code performant
¡
Utiliser des variables locales
…) }
¡
¡
for(i=0;i<buf.length;i++) { if( buf[i]>=’0’ && buf[i]<=‘9’ && …) }
for(i=0;i<buf.length;i++) {Char c=buf[i]; if( ch>=’0’ && ch<=‘9’ &&
Eviter la concatenation de chaines et utiliser StringBuffer
Utiliser les threads mais limiter la synchronisation
public synchronsized Vector getVector() {
// peu performant
if(v==null) v=new Vector();
return v;
}
public Vector getVector() {
// synchronisation circonscrite
if(v==null) {
synchronized(this) { if(v==null) v=new Vector();}
}
return v;
}
65
Le résumé du cours
n
Comprendre les principaux aspects de la
spécification J2ME :
¡
¡
Machine virtuelle : KVM
Configurations : CLDC
n
n
¡
Machine virtuelle et biblikothèque Java minimales pour une
large gamme de terminaux
Risque de s’aligner le terminal le moins perfectionné de la
gamme…
Profils : MIDP
n
fournit un environnement complet (API) pour un ensemble
spécifique de terminaux
¡
¡
¡
¡
¡
n
javax.microedition.midlet
javax.microedition.lcdui
javax.microedition.rms
javax.microedition.io
java.lang and java.util
Présenter la chaîne de développement
33
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
66
J2ME
Janvier 2001
Quelques ressources
n
n
n
n
n
n
n
n
J2ME Codecamp:
www.sun.com/developers/edu/camps
http://java.sun.com/j2me
J2ME site: http://java.sun.com/products/j2me
J2ME Wireless Toolkit:
http://java.sun.com/products/j2mewtoolkit
http://www.billday.com/j2me
Pour s’abonner à la liste kvm-interest
mail [email protected]
subscribe kvm-interest
Archives de la liste : http://archives.java.sun.com
http://www.kvmworld.com
Site JCP: http://java.sun.com/jcp
67
Bibliographie
n
C’est un domaine encore peu stabilisé…
n
Eric Giguère, Java 2 Micro Edition, Ed
Wiley, 2000, ISBN 0-471-39065-8
Yu Feng, Dr. Jun Zhu, Wireless Java
Programming with Java 2 Micro, 1st edition
(May 24, 2001), Ed Sams; ISBN:
0672321351
Wong, Java 2 Micro Edition, Ed Addison
Wesley. ISBN 0-201-70244-4 (06/2001)
n
n
68
34
Copyright Michel RIVEILL, Université de Nice, Janvier 2001