Projet PJEM
Projet de Programmation Java Embarqué
Tutorial J2ME
Projet de M2PGI
option SLE
Année Universitaire 2005-2006
Université Joseph
Fourier
Contributeur(s)
étape : Didier Donsez
Encadrement M2PGI/SLE 2005-2006 : Didier Donsez, Cristina Marin
Date de dernière mise à jour : 21/12/2005
Le but de ce tutorial est de tester l’environnement J2ME/CLDC/MIDP 1.0 et 2.0.
Normalement, vous téléchargez de du site http://java.sun.com/j2me et l’installer.
Cependant vous n’avez qu’à décompresser le fichier suivant dans C:\tmp :
http://www-adele.imag.fr/~donsez/cm/wtk104.zip
http://www-adele.imag.fr/~donsez/cm/wtk22.zip
Configurez JAVA_HOME et ANT_HOME
Configurez WTK_HOME (set WTK_HOME=C:\TEMP\WTK22 pour la version 2.2 du toolkit)
Configurez WTK_HOME (set WTK_HOME=C:\TEMP\WTK104 pour la version 1.0.4 du toolkit)
Ajoutez %WTK_HOME%\bin à votre PATH
Les commandes suivantes vous permettent de :
La documentation est accessible depuis %WTK_HOME%\index.html
Le guide d’utilisation est accessible depuis %WTK_HOME%\docs\UserGuide.pdf
Les constructeurs de télé phones cellulaires tels que Nokia, SonyEricsson, Siemens, … proposent le téléchargement de Toolkit J2ME sur leurs sites « developer ». Ils contiennent également des émulations de téléphone réels et de nombreux exemples illustrant plusieurs JSR et des API propriétaires. Ces toolkits permettent de développer des Midlets (pas toujours portables si les API propriétaires sont utilisées) et de les charger sur des vrais téléphones afin de les exécuter « in-vivo » et de les débogger « in-vivo ».
Si vous possédez un téléphone Java (ou plus exactement J2ME/CLDC/MIDP), vous avez intéressé de tester les MIDlets que vous développerez sur votre téléphone (c’est toujours bon pour le CV). Il faudra de préférence récupérer le Toolkit (s’il existe).
Des listes (incomplète) de téléphone Java se trouvent sur
Attention, Si votre téléphone est MIDP1.1, il faudra que la suite de MIDLet que vous développerez soit également MIDP1.0 ou MIDP1.1 (MicroEdition-Profile: MIDP-1.0).
DoJa est un profile basé sur le J2ME/CDLC/MIDP pour les téléphones mobiles Docomo iMode comme ceux de l’opérateur Bouygues Telecom.
Vous pouvez télécharger et installer le kit de développement et d’émulation DoJa.
D’autres exemples de midlets (1.0 et 2.0) sont disponibles sur
http://www-adele.imag.fr/~donsez/cours/exemplesj2me/
Chargez les dans votre répertoire %WTK_HOME%\apps
Lancez ktoolbar
Ouvrez un des projets (games par exemple)
Les projets (présents dans %WTK_HOME%\apps) sont brièvement décrit dans %WTK_HOME%\docs\AppDemos.html
Construisez le [Build]
Exécutez le [Run] et testez l’interface homme-machine (L’émulateur que vous avez choisi est lancé avec les MIDlets du projet)
Visualisez les 2 scripts build.sh et run.sh dans du répertoire %WTK_HOME%\apps\*\bin\
Certains applications ont des scripts ANT !
Configurez dans [menu Edit>Preferences, onglet Monitor] :
· La supervision de l’utilisation de la mémoire
· La supervision des échanges réseau
· Le profilage des méthodes appelées
Recommencez l’exécution de
Question : que configurent les autres onglets de [menu Edit>Preferences]
NB : la supervision de l’utilisation de la mémoire ralentit énormément la simulation ! désactivez la pour la suite
Lancez l’émulateur avec un des .jad situé dans %WTK_HOME%\apps\*\bin\
(voir les options de lancement dans le chapitre 4 du UserGuide).
Lancez ktoolbar
Créez [New Project] un nouveau projet hello avec la classe examples.hello.HelloMIDlet
Configurez [Settings]
Générez [Build] les classes
Exécutez dans le simulateur [Run]
Exécutez avec un autre mobile (device)
Procédez de même avec animation, addressbook, http, xml (attention, l’exemple xml nécessite les packages de kXML (http://www.kxml.org)
Utilisez un ofuscateur pour reduire la taille des MIDlets
Aidez vous de la documentation
%WTK_HOME%\index.html
Lancez ktoolbar
Ouvrez le projet addressbook
Positionnez l’option de deboggage [Project>Debug]
Reconstruisez le projet
Lancez l’application [Run]
Lancez le déboggeur jdb sur le port de deboggage
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=5000 \
–sourcepath
%WTK_HOME%\apps\addressbook\src
Aidez vous de la documentation de jdb
Vous pouvez également lancer le déboggeur depuis votre IDE.
Regroupez les 4 exemples précédents sous un seul projet total qui contiendra les 4 MIDlets.
Ecrivez un script (build.sh, build.bat ou build.xml) qui construit total.jar
Configurez le fichier total.jad avec ktoolbar
Testez [Run]
Installez total.jar et total.jad dans une webapp midlets d’un serveur J2EE (TomCat ou JOnAS par exemple)
Changez la propriété MIDlet-Jar-URL de total.jad avec l’URL absolu de JAR http://monserverweb:8080/midlets/total.jar
Assurez vous que webapps/midlets/WEB-INF/web.xml contiennent les correspondances suivantes pour les types MIME (sinon ajoutez les).
jad text/vnd.sun.j2me.app-descriptor
jar application/java-archive
Lancez l’émulateur sans passer par ktoolbar avec la commande suivante :
emulator
–Xdescriptor:http://monserverweb:8080/midlets/total.jad
Installez les MIDlets sur l’émulateur en passant l’URL absolue de total.jad
emulator
–Xjam:install=http://monserverweb:8080/midlets/total.jad
Vous pouvez changer le device avec la commande suivante DefaultDevice
Vous pouvez également le tester sur un vrai téléphone si le serveur d’hébergement et accessible par le Web.
L’objectif de cet exercice est de réaliser une console pour inspecter les capteurs connectés sur une passerelle.
Pour cela, vous devez premièrement
·
Modifier
· Développer une MidLet SensorConsoleMidLet qui à partir des informations récupérées, liste les capteurs et la dernière valeur de mesure acquise.
·
Conditionner
Remarque : le format CSV (Comma-Separated Value) qui est un format d’import/export entre tableurs, formate un enregistrement sur une ligne de texte et sépare les champs par le caractère ; . La classe java.util.StringTokenizer peut vous aider à récupérer les champs individuellement.
Un exemple de CSV retourné par ConsumerServlet
Type MIME : text/csv, application/csv, application/x-csv voir http://www.geocities.com/dtmcbride/tech/filetype.html
sensorid;value;unit;error;timestamp
thermo1;301.5;K;0.5;34662829983837
thermo2;303.5;K;0.5;34662829983838
thermo3;302.5;K;0.5;34662829983839
powermeter10;215.0;V;0.05;34662829983839
Enfin, créez une servlet (utilitaire) JadReplaceServlet qui retourne le JAD avec l’entrée SBSCONSOLE_URL configurée dynamiquement avec l’URL de la servlet ConsumerServlet.
Remarque 1 : cette servlet doit retourner le type MIME text/vnd.sun.j2me.app-descriptor.
Remarque 2 : vous pouvez faire en sorte que le code de servlet soit générique et utilise 2 paramètres d’initialisation qui sont le patron du fichier JAD comportant les chaînes à substituer et le fichier des propriétés de substitution. Certaines propriétés sont inférées dynamiquement à partir des informations du contexte (hostname, context path), de la session (sessionId, subject …), des cookies, des paramètres …