Friday, November 27, 2009

La Fragmentation Java ME

Si on récapitule brièvement ce que l'on vient de dire dans ce premier article, on notera qu'il ya :
  • de plus en plus de mobile avec des caractéristiques différentes (taille d'écran, nombre et disposition des touches, écran tactile...)
  •  différents fournisseurs de KVM
  •  2 versions de CLDC
  •  3 (~4) versions de MIDP
  • des APIs optionnelles et/ou proprétaires
  •  ...
Ainsi on se retrouve avec un marché de mobile dans lequel les téléphones sont plus ou moins différents les uns des autres. Malheureusement pour les développeurs, ceci pose un problème assez connu dans le monde Java ME et qui est le problème de portabilité. Ce problème fait que le développement d'une application pour plusieurs téléphones avec un code unique devient un enjeux difficile. Plusieurs méthodes et actions ont été mises en place, en voici les plus intéressantes.

JTWI
La première action pour résoudre ce problème était la JSR 185 appelée Java Technology for Wireless Industry (JTWI) qui impose le support de MIDP 2.0, CLDC (1.1 ou 1.0), WMA et laisse optionnel celui de MMAPI.

MSA
Après la spécification JTWI, de plus en plus d'APIs ont vu le jour alors une nouvelle spécification appelée Mobile Service Architecture (MSA JSR 248) a été définie. Pour les mobiles a capacités relativement limitées, une sous couche de MSA a été mise en place.


MSA définie deux types de JSR: obligatoire ou obligatoire à condition. Les APIs qui nécessitent un matériel spécifique sont de type obligatoire à condition comme par exemple Location API (JSR 179) qui nécessite que le mobile soit équipe de GPS ou encore comme pour l'API Bluetooth.

Tout au long de ce live nous détaillerons toutes les APIs une par une et nous présenerons des exemples d'utilisation.

« Write  once,  run  anywhere »  ou  « ?»
    Java est un langage portable. Nous avons tous appris ça quand on a commencé à programmer sauf que ce qu'on oublie souvent de dire est que la portabilité n'est assurée que si on utilise la même machine virtuelle. Donc je dirais Java est portable si on l'exécute sur une JVM unique. Malheureusement, dans le monde de la téléphonie mobile, ce n'est pas le cas, on vient de voir que les téléphones embarquent des KVM avec un nombre d'APIs qui varient de 3 à 16!!
En plus vu que certaines APIs dépendent du matériel présent sur le mobile, on imagine bien que ceci peut être un facteur important quant à l'implémentation de l'API sur un téléphone donné. L'image ci dessous montre le nombre important de facteurs qui pourraient jouer sur la portabilité d'une application.

Malgré le JTWI et le MSA, aujourd'hui tous les développeurs ont recours à des outils et/ou des méthodes de développement pour s'assurer du bon fonctionnement de leurs applications sur un nombre important de téléphone.  Dans le prochain chapitre nous présenterons l'outil le plus utilisé: le pré-processeur.

No comments:

Post a Comment