IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

 

Développons en Java   2.30  
Copyright (C) 1999-2022 Jean-Michel DOUDOUX    (date de publication : 15/06/2022)

[ Précédent ] [ Sommaire ] [ Suivant ] [Télécharger ]      [Accueil ]

 

123. J2ME / Java ME

 

chapitre    1 2 3

 

Niveau : niveau 4 Supérieur 

 

J2ME est la plate-forme Java pour développer des applications sur des appareils mobiles tels que des PDA, des téléphones cellulaires, des terminaux de points de vente, des systèmes de navigation pour voiture, ...

C'est une sorte de retour aux sources puisque Java avait été initialement développé pour piloter des appareils électroniques avant de devenir une plate-forme pour le développement et l'exécution d'applications polyvalentes.

Un environnement J2ME est composé de plusieurs éléments :

  • Une machine virtuelle dédiée tenant compte des ressources limitées du matériel cible
  • Un ensemble d'API de base
  • Des API spécifiques

Pour répondre à la plus large gamme d'appareils cibles, J2ME est modulaire grâce à trois types d'entités qui s'utilisent par composition :

  • Les configurations : définissent des caractéristiques minimales d'un large sous type de matériel, d'une machine virtuelle et d'API de base
  • Les profiles : définissent des API relatives à une fonctionnalité commune à un ensemble d'appareils (exemple : interface graphique, ...)
  • Les packages optionnels : définissent des API relatives à une fonctionnalité spécifique dont le support est facultatif

Ce chapitre contient plusieurs sections :

  • L'historique de la plate-forme : fournit un rapide historique de la plate-forme J2ME / Java ME
  • La présentation de J2ME / Java ME : présentation rapide des éléments et concepts de la plate-forme J2ME
  • Les configurations : présentation des deux configurations sur lesquelles la plate-forme J2ME repose
  • Les profiles : présentation des profiles qui enrichissent les configurations pour un type de machines ou à une fonctionnalité spécifique
  • J2ME Wireless Toolkit 1.0.4 : installation et mise en oeuvre de cet outil proposé par Sun pour le développement d'applications utilisant MIDP 1.0
  • J2ME wireless toolkit 2.1 : installation et mise en oeuvre de cet outil proposé par Sun pour le développement d'applications utilisant MIDP 1.0 et 2.0

 

123.1. L'historique de la plate-forme

Le langage Java a été développé à son origine pour la programmation d'appareils électroniques de grande consommation (langage Oak). Cependant au fil des années, Java a évolué pour être principalement utilisé pour le développement d'applications standalone et serveurs. La plate-forme Java ME peut ainsi être vue comme un retour aux buts originaux de Java.

Historiquement, Sun a proposé plusieurs plates-formes pour le développement d'applications sur des machines possédant des ressources réduites, typiquement celles ne pouvant exécuter une JVM répondant aux spécifications complètes de la plate-forme Java SE.

  • JavaCard (1996) : pour le développement sur des cartes à puces
  • PersonnalJava (1997) : pour le développement sur des machines possédant au moins 2Mo de mémoire
  • EmbeddedJava (1998) : pour des appareils avec de faibles ressources

En 1999, Sun propose de mieux structurer ces différentes plates-formes sous l'appellation J2ME (Java 2 Micro Edition). Courant 2000, la plate-forme J2ME est créée pour le développement d'applications sur appareils mobiles ou embarqués tels que des téléphones mobiles, des PDA, des terminaux, ... : elle est donc la descendante des différentes plates-formes antérieures relatives aux appareils mobiles. Seule la plate-forme JavaCard n'est pas incluse dans Java ME et reste à part.

Java ME cible de très nombreux appareils électroniques possédant différentes caractéristiques dans une même plate-forme.

En juin 2005, la plate-forme J2ME a été renommée, comme les autres plates-formes Java, en Java ME (Java Micro Edition).

 

123.2. La présentation de J2ME / Java ME

La plate-forme Java Mobile Edition (J2ME/Java ME) cible le marché des appareils électroniques et embarqués tels que les pagers, les téléphones cellulaires, les PDA, les set top boxes, etc ... Elle est composée de plusieurs éléments :

  • Des spécifications
  • Des machines virtuelles
  • Des API dédiées
  • Des outils pour le développement, le déploiement et la configuration

