J2ME

Fiche logiciel validé
  • Création ou MAJ importante : 10/10/10
  • Correction mineure : 07/10/13
Mots-clés
Pour aller plus loin
  • Mots-clés principaux : Java
Fiche en recherche de repreneur
Cette fiche est en recherche d'un repreneur. Si vous êtes intéressé(e)s, contactez-nous !

J2ME : développement d’application mobile sur machine virtuelle Java

Description
Fonctionnalités générales

Les technologies J2ME incluent un environnement d'exécution Java hautement optimisé s'adressant spécialement à l'espace grand public. Les technologies J2ME sont adaptées à une vaste gamme de petits objets et offrent sécurité, connectivité ainsi que des programmes utilitaires très utiles aux cartes à puces intelligentes, aux pagers, décodeurs et autres petits appareils : http://java.sun.com/javame/index.jsp

Développé par Sun (communauté du mobile et de l’embarqué - http://community.java.net/mobileandembedded/), J2ME (Java Platforms Micro Edition) est un produit open source de la famille de produits logiciels JAVA et est spécialisé exclusivement dans l’environnement mobile (PDA, Smartphone, téléphone portable, etc …). J2ME permet la portabilité des applications entre les différentes plateformes des constructeurs de périphériques mobiles grand public et intégrés. La technologie Java ME fournit une machine virtuelle et un ensemble d'API répartis dans deux composants principaux : les configurations et les profiles.

J2ME comporte un certain nombre de composants spécifiques et définis par le JCP (Java Community Process - http://java.sun.com/javame/technology/jcp.jsp). Cette communauté améliore, fait évoluer en permanence J2ME en vue de répondre en « temps réel » aux besoins (nouveaux dispositifs, nouveaux services).

Comme vu ci-dessus, J2ME s’articule autour d’une configuration et d’un profile qui sont définis par des JSR (Java Specifications Request).

Comme configuration, nous trouvons le « CDC » (Connected Device Configuration) ainsi que le « CLDC » (Connected Limited Device Configuration).
La configuration représente le socle de J2ME. Elle est constituée de la machine virtuelle et des librairies bas-niveaux. Leur utilisation est fonction du type de matériel où s'exécutera l'environnement Java. Les configurations sont empilables, de sorte que ce qui est prévu pour s'exécuter sur une configuration CLDC puisse s'exécuter sur une configuration CDC, par contre, la réciproque n'est pas vraie.

Comme profil, nous trouvons le « MIDP » (Mobile Information Device Profile), le « Foundation Profiles » (JSR 219) ainsi que le « Personal Profiles » (JSR 216) ou le « Personal Basis Profile » (JSR 217).
Le profil est une spécification détaillant une API. Il est basé sur une configuration qu'il utilise. Le profil est nécessaire pour fournir un environnement de fonctionnement complet pour un type d'appareil donné. Le profil fournit généralement l'interface utilisateur, les méthodes d'entrées-sorties et le mécanisme de persistance pour un groupe vertical d'appareil. Il doit se suffir à lui même et ne pas nécessiter l'ajout d'autres classes java. Toutefois certains profils peuvent être créés pour répondre à certaines capacités ou services d'appareils (RMI, multimédia,...). Un appareil peut donc supporter plusieurs profils. L'implémentation du profil est à la charge du fabricant de l'appareil qui porte la JVM sur son matériel.

Autres fonctionnalités

Afin de vérifier l’exécution du code J2ME, le « SDK 3.0 » propose un environnement de périphériques émulés et spécifique en fonction de l’association « Configuration - Profile » choisie. Pour une association « CLDC – MIDP », le SDK propose 7 émulateurs allant du téléphone au PDA. Pour une association « CDC – Profile choisi », le SDK ne propose que 3 émulateurs allant du Smartphone au PDA.

Un autre environnement d’émulation est proposé, c’est OTA (over-the-air - http://developers.sun.com/mobility/midp/articles/ota/) qui simule l’installation du package « jar » depuis un dépôt jusqu’au lancement de l’application sur le périphérique client.

Un dernier environnement d’émulation est proposé, c’est « JavaFX Mobile Emulator » (http://javafx.com/about/overview/). Cet émulateur fut intégré en mai 2007 suite à la décision du « Javaone » (conférence annuelle où les discussions portent sur les technologies Java - http://java.sun.com/javaone/). Il est composé de deux éléments : « JavaFX Scripts » et « JavaFX Mobile » et permet de créer des applications Internet riche (ou RIA) pour l’environnement mobile.

Pour terminer, le SDK 3.0 est composé d’une base de données native (BD de recherche de périphériques) regroupant un grand nombre de modèles de périphériques ainsi que de l’intégrateur open source « LWUIT » (Lightweight UI Toolkit) permettant d’apporter des composants graphiques plus riches que les librairies standards pour le développement d'applications mobiles. Ce dernier cas a été intégré en 2008 suite à la décision du « JavaOne ».

En fonction du but de l’application mobile à développer, le développeur devra faire appel aux différents « packages optionnels » référencés sous forme de JSR comme la JSR 82 (Java API for Bluetooth) ou la JSR 75 (PDA optional packages for J2ME), etc … Il existe un grand nombre d’APIs, de fonctionnalités complémentaires : http://java.sun.com/javame/technology/jcp.jsp. Cette liste est en perpétuelle évolution en fonction de l’état d’avancement des travaux du JCP.

Interopérabilité

J2ME interagit avec un grand nombre de systèmes d’exploitation mobiles tels que Windows Mobile, Symbian OS, Palm OS, etc … ainsi qu’avec un grand nombre de périphériques mobiles tels que les PDA, les Smartphone, les téléphones portables, etc …

La configuration CLDC s’associe au profile MIDP ainsi qu’à une machine virtuelle KVM (KiloByte Virtual Machine - machine virtuelle allégée de la JVM de J2SE).

La configuration CDC s’associe au profile « Foundation Profiles » ou « Personal Profiles » ou le « Personal Basis Profile » ainsi qu’à une machine virtuelle CVM (C-Virtual Machine - adhère complètement aux spécifications d’une JVM de J2SE). Dans ce cas, l’utilisation est très proche de J2SE ou J2EE.

Chaque configuration répond à un environnement spécifique lié aux caractéristiques et performances du périphérique. Le « CDC » ne sera utilisé que sur un PDA haut de gamme (processeurs 32 bits, 2 Mo de RAM et 2,5 Mo de ROM pour l'environnement) alors que le « CLDC » sera utilisé sur un PDA bas de gamme (processeur 16 ou 32 bits, au moins 150 Ko de mémoire non volatile alloués à la machine virtuelle et les librairies CLDC, au moins 192 Ko de mémoire totale disponible pour la plateforme Java, consommation d’énergie faible, une connexion à certains type de réseaux, souvent sans fil, avec connexion intermittente et bande passante limitée).

J2ME possède des APIs optionnelles pour environnement Windows 2000 (JSR 177), Windows NT (JSR 927), JDBC (JSR 169). Voir le lien : http://java.sun.com/javame/downloads/apis.jsp.

J2ME a été validé par un grand nombre d'industriels : http://java.sun.com/javame/licensees/index.jsp.

Contexte d'utilisation dans mon laboratoire/service

J2ME est utilisé par un grand nombre de constructeurs de périphériques mobiles grand public et intégrés (Samsung, Motorola, Sagem, Nokia, etc …) bien que de nouvelles solutions apparaissent telles que le système d’exploitation Androïd développé par Google (http://developer.android.com/index.html) et qui prend de plus en plus de place dans le monde du mobile. Beaucoup d'industriels s’intéressent à ce nouveau système d’exploitation et sont regroupés au sein du consortium OHA (Open Handset Alliance » - (http://www.openhandsetalliance.com/index.html).

J2ME est utilisé également dans un grand nombre de projets tels que le projet « GENETTA » financé par la région Bretagne (http://www.irisa.fr/lande/petit/genetta/) ou le projet open source « PhoneME » (https://phoneme.dev.java.net/phoneme_vision.html). Il est à noter que le projet « phoneME » avec son produit « PhoneME Advanced Software » propose un environnement fonctionnant sous Linux et Windows Mobile (https://phoneme.dev.java.net/downloads_page.html).

Autre environnement impacté, suite à la décision du « Javaone », J2ME tournant sous l’environnement MAC OS X. : http://java.sun.com/javame/downloads/sdk30_mac.jsp

Pour ma part, j’utilise J2ME dans le cadre de mon stage de fin d’études pour l’implémentation de la « gestion des profiles » (côté client) dans le cadre de l’environnement M2M (machine to machine) du projet ITEA2 « UseNet ». La configuration retenue est « CLDC 1.1 » (JSR 139) et le profile retenu est « MIDP 2.0 » (JSR 118). J’utilise aussi la JSR 75 entre autre pour la commande « FileConnection ».

L’utilisation du profil MIDP m’a permis de construire, côté client, une application appelée « MIDlet » ayant un cycle de vie spécifique et pouvant être déployée par OTA (grâce au fichier « jar » qui stocke les définitions des classes, ainsi que des métadonnées, constituant l'ensemble d'un programme et au fichier « jad » qui contient seulement des informations pour accéder au fichier « jar », permettant l’installation de ce dernier) ou OSGI (Open Services Gateway initiative - http://www.osgi.org/Main/HomePage). Ce type d’application possède trois méthodes qui permettent de gérer le cycle de vie de l'application en fonction des trois états possibles (active, suspendue ou détruite) : startApp() - Méthode appelée à chaque démarrage ou redémarrage de l'application. pauseApp() - Méthode appelée lors de la mise en pause de l'application. destroyApp() - Méthode appelée lors de la destruction de l'application.

Limitations, difficultés, fonctionnalités importantes non couvertes

Déroutant dans un premier temps, car le développeur ne dispose pas des trois-quarts des bibliothèques J2EE ou J2SE. Après un temps d’adaptation, J2ME fonctionne comme J2EE ou J2SE.

Certaines bibliothèques comme la bibliothèque « AWT » ne sont pas disponibles avec la configuration CLDC. Elles sont uniquement disponibles avec la configuration CDC ce qui ne m’a pas permis d’interroger le périphérique sur ses caractéristiques propres (notamment la taille écran).

J2ME est basé sur un ensemble de JSR optionnelles plus ou moins présentes d'un appareil à l'autre, ce qui ne facilite pas vraiment la tâche du développeur. Il faut toujours vérifier si la ou les JSR utilisées sont bien présentes. A l’inverse d’Androïd qui dispose d’une grosse API commune permettant de gérer la présence ou non des éléments (caméra, appareil photos, Wifi, GPS et autres).

Mais, il faut reconnaître que J2ME est un langage unifié, qui est « quasiment » portable d’un appareil à un autre.
Pour illustrer le « quasiment portable », nous pouvons noter que pour les téléphones « Imode », le profil MIDP doit être remplacé par le profil « Doja » qui est plus homogène entre les différents téléphones. L’API du profil « Doja » tire en particulier parti de l’écran couleur, des sonneries polyphoniques et de la connectivité de ces téléphones.

Pour conclure, J2ME permet le chargement dynamique d’un code source compact développé avec des outils homogènes.

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

Beaucoup d'applications mobiles sont développées en J2ME, applications que tout le monde utilise sur son téléphone portable, smartphone ou PDA.

Plates-formes

J2ME fonctionne sous l'environnement Windows et Linux.

J2ME est disponible sur MAC OS : http://java.sun.com/javame/downloads/sdk30_mac.jsp

La machine de développement doit avoir les pré-requis suivants :

  • 300-350 MB d’espace disque (Attention, il faut rajouter la taille du JDK 1.6 ou supérieur).
  • 1 GB de mémoire et plus
  • Un processeur de 1 GHz et plus
  • Microsoft Windows XP ou VISTA 32 bits avec les services packs à jour
  • JDK 1.6 ou supérieur
  • Apple QuickTime Player (optionnel)
  • ActiveSync 4.5

Le périphérique mobile doit avoir Windows Mobile 6.0 comme système d’exploitation avec 64 Mo de RAM au minimum et des fonctionnalités réseaux avancées de disponible comme l’USB to PC, le WIFI, le Bluetooth.

Autres logiciels aux fonctionnalités équivalentes

Le système d'exploitation open source "Androïd" (http://developer.android.com/index.html).

Environnement de développement
Eléments de pérennité

Ce produit est sous licence GPL (GNU Général Public Licence - http://www.gnu.org/gnu/gnu.html) depuis le 13 Novembre 2006. Avant, il était sous licence CDDL (Common Development and Distribution License) qui était destinée au projet OpenSolaris (http://fr.wikipedia.org/wiki/OpenSolaris). Cette licence fut créée par Sun Systems et était basée sur la licence « Mozilla Public Lecense v1.1 »..

"J2ME" est utilisé par un très grand nombre de constructeurs de périphériques mobile grand public et intégrés.

De plus, avec des groupes de travail "solides" (JCP, communauté du mobile et de l'embarqué de SUN, Javaone, etc ..), "J2ME" est un langage de programmation pérennisé et répondant aux divers besoins (présents et futurs) des développeurs.

Références d'utilisateurs institutionnels

Comme industriels utilisant la technologie J2ME, nous trouvons Motorola, Nokia, France Telecom, T-Mobile, Samsung et bien d'autres.

Environnement utilisateur
Liste de diffusion ou de discussion, support et forums
Documentation utilisateur
Divers (astuces, actualités, sécurité)