Tutorial developpement en J2ME. //ceci n’est q’une version beta,en cours de correction et de verification (plein de fautes d’hortographe…)
I. Présentation J2ME : Sun Microsysteme à definie 3 platforms java : chachune est adaptée à un environnement de développement : Java 2 standard Edition(J2SE) Java 2 Entrepriise Edition (J2EE) Java 2 Micro edition (J2ME) J2ME est annoncée au JAVAOne Developers Conference en juin 1999, pour definir une plate form optimisée pour développer des applications pour des systèmes embarqués ou sur des appareils mobiles tel que des PDA, des téléphones cellulaires, des systèmes de navigations pour voiture..
Pour s’adapter au limitation imposé par le materiel, J2ME utilise des machines virtuelles (CVM et KVM) différentes que celle du J2SE. Certaines classes de base de l'API sont communes avec ,cependant de nombreuses omissions dans l'API J2ME.
II.
Architecture générale la de J2ME :
Problematique des mobiles :
les mobiles sont se regroupe ressources(mémoire et processeur) :
en
3
catégories
selon
leurs
Des terminaux de mémoire vive de moins de 32 kb et un processeur 16 bits et ce pour les carte a puce. Des terminaux de mémoire vive, comprise entre 512 kb et 128 kb avec un processeur 16 ou 32 bits . Des terminaux de mémoire vive , de plus de 2Mo et un processeur 32 bits .
Cette différence de capacité rend le devloppement pour le mobile très compliquées et pose un problème pour la portabilité des application .J2ME s’adapte à cette différence de capacités entre les mobile en proposant une architecture se basant sur les configuration (c pa des configurations de materiel !!!! ),les profils et les packages optionnels.
A.
- Les configurations
Une configuration c’est une definition de l’ environnement de developpement pour un certain type de materiel ayant un ensemble de caractéristiques et de ressources similaires.Elle definiela machine virtuel utilisée et offe un ensemble de classe de base.Actuellement ,il existe deux configurations qui sont essentiellement utilisées : La CDC (Connected Device Configuration). La CLDC (Connected Limited Device Configuration) . • La CDC est plus adaptée aux terminaux relativement puissant comme les PDA (RAM +ROM>2Mo). En effet, elle nécessite une machine virtuelle java optimisée appelée CVM (compact VM)qui offre presque les même fonctionnalités que la JVM classique. • La CLDC est, par contre, dédiée aux appareils avec de faibles capacités comme les téléphones portables(RAM+ROM <512koet processeur faible, par exemple un téléphone mobile ou un PDA "bas de gamme").
La machine virtuelle allégée correspondante est la KVM et ne possède pas certaines fonctions de la JVM classique.
B.
1.2 - Les profils
Lorsqu'une configuration définit le fondement d'une application, un profil en fournit la structure. Les profils définissent l'ensemble des API à utiliser dans une application J2ME et sont conçus spécialement pour chaque configuration.
Sun propose deux profils de référence(c-a-d il y a bien d’autre figure ci dessous) J2ME :
le profil Foundation et le profil Mobile Information Device Profile (MIDP). • Le profil Foundation est destiné à la configuration CDC. Les développeurs qui utilisent ce profil ont accés à une implémentation complète des fonctionnalités de J2SE. • Le profil MIDP(il ya aussi un similaire nomé DOJA) est destiné à la configuration CLDC. Il prend en charge un nombre limité des classes de J2SE et définit des classes d'entrée/sortie et d'interface spécialisées pour une configuration CLDC.Ce profil est le plus utilisé il est a sa version 2.0.
Les profils sont mis en place pour répondre aux besoins d’une categorie d’appareils specifique ,par exemple on definit un profil(WMA) qui supporte la communication par sms puisque ce service est une carcteristique des telephone mobiles (different des autres appareils).chose inutil de le definir dans la configuration qui est communes entre tous les appareils. Une configuration et un profil definissent un « a J2ME runtime environment»
C.
1.3-les packages optionnels :
Les packages ,ou les profils optionnels sont des API supplementaires non define dans la configuration ou le profil de base.
exemlpe :
WMA(wireless messaging API) pour le développement des application de messagerie(sms). MMA(Moobile Media API) api pour développement des application multimédia
III.
Architecture en détail :
1.Propriété de La CLDC : En ce qui concerne l’api et le langage supportés. CLDC fournit une librerie de classe tres limitée il contient 4 package de bases . 3 packages issue de la J2SE. Java.io Java.lang Java.util
Les classes contenues dans ces packages sont listées dans la figure ci-dessous
En plus de ces 3 packages il’y a un package specifique a la J2ME : Java.microedition.io La cldc supporte le langage JAVA mais avec certainnes restrictions :
Pas de virgule flottante .pas de support de java.lang.Floatou Double. Gestion exception réduite des exceptions.la J2ME reduit considerablement le nombre d’exception gérrées.il ne reste que les exceptions suivantes : java.lang.Error java.lang.OutOfMemoryError java.lang.VirtualMachineError
En ce qui concerne la machine virtuel ,cldc utilise une machine virtuel allegée(KVM kilobyte virtual machine nomée ainsi car elle a besoin de quelques kb dans la memoire) . plusieurs caractéristique de la JVM standard sont omises : JNI java native interface.
Thread an deamons. Verificateur de classes Pas de Object. finalize() .cette methode est importanate applée en J2SE automatiquement apres q’une instance de classe termine pour la gestion d’allocation de memoire .pourtant cette methode est omise ,vues que les ressources sont tres limitée pour lutiliser. …
2.Propriété de La CDC : La cdc supporte le language java definie pour la J2SE sans restriction.Elle offre 6 packages de base :
La CVM machine virtuel definie par la cdc support les meme caractéristiques que la JVM standard en s’adapptant aux contraintes des ressources matériels.Elle offre : Un system de mémoire avancé Un garbage collector simplifié. Support des threads. Support de JNI,RMI.. ….
IV.
Développement d’une application J2ME.
Dans cette section on va devevelopper une premiere application mobile pour la configuration cldc en ytilisant le profil MIDP. NB :les application utilisant MIDP sont appelée Midlets. Avant de commencer le developpemnt on commencera par decouvrir le profil MIDP : •
MIDP(Mobile Information Device Profile) :
Le MIDP, comme on la déja vu ,est une API (ensemble de package) Java adapté au termianaux suportés par la cldc voici un tableau qui represente les packages de la MIDP :
En utilisant ces package on peut commencer le developpement de notre premiere Midlets. •
Environnement de développement :
Cette section a été copier(avec modifications) d’un Blog de developpement que vous pouver visiter àwww.bp0.blogger.com
ECLIPSE NETBEANS ET J2ME
Parlons un peu des outils de développement sous Windows, on peut citer deux environnements de développement Netbeans et Eclipse, avant de se pencher sur les outils de développement, nous allons nous intéresser aux pré-requis nécessaires pour commencer tout développement J2ME.
I. PRÉ-REQUIS: 1. JDK: Veillez d'abord à bien installé le dernier JDK (Java Development Kit) de chez sun. http://java.sun.com/j2se/1.4.2/download.html Télécharger le SDK, non le JRE. 2. Java Wireless Toolkit :
Le java wireless toolkit de chez sun offre quelques outils rudimentaires de configuration et de gestion du code. Mais surtout il comprend des
émulateurs de terminaux mobiles.
http://java.sun.com/products/sjwtoolkit/download-2_2.html .une documentation complete est fournit pour bien utiliser cet outil.
Une fois Le JDK et le Java wireless Toolkit installé nous allons nous pencher sur les outils de développement.
II. OUTILS
DE DÉVELOPPEMENT
:
1. Eclipse :
est un environnement de développement libre (le terme Eclipse désigne également le projet correspondant, lancé par IBM) extensible, universel et polyvalent, permettant potentiellement de créer des projets de développement mettant en œuvre n'importe quel langage de programmation. Eclipse IDE est principalement écrit en Java.
1.1 EclipseMe : C'est le plug-in propre à eclipse qui permet le développement d'applications J2ME reposant sur MIDP en utilisant un Wireless Toolkit. Le site officiel de ce plug-in est à l'url : http://eclipseme.org/
1.2 Installation : Une fois le pack eclipseMe télécharger il suffit alors de suivre les étapes suivantes : Utilisez l'option « Mise à jour de logiciels/Rechercher et installer » du menu Aide.
Sélectionnez « Rechercher les nouveaux dispositifs à installer » cliquez sur le bouton « Suivant ». Cliquez sur le bouton « Nouveau site archivé » Sélectionnez le fichier et cliquez sur « Ouvrir » Dans l'arborescence des sites, sélectionnez eclipseme.feature_x.x.x_site.zip et cliquez sur le bouton « Suivant » Sélectionnez les dispositifs « EclipseMe » et « eclipseme.features.siemens » Lisez la licence et si vous l'acceptez cliquez sur « J'accepte les termes du contrat » et cliquez sur le bouton « Suivant » Cliquez sur le bouton « Fin » Lors de l'affichage de la boîte de dialogue « Vérification du dispositif », cliquez sur le bouton « Installer » Acceptez de relancer le plan de travail. Voilà vous disposer maintenant d'un environnement de développement J2me sous Eclipse.
2. Netbeans :
Netbeans est un environnement de développment pour java, placé en open source par Sun sous licence CDDL . En plus de Java, NetBeans permet également de supporter différents autres langages. Il comprend toutes les caractéristiques d'un IDE moderne (éditeur en couleur, projets multi-langage, refactoring, éditeur graphique d'interfaces et de pages web). NetBeans est lui-même développé en Java, ce qui peut le rendre assez lent et gourmand en ressources mémoires. Pour télécharger Netbeans c'est ici : http://www.netbeans.info/downloads/index.php
2.1 Mobility Pack : C'est le plug-in propre à Netbeans qui permet le développement d'applications J2ME reposant sur MIDP en utilisant un Wireless Toolkit . Pour télécharger le Mobility Pack c'est ici : http://www.netbeans.org/kb/50/mobility.html
•
Developper votre 1ere Midlet :
Apres avoir decouvert la CLDC et le MIDP et apres le choix d’un environnement de developpement on commence a developper ou plutôt a coder(enfin !!).Dans ce petit et simple exemple on utilise le Wireless Tolkit pour compiler et simuler les mobiles.je vous rappel que Les applications créées avec MIDP sont des midlets : ce sont des classes qui héritent de la classe abstraite javax.microedition.midlet.Midlet. Cette classe permet le dialogue entre le système et l'application. Lancer le Wirless Toolkit ,créer un nouveau projet vide : Taper le code suivant : import javax.microedition.midlet.MIDlet ;//package des MIDlet (commeJava. Applet pourJ2SE) import javax.microedition.lcdui.;//package des UI(interface user)
public class FirstMidlet extends MIDlet { //herite de la claasse abstraiteMidlet pour utiliser les //vie :startApp..destroyApp private Display display; //represente l’ecran de l affichage private TextBox textbox; //classe TextBox est definie dans la pack javax.lcui.* ; public FirstMidlet() { super(); display = Display.getDisplay(this); textbox = new TextBox("", "Bonjour", 20, 0); }
protected void startApp() throws MIDletStateChangeException { display.setCurrent(textbox); //afficher le TextBox }
protected void pauseApp() { } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { } } pour les midlets il n’ya pa de fonction main() mais ils ont la methode StartApp() qui joue un peu le role de la methode init() pour les applet java.son contenu est excuter en premier des le lancement de l’application.les methodes PauseApp et destroyApp gere le cycle de vie de la Midlet.
Apres la compilation le simulateur vous montre une petite interface graphique conteneant message bonjour. Cette exemple n’est que pour vous introduire au developpement mobile et vous montrer que la J2ME est simple a comprendre et a coder dessus il faut juste se coller au clavier.
Aisni se termine la 1ere partie de ce tutoriel pour le developpement mobile en J2ME.Dans la deuxieme partie on va nchalah aborder le MIDP plus profondement avec des application plus interessantes(envoyer et recevoir des sms) ,j’espere que ça a été utiles pour vous chokran 3la lmotaba3a o bla t9wasse .