La plate-forme Java ME cible des appareils électroniques mobiles ou embarqués dont les caractéristiques peuvent être particulièrement différentes et qui représentent un nombre très important d'appareils différents. La grande difficulté est donc de définir une plate-forme qui propose des services pour le plus grand nombre d'appareils possible.

La seule solution pour répondre à cette problématique est de rendre la conception de la plate-forme modulaire. L'ensemble des appareils sur lequel peut s'exécuter une application écrite avec J2ME est tellement vaste et disparate que J2ME est composé de plusieurs parties : les configurations et les profiles qui sont spécifiés par le JCP. J2ME propose donc une architecture modulaire.

J2ME définit deux grandes familles d'appareils :

  • Appareils à fonctionnalités dédiées ou limitées : ressources et interface graphique limitées, peuvent se connecter par intermittence au réseau (exemple : téléphone mobile, agenda électronique, PDA, pagers, ...)
  • Appareils proposant une interface graphique riche, possédant une connexion continue au réseau (exemple : PDA haut de gamme, smartphone, set top boxes, système de navigation, ...)

La modularité de la plate-forme est assurée par trois concepts :

  • Configuration : définit une spécification pour une plate-forme Java pour une des deux familles définies, une machine virtuelle et des API de base
  • Profile : définit des API pour des fonctionnalités communes pour une catégorie d'appareils similaires. Un profile est définit pour une configuration sur laquelle il s'appuie et peut s'appuyer un autre profile
  • Package optionnel : définit des API pour des fonctionnalités spécifiques

L'inconvénient de ce principe est qu'il déroge à la devise de Java "Write Once, Run Anywhere". Ceci reste cependant partiellement vrai pour des applications développées pour un profile particulier. Il ne faut cependant pas oublier que les types de machines cibles de J2ME sont tellement différents (du téléphone mobile au set top box), qu'il est surement impossible de trouver un dénominateur commun. Ceci associé à l'explosion du marché des machines mobiles explique les nombreuses évolutions en cours de la plate-forme.

Java ME ne définit pas un nouveau langage de programmation mais adapte la technologie Java aux appareils mobiles et embarqués.

Java ME tente de conserver autant que possible la compatibilité avec Java SE. Pour répondre aux besoins spécifiques des appareils mobiles, Java ME remplace certaines API ou en propose de nouvelles.

Une application Java ME est organisée en plusieurs couches logicielles :

Application Java ME
Packages optionnels, API tiers
Profiles
Configuration
Machine virtuelle (VM)
Appareil

Une application est développée en reposant sur une configuration qui cible une large famille d'appareils cibles, un ou plusieurs profiles qui fournissent des fonctionnalités de base et des packages optionnels ou des API tiers pour des fonctionnalités spécifiques.

Chaque configuration peut être utilisée avec un ensemble de packages optionnels qui permet d'utiliser des technologies particulières (Bluetooth, services web, lecteur de codes barre, etc ...). Ces packages sont le plus souvent dépendant du matériel.

Les API tiers ne font pas partie de Java ME mais elles s'appuient sur elle ou l'étendent pour définir des API spécifiques à un appareil ou une fonctionnalité.

Par rapport à Java SE, Java ME utilise des machines virtuelles différentes. Certaines classes de base de l'API sont communes avec cependant de nombreuses omissions dans l'API Java ME.

Java ME définit des environnements qui servent de socles pour développer des applications portables :

  • Java Technologies for Wireless Industry
  • Mobile Service Architecture

Java ME est la plate-forme Java la plus récente.

De plus amples informations peuvent être obtenues sur le site :
https://www.oracle.com/java/technologies/javameoverview.html

 

123.3. Les configurations

Les configurations définissent les caractéristiques de bases d'un environnement d'exécution pour un certain type de machine possédant un ensemble de caractéristiques et de ressources similaires. Elles se composent d'une machine virtuelle et d'un ensemble d'API de base.

Deux configurations sont actuellement définies :

  • CLDC (Connected Limited Device Configuration)
  • CDC (Connected Device Configuration)

