Qu'est ce que J2ME ?

La Plate-forme Java 2, Micro Edition (plate-forme J2ME), est la plate-forme Java des périphériques grand public et intégrés, tels que les téléphones portables, les assistants numériques personnels (PDA), les décodeurs TV et tout un éventail d'autres appareils mobiles et sans fil. J2ME est semblable à l'environnement d'exécution Sun Java, Standard Edition (JRE)

Présentation, cours et tutoriaux J2ME

Des exemple de sources et codes pour J2ME

Les plugins J2ME pour les IDE java

J2ME sous Eclipse : EclipseME

Sachez qu'il existe un plug-in gratuit Eclipse pour programmer avec J2ME, il s'agit de EclipseME. Pour l'installer, consultez l'installation de plugins pour Eclipse.

J2ME sous Netbeans : Le NetBeans Mobility Pack

Le Pack NetBeans Mobile (NetBeans Mobility Pack) ajoute à l'IDE NetBeans tout ce qui est nécessaire pour commencer immédiatement à écrire, tester, débuger des applications Java pour téléphone mobiles et les autres appareils compatibles Java Micro Edition (Java ME).

  • Le Pack NetBeans Mobile fournit un support intuitif et complet pour les configurations des appareils connectés limités (Connected, Limited Device Configuration) CLDC 1.1, les profils des appareils d'information mobiles (Mobile Information Device Profile) MIDP 1.0 et 2.0, et inclut un outils de conception visuel pour les applications mobiles, intégrant les application avec les services web. Il inclut le kit Java ME pour les sans fil et des émulateurs d'appareils, aussi aucun téléchargement supplémentaires sont nécessaire pour commencer à travailler avec les technologies mobiles.
  • Le Pack NetBeans Mobile pour CDC fournit le support pour les Configurations d'Appareil Connecté (Connected Device Configuration) CDC et les appareils Profils Personnels. L'ensemble des packs vous permet d'intégrer facilement des émulateurs tiers et des kits de développements logiciels pour un environnement de test robuste.

Le 30/11/2006, le Journal du Net Développeur > Outils > Les environnements de développement Mobile > Java ME explique entre autre :

Les outils de développement Java disposent de versions capables de travailler pour Java ME : Eclipse avec Mobile Tools for Java (MTJ), tandis que Netbeans dispose d'un Mobility Pack. Là où Netbeans MP se spécialise dans le profil "bas" (MIDP/CLDC), Eclipse MJT reconnaît les deux configurations, et plusieurs profils (MIDP, Foundation Profile et Personal Profile).

Vrac

Si tu regardes les caractéristiques d'un téléphone, tu peux déjà savoir si le téléphone est compatible Java. Si tu veux plus de détails : Club-Java (http://www.club-java.com/TastePhone/J2ME/MIDP_mobile.jsp) et JBenchmark (http://www.jbenchmark.com/result.jsp) les applications peuvent se déployer par cable par réseau sans fil à proximité (infrarouge ou bluetooth), mais tu peux également installer tes applications via OTA (téléchargement de l'application par le WAP).

Ici tu as une liste téléphone supportant le J2ME http://developers.sun.com/techtopics/mobility/device/device y'a même la version des software MIDP CLDC supporté... A partir de là tu pourra commencer tes recherches... Sinon le site de sun est tres fourni en explication etc, voila la section pour les portables : http://java.sun.com/j2me/index.jsp

Tu peux aussi regarder http://www.jbenchmark.com/index.jsp pour avoir une idée de la rapidité de la JVM embarqué sur les téléphones et aussi suivant le firmware, cas vécu avec un T610 : entre la 1ere version du firmware et les versions suivantes, un facteur x2 de différence

pour résumer :

Vérifie que le portable que tu as choisi est compatible JAVA (cela signifie qu'il possède une machine virtuelle JAVA capable d'exécuter une application J2ME) Tu peux vérifier cela en consultant les détails du téléphone sur le site du constructeur, si tout est ok tu auras une ligne du genre "J2ME MIDP 2.0" installe un Wireless Toolkit (émulateur de portable) et crée tes propres applications avec un IDE adapté (Eclipse + EclipseME par exemple) Compile tes applications Déploie tes applications : Avec un câble Série / USB ou en Bluetooth / Infrarouge / wifi A l'aide d'OTA : déploiement de l'application sur un serveur web (si le téléphone est compatible)

Les pré-requis sont : Connaître JAVA, avoir de la place sur son disque dur, Eclipse + Java Sun Wireless Toolkit => espace > 100Mo, et avoir beaucoup de temps..

Juste un complément, un site que je trouve pas mal pour connaître les réelles capacités de son téléphone JAVA : http://www.club-java.com/TastePhone/J2ME/MIDP_Benchmark.jsp

Cette liste est mise à jour à partir d'une midlet que l'on peut télécharger à partir de http://wap.club-java.com/en

Par ailleurs, notez que J2ME sur Windows Mobile, c'est franchement limité et capricieux. Si vous avez un WM alors pensez plutôt C#

