02 Tworzenie graficznego inferface’u użytkownika niskiego poziomu w j2me
02 Slides J2ME
-
Upload
aymane-rehali -
Category
Documents
-
view
15 -
download
1
Transcript of 02 Slides J2ME
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
1
1
J.2.M.EJava 2 Micro Edition
Michel RIVEILLUniversité de Nice – ESSIEmail : [email protected]
2
Objectifs
n Présenter les différentes configurations et profils de J2ME
n Présenter quelques aspects techniques liés à KVM, CLDC et MIDP
n Présenter l’environnement de développement J2ME
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
2
3
Présentation de J2ME
Configurations et profils
4
Diversité des terminaux…et java
n Une grande variété de terminaux¡ PCs¡ PDAs¡ Téléphones¡ Pageurs¡ Terminaux embarqués¡ Cartes
n Un seul langage de programmation : Java¡ 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
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
3
5
Architecture d’une application sur terminaux mobiles
serveur
PC
Terminal ‘léger’Terminal ‘léger’
Bluetooth,802.11, IrDA
série,USB
TCP/IP, WSP
TCP/IP
JavaCardJavaCardCartes
J2ME/CLDC
EmbeddedJava
Terminaux embarqués
J2ME/CLDC
Téléphones
J2ME/CDCPersonnalJava
PDAs
J2SEJDK 1.1.xPCs
J2EEServeurs
Version 2Version 1
6
Naviguer dans le monde Javan J2EE : Java 2 plateform, Enterprise Edition
¡ Solutions pour les entreprises : E-commerce, E-business
n J2SE : Java 2 plateform, Standard Edition¡ Solutions pour les postes clients : applications autonomes,
applets, …
n J2ME : Java 2 plateform, Micro Edition¡ Solutions pour les terminaux embarqués : téléphones,
PDAs, TV box, …
n Les différents environnements sont basés sur le même langage Java mais avec¡ Différentes JVMs et différentes APIs
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
4
7
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 30 à 50 % de ces terminaux seront connectés à Internet
n Il sera nécessaire de télécharger des logiciels sur les terminaux légers¡ Être capable d’adapter les services à la très grande
variété des équipements
n J2ME est la plate-forme pour le développement de service sur ces terminaux
8
J2MEConfigurations et profilesn Une seule plate-forme J2ME ne peut couvrir tous les besoins
¡ Les terminaux sont trop différents¡ Les besoins applicatifs sont très variables
n Configurations¡ Bibliothèque minimale et JVM¡ 2 configurations
n CLDC : connexion limitéen CDC : connecté
n Profils¡ Bibliothèques pour des terminaux particuliers ou un domaines
applicatifs¡ Profils existants :
n MIDPn Foundation, Bluetooth, Personal, …
n Configurations et profils sont définis par la ‘Java CommunityProcess’
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
5
9
Configuration
n Une configuration définie une machine virtuelle et un ensemble de bibliothèques minimaux pour ¡ Un ensemble de terminaux qui possèdent des
caractéristiques similaires (tailles mémoires, capacité du processeur, etc)
n Elles sont définies par le ‘Java CommunityProcess’¡ Test de compatibiltés¡ 2 configurations sont disponibles
n Connected Limited Device Configuration (CLDC)n Connected Device Configuration (CDC)
10
Profils
n Un ensemble d’APIs qui complètent la configuration pour définir des bibliothèques pour¡ Un domaine applicatif¡ Un type de terminaux
n L’objectif est de donner plus de flexibilité pour maintenir la portabilité des applications entre les terminaux
n Ils sont définis par le ‘Java CommunityProcess’¡ Test de compatibiltés
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
6
11
Plateforme Java 2
J2EEJ2SE
CDC CLDCJavaCard
APIs
Profil pour leséquipements mobiles
ProfilPersonnel
ProfilRMI
AutreProfile
Fondationprofil
Langage de programmation JavaJava
HotSpot JVM KVM CardVM
Bibliothèquesaditionelles
Bibliothèquesaditionelles
Va faire l’objet dela suite de l’exposé
12
Les APIs Java pour les mobiles
JavaPhone
CDC (CVM)
* En cours de définition
PersonnalJava(JVM)
PDAsHaut de gamme
PDAsBas de gamme
et téléphone
CLDC (KVM)
RMI Profile*
APIs Bluetooth
APIs Bluetooth
FondationProfil
Java Card
Cartes SIM
ProfilPDA*
ProfilMID
ProfilPDA*
ProfilMID
Profilpersonnel*
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
7
13
Les configurations…n Connected Limited Device
Configuration (CLDC)n Spécification définies dans
JSR-000030n Pour les terminaux avec
¡ 128 KB – 512 KB de mémoire (RAM+ROM)
¡ Battery¡ Connectivité réseau¡ Interfaces utilisateurs
contraintesn On peut télécharger les
spécifications et l’implémentation de référence
n Connected DeviceConfiguration (CDC)
n Spécification définies dans JSR-000036¡ JSR 36 (PersonnalJava)¡ JSR 46 (fondation)¡ JSR 62 (personnel, nouvelle
version du JSR 36)¡ JSR 66 (RMI)
n Pour les terminaux avec¡ 512 KB ROM minimum¡ 256 KB RAM minimum¡ Connectivité réseau¡ Supporte une JVM complète¡ Interfaces utilisateurs
contraintes
14
Profil pour les terminaux mobiles
n Le premier profil J2ME définin Les terminaux cibles implémentent CLDCn Le profil défini
¡ Affichage¡ Gestion de données persistantes¡ Envoie de message (SMS, email, etc)¡ Sécurité¡ Réseaux sans fils
n Implémentation de référence disponible
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
8
15
Exemples
VotreMIDIlet
Annuaire, horaires de train, jeux, …
Profil pourterminaux
mobile
IHM, HTTP networking, …
J2MECLDC = KVM + J2ME
KVM
Processeur DSP Exemple ARM :32-bit RISC, 256 K ROM, 256 K Flash, 64 K RAM
16
Profil J2ME
Version finale proposée
66CDCRMI
Groupe d’experts formé
82CLDCBluetoth
Groupe d’experts formé
75CLDCPDA
Groupe d’experts formé
62CDCPersonnel
Version finale proposée
46CDCFondation
Version finale37CLDCMID
JCP étatJSR#ConfigurationProfil
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
9
17
Java technologies
n Téléphones¡ Liste disponible à http://www.javamobiles.com
n PDAs
…
Différentes bibliothèque
IBM J9PalmOS, WindowsCE
PersonalJavaPeronal Java Runtime (Sun)
Windows CE 2.11
J2ME MIDPMIDP pour Palm (Sun)
PalmOS
18
CLDC et KVM
Connected Limited DeviceConfiguration
K Virtual Machine
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
10
19
Terminaux cibles
n 128 – 512 KB de mémoiren Vitesse du processeur : 16 – 32 MHzn Fonctionnement sur batterien Communication réseau limitée : 9600
bpsn Très large diffusions des terminaux¡ PDAs, Téléphones, …
20
Objectifsn Définir un ensemble de technologie Java
homogène pour une large gamme de terminaux ayant des contraintes techniques¡ Mémoire, énergie, vitesse processeur, taille
écran, connection réseaun 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
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
11
21
Domaine de couverture de CLDCn Pris en charge
¡ Machine virtuelle Java et langage Java¡ Modèle de sécurité¡ Entrée / sortie¡ Support réseau¡ Internationalisation
n 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
22
KVMn ‘petite’ machine virtuelle Java construite pour les
terminaux contraint¡ Qq dizaines de kilobytes
n Implémentation modulaire en C : 24.000 lignes de coden 40 à 80 kB (taille statique) selon les options de compilation
¡ taille vs vitesse, mise au pointn Sur PalmOS et Win32 environ 60 kBn Fonctionne ) 30-80 % de la vitesse du JDK (sans JIT)
¡ Comprend les parties communes de J2MEn Compatible avec JVM (avec qq restrictions)
¡ 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
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
12
23
Principales restrictionsn JNIn Réflexionn Groupe de fils d’exécutionn Référence légèren Finalisationn Support incomplet des erreursn Nouvelle implémentation du chargeur (classfile)
n Il existe une implémentation de référence du CLDC 1.0¡ Win32¡ PalmOS¡ Solaris¡ De nombreux autres portages de la KVM et de CLDC ont été
fait.
24
Bibliothèque CLDCn Classes héritée de J2SE
¡ Java.lang.*¡ Java.io.*¡ Java.util.*
n Nouvelles classes¡ Javax.microedition.io.*
n CLDC Internationalization¡ InputStreamReader( InputStream ); InputStreamReader( InputStream ,
String ); OutputStreamWriter( OutputStream ); OutputStreamWriter( OutputStream, String );
n Propriétés CLDC¡ microedition.platform¡ microedition.encoding¡ microedition.configuration¡ microedition.profiles
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
13
25
Support réseaun Les bibliothèques J2SE réseau, IO et stockage sont
trop grosses pour les terminaux visés¡ Plus de 100 classes¡ Plus de 200 kB
n Elles n’ont jamais été construites pour ces terminaux¡ TCP/IP doit être disponible¡ Pas ou peu de possibilité pour introduire de nouveaux
protocoles : Bluetooth, IrDAn Introduction de nouvelles classes (Generic
Connection Framework)¡ Plus cohérentes¡ Support de différents types de protocoles, extensibles¡ Compatibilité avec les bibliothèques existantes
26
Generic ConnectionFramework
n 6 interfaces de bases¡ Input série¡ Output série¡ Communication par
datagramme¡ Communication par circuit
virtueln TCP, connection HTTP légère
n CDLC ne défini pas de protocole de communication¡ C’est le rôle des profils
n L’implémentation de référence possède qq protocoles¡ Peut servir de point de départ
Connection
datagramme
Stream notifier
input output
stream
content
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
14
27
Exemple de connection
n Forme générale¡ Connector.open(« <protocol>:<path>:<paramet
ers>");
n HTTP¡ Connector.open("http://www.codecamps.com");
n Sockets¡ Connector.open("socket://129.144.111.222:90
00");
n Ports séries¡ Connector.open("comm:0;baudrate=9600");
n Fichiers¡ Connector.open("file:codecamps.dat");
28
Sécuritén Impossibilité d’implémenter le modèle de
sécurité de J2SE¡ Sa taille est supérieur au CDLC
n Modèle de sécurité du CDLC 1. Niveau de la machine virtuelle
n Une application s’exécutant sur la VM ne doit pas pouvoir causer de dommage au terminal
n Nouveau Classfile vérificateur certifié2. Niveau applicatif
n Une partie seulement de l’API Java est disponiblen Un programme ne peut pas surcharger certaines
classes standardsn L’accès aux fonctions natives n’est pas autorisé
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
15
29
Certification des classes
Station de développement Terminal d’exécution
Myappp.java
Myappp.java
Myappp.java
download
vérificateur
interpréteur
javac
prévérificateur
30
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 technologyCode
Compact¡ Com.sun.kjava
n bibliothèque non supportée : IHM, cycle de vie
n Les applications utilisent généralement¡ MIDP ou Wireless toolkit
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
16
31
MIDPMobile Information Device Profile
n Le premier profil J2ME (JSR-0037)¡ Les terminaux visés doivent supporter
CLDCn Objectifs¡ Tolkit de visualisation, input¡ Gestion de données persistantes¡ Messages
n SMS, email¡ Sécurité¡ Connexion par réseau sans fils
32
Caractéristiques du terminal
n Affichage¡ Taille de l’écran : 96x54 pixels
n Entrée¡ Un ou deux ‘clavier’, écran tactile optionnel
n Mémoire¡ 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, …)
n Réseau¡ Connexion full-duplex, intermittente, sans fils,
débit faible
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
17
33
objectifs
n Définir une architecture et les APIs associées pour l’écriture d’application pour des terminaux mobiles¡ La simplicité est recherchée, parfois au
détriment de la complétuden 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
34Terminal mobile
logiciel natif
CLDC
architecture
MIDP
applications
ClassesOEM
applicationsapplications
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
18
35
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
36
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
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
19
37
Bibliothèques de classesn Gestion du cycle de vie de l’application
¡ Javax.microedition.midletn IHM
¡ Javax.microedition.lcduin Gestion de la persistance
¡ Javax.microedition.rmsn Accès réseau
¡ Javax.microedition.ion Langage
¡ Java.lang¡ Java.util
38
MIDP ApplicationMIDlet
n MIDlets¡ Ont un cycle de vie bien déterminé¡ Fournissent des informations sur elles-mêmes¡ Étendent javax.microedition.midlet.MIDlet
n 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
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
20
39
Interaction avec les utilisateursn Les MIDlets sont généralement des applications dialoguants
avec l’utilisateur¡ Celui-ci est pris en compte dès le début de la conception
n APIs définies dans javax.microedition.lcduin 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
n API de bas-niveau¡ Primitives de dessin¡ Événements claviers¡ L’utilisation compromet la portabilité de l’application
40
Gestion de la persistencen Permet uniquement l’enregistrement de structure
(RMS)n API indépendante des terminauxn API définie dans javax.microedition.rmsn Un enregistrement est un tableau de bytesn Les enregistrements de l’application peuvent être
sauvegarder en mémoiren Les enregistrements en mémoire peuvent être
partagés entre les applicationsn Support pour les énumérations et les ensembles
(sorting, filtering)n Mise à jour atomique des enregistrements simples
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
21
41
Entrée-sortie
n Implémente les spécifications du CLDC
n Défini javax.microedition.ion Peut ouvrir des connections HTTP
(RFC2616)
42
Utilitaires MIDP
n Classes et interfaces très utiles¡ Spécifié dans java.util
n Calendriern Daten Enumérationn Table de hachagen Tirage aléatoiren Pilen alarme (timer,timerTask)n vecteur
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
22
43
internationalisation
n Support des caractères ISO Latin 1 (ISO8859-1)
n 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
44
Pour télécharger le MIDP
n http://java.sun.com/products.midp¡ Émulateur sous forme binaire (windows )¡ Classes et sources pour bibliothèques (java & C)¡ Documentation (pdf et javadoc)¡ Examples
n 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
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
23
45
Les évolutions…n MIDP NG JSR submittedn – http://java.sun.com/jcp/jsr/jsr_118_midpng. htmln – Final spec, RI and TCK should be available within 6 to 9
months (H1 2002)n – Commercially available on real devices in H2 2002n • MIDP NG specification goals – Backward compatibility with
MIDP 1.0 specificationn – Continued focus on small, high- volume wireless phonesn – Maintain tight footprint objectives to limit growth in the core
APIsn – Information learned from MIDP 1. 0 deployments to fine tune
MIDP 1.0n APIsn – Focus on core functions needed by all devices and
applicationsn – Focus on enabling mCommerce, service- based applications
46
Nouvelles fonctionnalitésn Domain security model, including signing of applications and
verification of certificatesn • HTTPS and secure networkingn • Network connectivity via sockets and datagramsn • Formal inclusion of OTA Provisioningn • Push architecture: external events and messages routed ton appropriate MIDletsn • User Interface - extensions to low- level LCDUI to allow
greatern game functionality and layout control for larger screen sizes.n • A small, efficient XML parser to enable platform-
independentn data exchangen • Base sound API
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
24
47
Cycle de vie d’une MIDlet1. Recherche de l’appli2. Installation3. Chargement
1. Création d’une instance2. Initialisation3. Terminaison
4. Gestion de version
n Le logiciel d’administration¡ installe les MIDlets sur les
terminaux¡ vérifie la sécurité¡ met à jour la version de l’appli
si nécessairen MIDP défini les mécanismes
nécessaire¡ Formats des Jar et Jad,
MIDlet descripteurs dans javax. microedition. midlet
New()
DestroyApp()
StartApp()
DestroyApp()
PauseApp()
paused
destroyed
active
48terminalEnvironnementde développement
serveur
MIDP cycle de vie des applications
MIDlet
MIDlet
MIDletcréer
publier transférer
installer détruire
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
25
49
Transfert de l’applicationn Le MID transfère la MIDlet depuis un serveurn Le médium de transfert doit être identifier
¡ Cable série¡ Port Infra Rouge(IrDA)¡ Réseau sans fils
n Une négociation à lieu entre le MID et le serveur¡ Caractéristiques du terminal¡ Taille de l’application¡ Coût du transfert
n 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
50
exécution d’une MIDletn Chargement
¡ Installe la MIDlet dans la KVMn Nouvelle version
¡ 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
¡ Les attributs des MIDlets (versions, dates, etc.) sont contenus dans le descripteur lui même inclus dans le fichier JAR.
n 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
New()
DestroyApp()
StartApp()
DestroyApp()
PauseApp()
paused
destroyed
active
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
26
51
MIDlet jarn Un jar peut contenir plusieurs MIDletsn 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 Description: MIDP app descriptor MIDP app descriptorn MIME Type: text/vnd.sun.j2me.app-descriptorn Extension: jadn Application: d:\midp\midp.exe -transient file://%1
52
Exemple de descripteursn MIDlet-Name: SunSamplesn MIDlet-Version: 1.0n MIDlet-Vendor: Sun Microsystems, Inc.n MicroEdition-Profile: MIDP-1.0n MicroEdition-Configuration: CLDC-1.0n MIDlet- 1: Sokoban, /icons/Sokoban.gif, example.sokoban. Sokobann MIDlet- 2: Tickets, /icons /Auction.gif, TicketAuctionn MIDlet- 3: Colors, /icons /ColorChooser.gif, example.Colorn MIDlet- 4: Stock, /icons/Stock.gif, example.stock.StockMIDletn MIDlet- 5: Tiles, /icons /Tiles.gif, example.tiles.Tilesn MIDlet- 6: ManyBalls, /icons /ManyBalls.gif, example.ManyBallsn MIDlet- 7: Sampler, /icons /App.gif, Samplern MIDlet- 8: Properties, /icons /App.gif, example.PropExamplen MIDlet- 9: HttpTest, /icons/App.gif, example.HttpTest
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
27
53
Attributs des descripteurs
The required J2ME Configuration.MicroEdition-Configuration
The required J2ME Profile.MicroEdition-Profile
Minimum number of bytes of persistent data required by the MIDlet.
OptMIDlet-Data-SizeNumber of bytes in the JAR file.ReqMIDlet-Jar-SizeURL from which to download the JAR file.ReqMIDlet-Jar-URL
Name, icon, and class of the <n> th MIDlet in JAR file, separated by ",".
MIDlet-< n>URL for further information on the MIDlet suitOptMIDlet-Info-URLDescription of this MIDlet suite.OptMIDlet-DescriptionOrganization that provides the MIDlet suite.ReqMIDlet-VendorVersion number of the MIDlet suite.ReqMIDlet-VersionName of the MIDlet suite.ReqMIDlet-NameDescriptionFileAttribute Name
54
javax. microedition. midletn Défini les interfaces et les classes nécessaires
¡ pour écrire des MIDlet¡ Pour le dialogue MIDlet – administrateur d’application
n Classes abstraites pour les MIDlets¡ – protectedMIDlet()
// constructeur sans paramètre¡ – protectedabstract void startApp() throwsMIDletStateChangeException
// appelée quand la MIDletdémarre (paused -> active state)¡ – protectedabstract void pauseApp()
// appelée quand la MIDletest 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
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
28
55
C’est ma première MIDlet
1. Ecrire le code Java2. Compiler le code Java3. Prévérifier le code4. Construire le fichier Jar5. Créer le descripteur de la MIDlet6. Exécuter la MIDlet sur l’émulateur (ou
sur le terminal)http://java.sun.com/products/j2mewtoolkit
56
Ecrire le code Javaimport 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…” );}
}
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
29
57
Compiler et ‘vérifier’ le code
n javac –g:none–bootclasspath c:\midp-fcs\classesHelloMIDlet.java
n preverify-classpath .;c:\midp-fcs\classesHelloMIDlet
58
Construire le fichier Jar et le decripteur ‘Hello.jad’
n jar cf Hello. jar *. Classn 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
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
30
59
Excuter la MIDletn midp
–classpath Hello.jar– descriptor Hello.Jad
n 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 thismessage
60
Variable d’exécution d’une MIDlet
2, 4, 8 pour 4, 16 ou 256 couleurs
1 (b/w)SCREEN_DEPTH
Utilisation du double tampon pour l’affichage
TrueDOUBLE_BUFFERING
Codage des caractères
NullENCODING
Classes utilisateursCLASSPATH
URL sur serveur proxy
NullHTTP_PROXY
DescriptionDéfautOption
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
31
61
Environnement de développement MIDP
n <<à faire présenter les différents environnements de programmation J2ME>>
62
Principales bibliothèques
n UI (User Interface)n Réseau : connexion HTTPn Persistance : orientée enregistrementn Dans : java.util
¡ Classes: Timer, TimerTask, Calendar, Date, HashTable, Random, Stack, TimeZone, Vector
¡ Interfaces : Enumeration¡ Exceptions : EmptyStackException,
NoSuchElementException
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
32
63
Recommandations pour un codeJava performant et compact
n Oublier les bonnes méthodes de programmation ☺
n Construire de petites applications, les plus simples possibles
n Mettre les méthodes en « private » ¡ Identifiant de méthodes plus compact, …
n JAR non compressé pour accélérer le démarrage
n Internationalisation à l’installation¡ Une version de l’application (JAR) par langue,
pays, …
64
Recommandations pour un codeJava performant et compact
n Economie de mémoire à l’exécution¡ Utiliser les types scalaires plutôt que des objets
n void setSize(int width, int height);n void setSize(Dimension size);
¡ Aider le Ramasse-Mietten Mettre les références qui ne seront plus utilisées à null
n Reutiliser les objets instanciés¡ Pool d’objets, …
n Car les exceptions sont des objets et leur déclenchement augmente la taille du code
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
33
65
Recommandations pour un codeJava performant et compactn Code performant
¡ Utiliser des variables localesfor(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 performantif(v==null) v=new Vector();return v;
}public Vector getVector() {
// synchronisation circonscriteif(v==null) {
synchronized(this) { if(v==null) v=new Vector();}}return v;
}
66
Le résumé du coursn Comprendre les principaux aspects de la
spécification J2ME :¡ Machine virtuelle : KVM¡ Configurations : CLDC
n Machine virtuelle et biblikothèque Java minimales pour une large gamme de terminaux
n Risque de s’aligner le terminal le moins perfectionné de la gamme…
¡ Profils : MIDPn fournit un environnement complet (API) pour un ensemble
spécifique de terminaux¡ javax.microedition.midlet¡ javax.microedition.lcdui¡ javax.microedition.rms¡ javax.microedition.io¡ java.lang and java.util
n Présenter la chaîne de développement
J2MEJanvier 2001
Copyright Michel RIVEILL, Université de Nice, Janvier 2001
34
67
Quelques ressourcesn J2ME Codecamp:
www.sun.com/developers/edu/campsn http://java.sun.com/j2men J2ME site: http://java.sun.com/products/j2men J2ME Wireless Toolkit:
http://java.sun.com/products/j2mewtoolkitn http://www.billday.com/j2men Pour s’abonner à la liste kvm-interest
mail [email protected] kvm-interest
n Archives de la liste : http://archives.java.sun.comhttp://www.kvmworld.com
n Site JCP: http://java.sun.com/jcp
68
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
n Yu Feng, Dr. Jun Zhu, Wireless Java Programming with Java 2 Micro, 1st edition(May 24, 2001), Ed Sams; ISBN: 0672321351
n Wong, Java 2 Micro Edition, Ed Addison Wesley. ISBN 0-201-70244-4 (06/2001)