La CLDC 1.0 est spécifiée dans la JSR 030 : elle concerne des appareils possédant des ressources faibles (moins de 512 Kb de RAM, faible vitesse du processeur, connexion réseau limitée et intermittente) et une interface utilisateur réduite (par exemple un téléphone mobile ou un PDA "entrée de gamme"). Elle s'utilise sur une machine virtuelle KVM. La version 1.1 est le résultat des spécifications de la JSR 139 : une des améliorations les plus importantes est le support des nombres flottants.

La CDC est spécifiée dans la JSR 036 : elle concerne des appareils possédant des ressources plus importantes (au moins 2Mb de RAM, un processeur 32 bits, une meilleure connexion au réseau), par exemple un set top box ou certains PDA "haut de gamme". Elle s'utilise sur une machine virtuelle CVM.

 

123.4. Les profiles

Les profiles se composent d'un ensemble d'API particulières à un type de machines ou à une fonctionnalité spécifique. Ils permettent l'utilisation de fonctionnalités précises et doivent être associés à une configuration. Ils permettent donc d'assurer une certaine modularité à la plate-forme J2ME.

Il existe plusieurs profiles :

Profil
Configuration
JSR
 
MIDP 1.0
CLDC
37
Package javax.microedition.*
Foundation Profile
CDC
46
 

Personal Profile

CDC
62
 
MIDP 2.0
CLDC
118
 
Personal Basis Profile
CDC
129
 
RMI optional Profile
CDC
66
 
Mobile Media API (MMAPI) 1.1
CLDC
135
Permet la lecture de clips audio et vidéo
PDA
 
75
 
JDBC optional Profile
CDC
169
 
Wireless Messaging API (WMA) 1.1
CLDC
120
Permet l'envoi et la réception de SMS


Les utilisations possibles des profils sont :

Application Midlet
MIDP
CLDC

KVM

Application pour Palm
MIDP for Palm OS
CLDC

KVM

Application
Personal Profile
Personal Basis Profile
Foundation Profile
CDC

CVM

 

MIDP est un profile standard qui n'est pas défini pour une machine particulière mais pour un ensemble de machines embarquées possédant des ressources et une interface graphique limitée.

Sun a développé un profil particulier nommé KJava pour le développement spécifique sur Palm. Ce profile a été remplacé par un nouveau profil nommé MIDP for Palm OS.

Le Foundation Profile est un profil de base qui s'utilise avec CDC. Ce profil ne permet pas de développer des IHM. Il faut lui associer un des deux profils suivants :

  • le Personal Basic Profile permet le développement d'applications connectée avec le réseau
  • le Personal Profile est un profil qui permet le développement complet d'une IHM et d'applet grâce à AWT.

PersonalJava est remplacé par le Personal Profile.

Le choix du ou des profils utilisés pour les développements est important car il conditionne l'exécution de l'application sur un type de machine supporté par le profil.

Cette multitude de profils peut engendrer un certain nombre de problèmes lors de l'exécution d'une application sur différents périphériques car il n'y a pas la certitude d'avoir à disposition les profils nécessaires. Pour résoudre ce problème, une spécification particulière issue des travaux de la JSR 185 et nommée Java Technology for the Wireless Industry (JTWI) a été développée. Cette spécification impose aux périphériques qui la respectent de mettre en oeuvre au minimum : CLDC 1.0, MIDP 2.0, Wireless Messaging API 1.1 et Mobile Media API 1.1. Son but est donc d'assumer une meilleure compatibilité entre les applications et les différents téléphones mobiles sur lesquelles elles s'exécutent.

 

123.5. J2ME Wireless Toolkit 1.0.4

Sun propose un outil pour développer des applications J2ME utilisant CLDC/MIDP. Cet outil peut être téléchargé à l'url suivante : https://www.oracle.com/java/technologies/java-archive-downloads-javame-downloads.html

La version 1.0.4 de cet outil permet de développer des applications utilisant MIDP 1.0.

 

123.5.1. L'installation du J2ME Wireless Toolkit 1.0.4

L'installation ci-dessous concerne la version 1.0.4.

Il faut exécuter le fichier j2me_wireless_toolkit-1_0_4_01-bin-win.exe