Comparatif Java 2 Micro Edition (J2ME) Versus Microsoft Embedded Architecture (2002)

Les packages de la J2ME

Tutoriel de transfert Java: Mobile -> PC, Ou comment transférer des progs Java

Je cherche des infos sur la java mobile, je connais la java doc "normale" J2SE mais ou trouver sont équivalent J2ME ??? Il faut utiliser les liens vers les différentes API... depuis Java ME : http://java.sun.com/javame/reference/apis.jsp

CLDC http://java.sun.com/j2me/docs/pdf/cldc11api.pdf

Pour la "standard" java.utils.* et autres mais pour le package EM On y trouve simplement javax.microedition.io et si on cherche javax.microedition.lcdui.* ???

Et bien il faut les spec MIDP 2.0 ici : http://jcp.org/aboutJava/communityprocess/final/jsr118/index.html

Un site qui semble découvrir et évoluer avec Eclipse

http://www.blognote-info.com/index.php?Eclipse, il propose également son formateur de code pour indenter automatiquement son code source sous Eclipse.

Aussi, il trace la route pour developper en J2ME avec des liens intéressants :

Java Mobile programmation

Ressources de développement J2ME.

MicroEmulator

MicroEmulator is a pure Java implementation of J2ME in J2SE. MicroEmulator is licensed under LGPL so it is possible to link and distribute commercial software with its libraries.

javax.microedition.midlet
J2ME sur zdnet


** Pointeurs d'enregistrement complexes
** Trouver des enregistrements avec RecordFilter

J2ME Sources
  • Gestion de fichiers
    • Navigation et sélection dans le système de fichiers FileChooser permet de naviguer dans le système de fichiers et d'en sélectionner un en particulier. Il permet également de créer et de supprimer des dossiers ou des fichiers.
    • Lire et écrire des fichiers FileIO permet d'effectuer les opérations de base sur des fichiers et des dossiers (créer, écrire, lire, supprimer...).
  • Graphisme et interfaces graphiques
    • Un menu graphique Il s'agit d'un menu graphique dans lequel les articles se mettent sur plusieurs colonnes, en fonction de la taille de l'écran et des choix du développeur.
  • Utils
    • Imitation des fichiers de propriétés de J2SE D'une manière similaire que le font les fichiers de propriétés en J2SE, cette classe permet de stocker des informations dans un RecordStore afin de les récupérer lors d'une exécution ultérieure.
Sun
Premier test avec NetBeans et un PDA : HTC TyTN II
  • Echec lors de l'installation du jad
    • MIDlet: MobileApplication1 n'est pas fiable. Continuer ?
    • MobileApplication1 ne peut être trouvé dans le dossier d'installation locale - 77

Résolu : suite à la compilation par NetBeans, j'ai du déployer le .jar et non le .jad

Tests suivants avec un SPV M650

Exécuter un programme externe

String progToLaunch = "http://www.placeoweb.com/";
                boolean retour = false;                
                retour = platformRequest(progToLaunch);

Permet de lancer le navigateur avec cette adresse de définie.

Tester vos connaissances
Ressources
Exécuter une application externe en Java
Open Source Softwares for Mobile Phone
Choix d'un framework ou libs pour développer rapidement du J2ME
Java embedded (embarqué)
J2ME RMS

RMS (Record Management System) est une API de stockage persistent sur le terminal. C'est en quelque sorte une base de données indépendante du terminal. Chaque enregistrement est représenté sous forme de tableau d'octets. La mise est jour est dite atomique : l'enregistrement entier est réécrit à chaque fois. Les enregistrements sont stockés dans ce que l'on appelle un Record store. Si l'on veut faire un parallèle avec les SGBD relationnels, RMS correspond au SGBD lui-même et le Record store à la table. D'ailleurs, le parallèle de la notion de clé primaire des bases de données relationnelles est le recordID. Il s'agit de l'identifiant de l'enregistrement. C'est un nombre entier. La valeur de l'ID du premier enregistrement est 1 et chaque nouvel enregistrement a une valeur ID augmentée de un. Plusieurs méthodes permettent de gérer les Records store. openRecordStore et closeRecordStore permettent respectivement d'ouvrir et de fermer un Record store. La liste de tous les Record store peut être obtenue par listRecordStore. deleteRecordStore en supprime un. Le nombre d'enregistrements dans un Record store est retourné par getNumRecords. Les opérations de base sur les enregistrements sont assurées par ces méthodes : addRecord (ajout), deleteRecord (suppression), getRecord (lecture), setRecord (modification), getRecordSize (taille de l'enregistrement). L'API RMS dispose cependant de quelques particularités supplémentaires, concernant la sélection des enregistrements. La première est l'utilisation de la méthode RecordEnumeration pour lister tous les enregistrements du Record store. La seconde est la possibilité de définir un filtre avec la méthode RecordFilter. Enfin, l'interface RecordComparator doit être implémentée pour que des enregistrements puissent être comparés et donc triés.

J2ME WS (Web Service) JSR 172
Sun Mobile
API Doc JavaDoc