34
J2ME Janvier 2001 Copyright Michel RIVEILL, Université de Nice, Janvier 2001 1 1 J.2.M.E Java 2 Micro Edition Michel RIVEILL Université de Nice – ESSI Email : [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

02 Slides J2ME

Embed Size (px)

Citation preview

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)