Il faut suivre les instructions suivantes, guidées par l'assistant d'installation :

  • sur la page d'accueil (welcome) , cliquez sur "Suivant"
  • sur la page d'acceptation de la licence, lire la licence et l'approuver en cliquant sur "Yes"
  • sur la page de sélection de localisation de la JVM, cliquez sur "Next" (sélectionner l'emplacement si aucune JVM n'a été détectée automatiquement)
  • sélectionner l'emplacement de l'installation de l'outil et cliquez sur "Next"
  • cliquez sur "Next" pour accepter le menu par défaut dans le menu "Démarrer/Programme"
  • sur la page de résumé des opérations, cliquez sur "Next"
  • sur le dernière page (Complete), cliquez sur "Finish"

 

123.5.2. Les premiers pas

Il faut exécuter l'outil KToolBar.

Pour créer un projet, il faut cliquer sur le bouton "New Project" ou sur l'option "New Project" du menu "File".

Il faut saisir le nom du projet et le nom qualifié de la midlet puis cliquer sur "Create Project".

Il faut ensuite créer la ou les classes dans le répertoire src de l'arborescence du projet.

Pour construire le projet, il faut cliquer sur le bouton "Build".

Pour exécuter le projet, il suffit de choisir le type d'émulateur à utiliser et cliquer sur le bouton "Run".

Exemple : avec l'émulateur de téléphone par défaut.

Cliquer sur l'application "Test" puis cliquer sur le bouton entre les flèches

Il est aussi possible d'utiliser l'émulateur Palm POSE (Palm O.S. Emulator). L'outil demande le chemin d'accès à POSE,

Puis l'outil génère un fichier .prc.

Enfin, il lance l'émulateur et installe le fichier pour l'exécuter.

Pour plus de détails, voir la section sur MIDP for Palm OS.

 

123.6. J2ME wireless toolkit 2.1

La version 2.0 permet d'utiliser MIDP 1.0 ou 2.0 ainsi que les API optionnels Mobile Media et Wireless Messaging . Il peut être intégré dans d'autres IDE tels que Sun Studio Mobile Edition ou JBuilder.

La version 2.1 permet d'utiliser CLDC 1.1 et l'API J2ME Web service et de développer des applications pour des périphériques qui respectent les spécifications JTWI.

 

123.6.1. L'installation du J2ME Wireless Toolkit 2.1

La version 2.1 du J2ME Wireless Toolkit nécessite la présence sur le système d'un J2SE 1.4 minimum.

Elle permet le développement d'applications répondant aux spécifications de la JSR-185 (Java Technology for the Wireless Industry) qui inclue : CLDC 1.1, MIDP 2.0, WMA 1.1 MMAPI 1.1.

Elle permet aussi l'utilisation de la JSR-172 (J2ME Web Services Specification).

Lancer l'application j2me_wireless_toolkit-2_1-windows.exe. Un assistant guide l'utilisateur dans les différentes étapes de l'installation :

  • sur la page d'accueil, cliquez sur le bouton « Next »
  • sur la page « License Agreement » : lire la licence et si vous l'acceptez, cliquez sur le bouton « Yes »
  • sur la page « Java Virtual Machine Location » : le programme détecte automatiquement la présence d'un JDK 1.4 ou supérieure, cliquez sur le bouton « Next »
  • sur la page «  Choose Destination Location » : sélectionnez le répertoire d'installation de l'application et cliquez sur le bouton « Next »
  • sur la page « Select Program Folder » : saisissez ou sélectionner le dossier du menu démarrer qui va contenir les raccourcis vers l'application si celui par défaut ne convient pas. Cliquez sur le bouton « Next »
  • sur la page « Start Copying files » : un résumé des options d'installation est affiché. Cliquez sur le bouton « Next »
  • les fichiers de l'application sont copiés. Une fois celle-ci terminée, la page « Installshield Wizard Complete » s'affiche. Cliquez sur le bouton « Finish ».

L'installation créé les répertoires suivants :

appdb\

contient les bases de données de type RMS des applications

apps\

contient les applications développées comme applications de démo

bin\

contient les outils du WTK

docs\

contient la documentation du WTK et des API

lib\

contient les bibliothèques des API

 

123.6.2. Les premiers pas

L'outil Ktoolbar est un petit IDE qui permet de compiler, pré-vérifier, packager et exécuter des applications utilisant le profile MIDP. Il ne permet pas l'édition du code des applications : il faut utiliser un éditeur externe pour réaliser cette tâche.

