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 :


Choisir un environnement de développement

View Comments
Quand on doit programmer quelque chose, la première chose qui nous vient à l'esprit après avoir choisi le langage à utiliser est celle de l'environnement de développement (EDI pour Environnement de Développement Informatique et IDE pour les anglo-saxons).
Comme pour tous les langages de programmation, le choix est vaste mais ce n'est pas une raison pour le prendre à la légère. En effet, l'IDE est "le logiciel" qui va vous permettre d'écrire votre code, de le compiler, d'ajouter des émulateurs, d'organiser vos projets, etc... d'où l'importance de bien le choisir.

Dans cette article, je vous présenterais les 3 environnements les plus couramment utilisés pour programmer en J2ME : Java Wireless Toolkit, Eclipse et Netbeans. De plus, les ayant tous testés, je vous donnerais leurs avantages et inconvénients, ce qui peut être pratique si vous débutez.

Java Wireless Toolkit

Java Wireless ToolKit (que l'on nommera JWT par soucis de commodité) est un outil développé par Sun (le créateur du langage J2ME) qui ne sert qu'à compiler, exécuter et packager (mettre son programme sous forme de fichiers directement installables sur le téléphone). De cette façon, vous avez un environnement minimaliste qui vous permet de programmer partout sans fioritures.
Muni d'un seul compilateur et de quelques émulateurs, JWT saura vous dépanner de manière rapide si vous devez tester quelques fichiers sources. La conception de projet reste quant à elle difficile puisque le logiciel n'intègre pas d'éditeur de texte, élément clé de tout développeur.
Ses principaux avantages sont sa facilité d'installation et d'utilisation puisque peut de possibilités sont proposés, ce qui déplaira aux personnes qui se lancent dans de gros projets (pas de gestion de serveur SVN par exemple).
Vous pouvez télécharger l'outil JWT en vous rendant sur le site de Sun .

Eclipse et le plugin EclipseME

Dans la famille des environnements de développement, Eclipse est un des plus célèbre : sa facilité d'installation (une simple archive à décompresser) et sa flexibilité (compatible avec de nombreux langages en ont fait un outil de choix des développeurs informatiques.
Spécialisé Java, il est nécessaire d'installer un plugin J2ME pour programmer sur téléphones mobiles. L'avantage est qu'une fois ce dernier installé,vous pouvez déjà commencer à l'utiliser sans rien configurer. Côté configuration, il n'est pas trop compliqué d'y ajouter d'autres émulateurs (ceux de Nokia ou Sony-Ericsson par exemple).
Avant de vous lancer, sachez qu'il est tout de même nécessaire d'avoir installé JWT pour utiliser Eclipse : en effet, Eclipse utilise le compilateur de JWT pour compiler et exécuter les programmes.
Si vous souhaiter télécharger tout cela, rendez-vous à cette adresse pour Eclipse et à cette autre adresse pour le plugin EclipseME.

Netbeans

Netbeans est l'IDE proposé par la société IBM. Plus orienté professionnel et développement de très gros projets, il est tout de même parfaitement utilisable pour J2ME. Tout comme Eclipse, son langage de prédilection est le J2EE (Java 2 Entreprise Edition) mais il a l'avantage de proposer une version qui prend en charge nativement J2ME.
Ne vous laissez pas impressionner par son côté "usine à gaz" et les nombreux outils qu'il intègre ! Edition de diagrammes des classes, conception d'interfaces graphique, Netbeans est une trousse à outils très vaste mais reste néanmoins facile à utiliser pour ceux et celles qui ne cherchent qu'à travailler sur de petits projets.
Petit plus, Netbeans (tout comme Eclipse) prend en charge le service d'archivage SVN qui permet de sauvegarder vos fichiers sources et d'enregistrer leurs modifications.
Pour plus d'infos sur l'utilisation de Netbeans et pour le télécharger, ça se passe ici.

Pour conclure, je vous dirais que tous les IDE se valent entre eux. Que vous choisissiez d'utiliser Eclipse et Netbeans, vous serez à même de développer vos programmes dans un environnement confortable et plaisant sur le long terme. Attention toutefois, sachez que comme tout logiciel, il est nécessaire de passer un peu de temps sur votre IDE pour connaître toutes ses fonctionnalités et le maîtriser dans ses moindres détails.
Mon conseil : n'hésitez pas à installer et à tester Netbeans et Eclipse. Après 2-3 semaines d'utilisation, vous vous sentirez forcément à l'aise sur l'un des deux. Et pour les plus courageux d'entre-vous qui choisiront de travailler avec le seul JWT, je ne peux vous conseiller d'utiliser l'excellent éditeur de texte gratuit qu'est Notepad++ .
Avant de vous laisser, je voulais vous dire que les installations de Netbeans et Eclipse feront l'objet de tutorials dans les prochains articles.

Sur ce, je vous souhaite plein de bon temps avec votre nouvel outil de travail !

Bienvenue sur J2ME Facile

View Comments
Bonjour à tous et bienvenue sur ce blog.

J2ME Facile est un blog dédié au langage de développement J2ME (vous vous en seriez doutés) : langage universel de programmation sur téléphones mobiles.
L'idée d'ouvrir ce blog m'est venue suite à une longue discussion avec un ami qui m'a conseillé d'ouvrir un espace qui serait une sorte de bloc-notes dans lequel je noterais les réponses à de nombreux problèmes. J'ai choisi le format d'un blog car il reprend assez facilement l'idée du petit carnet de notes dans lequel on écrit ce que l'on veut.
Mais avant d'aller plus loin, laissez-moi tout d'abord me présenter.

François K., 23 ans et actuellement en dernière année à l'EFREI (option Télécoms & Réseaux). Passionné de téléphonie mobile et de nouvelles technologies, je suis actuellement en stage dans une start-up qui fait des contenus pour mobiles.
C'est dans le cadre de ce stage que je suis amené à travailler beaucoup sur J2ME pour réaliser des applications mobiles. Doté d'une bonne expérience de la programmation et des langages de développement (même si je n'en suis pas fanatique), j'ai plaisir à diriger des projets et à étudier leur faisabilité. La partie réalisation (et donc développement) est donc une infime partie de mon travail mais il serait dommage de ne pas vous faire profiter de mes connaissances.

Concernant la fréquence de publication, j'essaierai de poster le plus fréquemment possible. Mais comme je ne suis pas "H24" en train de développer, il se peut qu'il y ait des jours où aucun articles ne puisse être publié ;-). Dans tous les cas, sachez que ce blog est pour moi une sorte de manuel personnel du J2ME et sera forcément mis à jour le plus souvent possible.

Sur ces derniers, je vous souhaite une agréable navigation et serai très heureux de vous voir ici très souvent.

François K.