Les profils MIDP

View Comments
Cet article a pour but d'expliquer ce que sont les profils MIDP et leurs impacts sur le développement d'applications mobiles.

MIDP (ou Mobile Information Device Profile) est un profil décrivant les capacités techniques de la machine virtuelle Java embarquée dans le terminal. Un profil MIDP correspond généralement à un ensemble de fonctionnalités (classes, fonctions et librairies) utilisables sur le téléphone.

A ce jour, il existe 4 types de profil différents :
  • MIDP 1.0
  • MIDP 2.0
  • MIDP 2.1
  • DOJA (pour Docomo Java)
Les profils MIDP sont ceux utilisés sur les téléphones WAP classiques tandis que DOJA est intimement lié aux téléphones i-mode qui, il fut un temps, était proposé par Bouygues Télécom mais restent toujours d'actualité au Japon chez NTT-Docomo.
Dans les lignes qui vont suivre nous parlerons essentiellement des profils MIDP car ce sont les plus présents sur les téléphones actuels.

MIDP 1.0 est apparu en 2004 sur des téléphones comme le Nokia 3410. Il correspond à la JSR 37 et a servi à créer les premiers programmes fonctionnant sur mobile. A l'heure actuelle, MIDP 1.0 n'est plus implémenté sur les téléphones et il ne sert "quasiment" plus à rien de développer des applications compatibles avec ce profil.

Le profil MIDP 2.0 sorti en 2006 est actuellement déployé sur plus de 400 terminaux. La JSR 118 implémentée y est pour beaucoup puisqu'elle permet de concevoir des applications plus rapides présentant des interfaces plus évoluées et capables de gérer la 3D.

MIDP 2.1, quant à lui, est le dernier profil sorti (2008). Principale caractérstique : il prend en charge les écrans tactile et permet de répondre à l'absence de clavier. Compatible également avec les écrans non tactiles, le profil MIDP 2.1 va, à terme, remplacer le MIDP2.0.

Pour finir, je ne peux que vous conseiller de bien réfléchir quant à la nécessité de développer pour des terminaux MIDP 1.0, ceux-ci étant amenés à disparaître, ils représentent une faible part de marché. De plus, une application compatible MIDP 1.0 montrera très vite ses limites sur des terminaux MIDP 2.0 sans compter qu'elle ne fonctionnera pas sur les terminaux tactiles.

Mon premier programme J2ME

View Comments
Le but de cet article est de comprendre la structure d'un programme J2ME (appelée "MIDlet" dans le jargon). Une midlet est une classe Java particulière puisqu'elle peut être exécuté par la JVM du téléphone de la même manière que peut l'être un main pour tout autre langage de programmation.
Pour ce faire, nous allons écrire quelques lignes permettant d'afficher la phrase "Hello World" à l'écran d'un téléphone.

1. Commençons par créer une classe "HellloWorld.java".
Vous devrier obtenir un fichier texte contenant les lignes suivantes :
public class HelloWorld {
}
Pour faire comprendre à la JVM que la classe "Helloworld" sera exécutable, faisons-la hériter de la classe "MIDlet" et implémentons la classe "CommandListener" qui permet l'utilisation du clavier du téléphone.
public class HelloWorld extends MIDlet implements CommandListener {
}

2. Ensuite déclarons les variables qui seront utilisées dans notre programme :
  • un afficheur : Display
  • un formulaire : Form
  • un bouton (pour sortir du programme) : Command
  • une zone de texte : TextField
public class HelloWorld extends MIDlet implements CommandListener {
//variables
TextField zoneText;
Display display;
Form affichage; //écran
static final Command exitCommand = new Command("Exit", Command.STOP, 0);
}
3. Initialisons les variables et plaçons-les élements dans le forumlaire
public class HelloWorld extends MIDlet implements CommandListener {
//variables
TextField zoneText;
Display display;
Form affichage; //écran
static final Command exitCommand = new Command("Exit", Command.STOP, 0);


public HelloWorld(){
display = Display.getDisplay(this); // on fait le lien avec l'affichage

affichage = new Form("Hello World Midlet"); //je donne un titre au formulaire
zoneText = new TextField("Hello World !", "Hello World !", 20, TextField.ANY); // je remplis la zone de texte

// je rajoute les éléments au formulaire
affichage.append(zoneText);
affichage.addCommand(exitCommand);
affichage.setCommandListener(this);
}
}
4. Implémentons les fonctions startApp, pauseApp, destroyApp, commandAction
"startApp", "pauseApp" et "destroyApp" sont des fonctions intrinsèques à notre midlet puisqu'elles permettent respectivement de la lancer, de la mettre en pause et de la détruire.
La fonction commandAction va quant à elle s'occuper des actions en permettant d'exécuter une ou plusieurs fonctions selon l'action de l'utilisateur.
/**
* Cette classe vous explique comment créer une application affichant un texte
*/

/**
* @author François K. - J2ME Facile - http://j2me.fr
*/

//déclaration des classes contenant quelques unes des fonctions utilisées
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;


public class HelloWorld extends MIDlet implements CommandListener {
//variables
TextField zoneText;
Display display;
Form affichage; //écran
static final Command exitCommand = new Command("Exit", Command.STOP, 0);


public HelloWorld(){
display = Display.getDisplay(this); // on fait le lien avec l'affichage

affichage = new Form("Hello World Midlet"); //je donne un titre au formulaire
zoneText = new TextField("Hello World !", "Hello World !", 20, TextField.ANY); // je remplis la zone de texte

// je reajoute les éléments au formulaire
affichage.append(zoneText);
affichage.addCommand(exitCommand);
affichage.setCommandListener(this);
}

public void startApp() {
// initialisation de l'affichage
display.setCurrent(affichage);
}
public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void commandAction(Command c, Displayable d) {
String label = c.getLabel();
//si commande reçue est Exit, alors je détruit l'application
if (label.equals("Exit")){
destroyApp(true);
}
}
}
5. Pour finir
Sauvegardez votre travail, lancer l'éxécution ("Build puis Run" pour JWTK ou "Run" pour Netbeans et Eclipse) et admirez votre travail :