La première chose à faire pour créer une application est de créer un nouveau projet. Pour cela, il faut sélectionner l'option « File/New Project » du menu ou cliquer sur le bouton « New Project » dans la barre d'outils.

Il faut saisir le nom du projet et le nom de la classe de la Midlet.

La création du projet permet la création d'une structure de répertoires dans le sous-répertoire apps du répertoire du WTK. Dans ce répertoire apps, un répertoire est créé nommé du nom du projet. Ce répertoire contient lui-même plusieurs sous-répertoires :

%WTK%/apps/nom_projet/bin

contient le fichier jar, jad et le fichier manifest

%WTK%/apps/nom_projet/classes

contient les classes compilées

%WTK%/apps/nom_projet/lib

contient les bibliothèques utiles à l'application

%WTK%/apps/nom_projet/res

contient les ressources utiles à l'application

%WTK%/apps/nom_projet/src

contient les sources des classes


La page des propriétés du projet est différente de celle proposée dans la version 1.0. Pour l'utiliser, il faut utiliser l'option « Project/settings » ou cliquer sur le bouton « Settings » de la barre d'outils.

L'onglet « API sélection » permet de sélectionner la plate-forme cible ainsi que les API particulières qui vont être utilisées par l'application.

Le « target plateform » permet de sélectionner le type de plate-forme cible utilisée :

  • JTWI : plate-forme répondant aux spécifications de la JSR-185
  • MIDP 1.0 : plate-forme composée de CLDL 1.0 et MIDP 1.0
  • Custom : plate-forme personnalisée pour laquelle il faut préciser toutes les API utilisées

L'onglet « Required », « Optionnal » et «  User defined » permet de préciser les attributs respectivement obligatoires, optionnels et particuliers à l'application dans le fichier manifest sous la forme de paires clé/valeur.

L'onglet « Midlets » permet de saisir les Midlets qui composent la suite de Midlets de l'application.

Pour créer et éditer le code des classes qui composent l'application, il faut utiliser un outil externe dans le répertoire %WTK%/apps/nom_projet/src, en respectant la structure des répertoires correspondant aux packages des classes.

La compilation et la pré-vérification des sources se fait en utilisant l'option « Build » du menu « Project » ou en cliquant sur le bouton « Build ».

Si aucune erreur de compilation n'est détectée, il est possible d'exécuter le code en utilisant l'option « Run » du menu « Project » ou en cliquant sur le bouton « Run » de la barre d'outils.

Avant de lancer l'exécution, il est possible de sélectionner l'émulateur de périphérique (device) utilisé pour exécuter le code. Le J2ME Wireless Toolkit 2.1 est fourni avec quatre émulateurs :

  • DefaultColorPhone : un téléphone mobile avec un écran couleur. C'est l'émulateur par défaut.
  • DefaultGrayPhone : un téléphone mobile avec un écran monochrome
  • MediaControlSkin : un téléphone mobile avec des capacités multimédia accrues (video et audio)
  • QwertyDevice : un périphérique avec un clavier Qwerty

L'option « Clean » du menu « Project » permet de faire du ménage dans les fichiers temporaires générés lors des différents traitements.

Le bouton « Clear console » permet d'effacer le contenu de la console.

L'option « Package » du menu « Project » propose deux options pour packager l'application une fois celle-ci mise au point :

  • « Create package » : permet de créer un package sous la forme de fichiers .jar et .jad
  • « Create obfuscated package » : permet de créer un package sous la forme d'un fichier .jad et d'un fichier .jar plus compact, et ceci grâce à un outil tiers non fourni réalisant l'opération d'obscurcissement

 

 


[ Précédent ] [ Sommaire ] [ Suivant ] [Télécharger ]      [Accueil ]

78 commentaires Donner une note à l´article (5)

 

Copyright (C) 1999-2022 Jean-Michel DOUDOUX. Vous pouvez copier, redistribuer et/ou modifier ce document selon les termes de la Licence de Documentation Libre GNU, Version 1.1 ou toute autre version ultérieure publiée par la Free Software Foundation; les Sections Invariantes étant constitués du chapitre Préambule, aucun Texte de Première de Couverture, et aucun Texte de Quatrième de Couverture. Une copie de la licence est incluse dans la section GNU FreeDocumentation Licence. La version la plus récente de cette licence est disponible à l'adresse : GNU Free Documentation Licence.