I. Introduction▲
Un grand merci à Yogui et à Eusebius pour la relecture et la correction de cet article.
Il est possible de créer une archive Jar avec les commandes javac -bootclasspath et jar cfm, cependant cette méthode nécessite une vision assez globale du projet ainsi qu'une certaine connaissance des divers composants du WTK. Heureusement, il existe des outils très performants (et gratuits) qui réalisent rapidement ces actions pour nous.
Les outils que nous allons utiliser sont :
- le logiciel KToolbar contenu dans le Sun Java Wireless Toolkit ;
- un serveur Apache installé sur un serveur dédié Linux (EasyPHP suffira dans un premier temps).
Le point de départ de notre tutoriel est celui-ci :
Vous avez créé une application J2ME. Elle est installée dans le KToolBar et fonctionne (aucune erreur lors du lancement de la commande « Build » ni de celui de la commande « Run »).
Nous allons utiliser tout le long de cet article le mot OTA :
Over The Air Programming (OTA) est une méthode de distribution de logiciels et de mises à jour destinée aux appareils mobiles (téléphone portable, smartphone…). L'avantage d'une installation via OTA est que l'acquisition du programme se fait depuis le réseau sans-fil de l'appareil (WAP, MMS…).
II. Création du programme exécutable▲
La création d'une archive Jar est très simple :
Cette commande va lancer la création de deux fichiers :
- le fichier Jar (Java ARchive) : il contient l'ensemble de nos fichiers source compilés (.class) ainsi qu'un fichier manifest.mf qui décrit notre application ;
- le fichier Jad (JAva Descriptor) : il contient la description de l'application : le vendeur, la taille, le point d'entrée…
Le fichier .class contient le byte-code de notre programme. Bien que peu verbeux il peut contenir quelques informations que nous souhaiterions dissimuler, pour cette raison il est conseillé d'utiliser un obfuscateur, Proguard par exemple.
III. Les divers modes de déploiement▲
Nous avons généré une archive Jar qui peut être testée à l'aide d'un émulateur, nous pouvons désormais nous intéresser à l'étape centrale : le déploiement.
Le déploiement peut se faire de deux façons :
- Déploiement physique : ce déploiement se fait en connectant notre téléphone à notre ordinateur (USB, port série, Bluetooth, Infrarouge) ;
- Déploiement via OTA : Ce déploiement se fait par le biais du WAP.
IV. Déploiement via OTA▲
Pour pouvoir installer un programme en utilisant OTA (Over The Air), il faut tout d'abord que votre mobile soit compatible (beaucoup le sont de nos jours). Le principe de OTA est celui-ci :
- le téléphone se connecte sur notre site WAP ;
- une page s'affiche, elle contient la ou les applications disponibles ;
- une application est sélectionnée ;
- le téléphone télécharge cette application dans sa mémoire ;
- le téléphone installe l'application.
IV-1. Création d'une page WML▲
Les sites WAP ne sont pas conçus en HTML, ce langage n'étant pas compris par la plupart des téléphones. Nous allons donc créer une page en WML. Ce langage est un cousin proche du langage HTML avec la rigueur du XML.
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC
"-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml"
>
<wml>
<template>
<do
type
=
"prev"
label
=
"Retour"
>
<prev/>
</do>
</template>
<card
id
=
"card1"
title
=
"monProjet"
newcontext
=
"true"
>
<p
align
=
"center"
>
Mon application<br/>
<a
href
=
"monProjet.jad"
>
Telecharger Jad</a>
<br/>
<a
href
=
"monProjet.jar"
>
Telecharger Jar</a>
<br/>
</p>
</card>
</wml>
Voici le contenu de la page index.wml qui va être placée sur notre serveur Apache. Elle contient un lien vers le fichier Jar ainsi qu'un lien vers le fichier Jad.
IV-2. Paramétrage du serveur Apache▲
Si vous avez déjà créé votre fichier WML et que vous l'avez essayé, vous pouvez vous apercevoir que cela ne fonctionne pas du tout, et cela pour une raison très simple : Apache ne sait pas quoi faire des fichiers WML, Jar et Jad, il ne connaît pas ces extensions et ne peut donc pas agir comme il le faudrait.
Nous allons donc indiquer au serveur ce qu'il doit faire de ces fichiers.
Nous pouvons le faire de deux manières :
- modifier le fichier de configuration d'Apache (très souvent httpd.conf) ;
- ajouter un fichier .htaccess dans le répertoire de notre page WML.
Très souvent, l'accès au fichier de configuration est délicat, voire impossible (hébergement mutualisé par exemple). Nous allons donc créer un fichier .htaccess qui contiendra des indications pour le serveur :
AddType text/vnd.wap.wml wml
AddType text/vnd.sun.j2me.app-descriptor jad
AddType application/java-archive jar
Désormais, l'accès à cette page est fonctionnel depuis le navigateur Internet de notre téléphone, vous pouvez également envoyer cette URL par SMS, de nombreux téléphones ouvrant directement un navigateur lors de la sélection d'une URL dans un message.
IV-3. Utilisation avancée de Over The Air▲
Tout cela est très bien, convenons-en, mais OTA n'est-il finalement qu'un simple système de téléchargement d'applications à distance ?
La réponse est NON !
OTA est bien plus que cela et nous permet d'avoir un réel suivi de nos applications.
Le fichier Jad doit être modifié et permettra d'activer plusieurs fonctions :
- MIDlet-Install-Notify : l'application se connectera à l'URL indiquée lors de l'installation de l'application ;
- MIDlet-Delete-Notify : l'application se connectera à l'URL indiquée lors de la suppression de l'application.
Ces deux fonctions vous permettent de suivre le déploiement de votre application au cas par cas. Il est à noter que ce processus est invisible pour l'utilisateur, le terminal mobile se contente d'envoyer une requête de type POST à l'URL choisie.
Il existe aussi d'autres fonctions importantes :
- MIDlet-Delete-Confirm : texte affiché lors de la suppression de l'application ;
- MIDlet-Jar-URL : URL de l'application.
MIDlet-1: rssListener, rssListener.png, ihm.FenetrePrincipale
MIDlet-Jar-Size: 31957
MIDlet-Jar-URL: http://j2me.minimonde.org/ota/rssListener.jar
MIDlet-Install-Notify:http://j2me.minimonde.org/ota/installation.php?user=3890
MIDlet-Delete-Notify:http://j2me.minimonde.org/ota/suppression.php?user=3890
MIDlet-Delete-Confirm: Vous allez supprimer cette application
MIDlet-Name: rssListener
MIDlet-Vendor: jp
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0
Voici un exemple de fichier Jad valide assez complet.
V. Conclusion▲
Nous avons appris à créer une archive Jar et à la déployer à l'aide du protocole OTA. Par la suite, nous pourrons approfondir cela de plusieurs manières :
- en créant un système payant de téléchargement d'applications ;
- en créant un système de traitement des remontées d'informations ;
- en automatisant toutes ces étapes à l'aide d'Antenna.
Ressources :
Obfuscation d'un MIDLet (en)
description de OTA (en)
Ant pour MIDP (en)