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