Java Platform, Micro Edition ou Java ME est une plate-forme informatique pour le développement et le déploiement de code portable pour les appareils embarqués et mobiles (microcontrôleurs, capteurs, passerelles, téléphones mobiles, assistants numériques personnels, décodeurs TV, imprimantes). Java ME était anciennement connu sous le nom de Java 2 Platform, Micro Edition ou J2ME .
La plate-forme utilise le langage de programmation orienté objet Java et fait partie de la famille des plates-formes logicielles Java . Elle a été conçue par Sun Microsystems (aujourd'hui Oracle Corporation ) et a remplacé une technologie similaire, PersonalJava .
En 2013, avec plus de 3 milliards de téléphones mobiles compatibles Java ME sur le marché, la plateforme était en déclin continu, les smartphones ayant dépassé les téléphones classiques.
Histoire
La plateforme était autrefois très populaire dans les téléphones classiques, comme les modèles Nokia Series 40. Elle était également prise en charge par le système d'exploitation Bada et Symbian OS avec des logiciels natifs. Les utilisateurs de Windows CE , Windows Mobile , Maemo , MeeGo et Android pouvaient télécharger Java ME pour leurs environnements respectifs (« preuve de concept » pour Android).
Initialement développés dans le cadre du Java Community Process sous le nom de JSR 68, les différentes versions de Java ME ont évolué dans des JSR distinctes. Les périphériques Java ME implémentent un profil . Les plus courants sont le profil de périphérique d'information mobile destiné aux périphériques mobiles tels que les téléphones portables, et le profil personnel destiné aux produits grand public et aux périphériques intégrés tels que les décodeurs et les PDA. Les profils sont des sous-ensembles de configurations , dont il existe actuellement deux : la configuration de périphérique limité connecté (CLDC) et la configuration de périphérique connecté (CDC).
En 2008, les plates-formes Java ME étaient limitées aux fonctionnalités JRE 1.3 et utilisaient cette version du format de fichier de classe (connue en interne sous le nom de version 47.0).
Implémentations

Oracle fournit une implémentation de référence de la spécification, ainsi que certaines configurations et profils pour MIDP et CDC. À partir du SDK JavaME 3.0, un IDE basé sur NetBeans les a pris en charge dans un seul IDE.
Contrairement aux nombreuses implémentations binaires de la plate-forme Java construites par Sun pour les serveurs et les stations de travail, Sun avait tendance à ne pas fournir de binaires pour les plates-formes des cibles Java ME, et s'appuyait plutôt sur des tiers pour fournir les leurs.
L'exception était un JRE MIDP 1.0 (JVM) pour Palm OS. Sun ne fournit pas de JRE J2ME pour les appareils basés sur Microsoft Windows Mobile (Pocket PC), malgré une campagne de lettres ouvertes adressée à Sun pour publier une implémentation interne de PersonalJava connue sous le nom de code « Captain America ». Les implémentations tierces sont largement utilisées par les fournisseurs de Windows Mobile.
À un moment donné, Sun a publié une implémentation de référence désormais abandonnée sous le nom de phoneME .
Les systèmes d'exploitation ciblant Java ME ont été implémentés par DoCoMo sous la forme de DoJa et par SavaJe sous la forme de SavaJe OS. Cette dernière société a été rachetée par Sun en avril 2007 et constitue désormais la base de JavaFX Mobile de Sun.
La machine virtuelle open source Mika vise à implémenter JavaME CDC/FP, mais n'est pas certifiée comme telle (les implémentations certifiées sont tenues de facturer des royalties, ce qui est peu pratique pour un projet open source). Par conséquent, les appareils qui utilisent cette implémentation ne sont pas autorisés à revendiquer la compatibilité JavaME CDC.
Le système d'exploitation Android basé sur Linux utilise une version propriétaire de Java qui est similaire dans son intention, mais très différente à bien des égards de Java ME.
Émulateurs
- Sun Java Wireless Toolkit (WTK, en abrégé) est un émulateur Java ME propriétaire, fourni à l'origine par Sun Microsystems, puis par Oracle.
- MicroEmulator (MicroEMU, en abrégé) est un émulateur Java ME open source.
Il existe d'autres émulateurs, notamment des émulateurs fournis dans le cadre de kits de développement par des fabricants de téléphones, tels que Nokia, Sony-Ericsson , Siemens Mobile, etc.
Configuration limitée des appareils connectés
La configuration limitée des périphériques connectés (CLDC) contient un sous-ensemble strict des bibliothèques de classes Java et constitue la quantité minimale nécessaire au fonctionnement d'une machine virtuelle Java . CLDC est essentiellement utilisée pour classer une myriade de périphériques dans une configuration fixe.
Une configuration fournit l'ensemble le plus basique de bibliothèques et de fonctionnalités de machine virtuelle qui doivent être présentes dans chaque implémentation d'un environnement J2ME. Associée à un ou plusieurs profils, la configuration de périphérique limité connecté offre aux développeurs une plate-forme Java solide pour créer des applications pour les périphériques grand public et intégrés. La configuration est conçue pour les périphériques dotés d'une mémoire totale de 160 Ko à 512 Ko, avec un minimum de 160 Ko de ROM et 32 Ko de RAM disponibles pour la plate-forme Java.
Profil d'appareil d'information mobile
Conçu pour les téléphones mobiles, le profil Mobile Information Device Profile comprend une interface graphique utilisateur et une API de stockage de données, tandis que le profil MIDP 2.0 comprend une API de jeu 2D de base . Les applications écrites pour ce profil sont appelées MIDlets .
JSR 271 : Mobile Information Device Profile 3 (version finale le 9 décembre 2009) a spécifié le profil de périphérique d'information mobile de 3e génération (MIDP3), en élargissant les fonctionnalités dans tous les domaines et en améliorant l'interopérabilité entre les périphériques. L'un des objectifs clés de la conception du MIDP3 est la rétrocompatibilité avec le contenu du MIDP2.
Profil du module d'information
Le profil de module d'information (IMP) est un profil pour les appareils intégrés « sans tête » tels que les distributeurs automatiques, les applications industrielles intégrées, les systèmes de sécurité et les appareils similaires dotés d'un écran simple ou sans écran et d'une connectivité réseau limitée.
Initialement introduit par Siemens Mobile et Nokia sous le nom de JSR -195, IMP 1.0 est un sous-ensemble strict de MIDP 1.0, à l'exception du fait qu'il n'inclut pas les API d'interface utilisateur , autrement dit, il n'inclut pas la prise en charge du package Java javax.microedition.lcdui. JSR-228, également connu sous le nom d'IMP-NG, est la nouvelle génération d'IMP basée sur MIDP 2.0, exploitant les nouveaux types et API de sécurité et de mise en réseau de MIDP 2.0, ainsi que d'autres API telles que PushRegistryet platformRequest(), mais encore une fois, il n'inclut pas les API d'interface utilisateur, ni l'API de jeu.
Configuration des appareils connectés
La configuration des appareils connectés est un sous-ensemble de Java SE , contenant presque toutes les bibliothèques qui ne sont pas liées à l'interface graphique. Elle est plus riche que CLDC.
Profil de la Fondation
Le profil Foundation est un profil de configuration d'appareil connecté Java ME (CDC). Ce profil est destiné à être utilisé par les appareils nécessitant une implémentation complète de la machine virtuelle Java jusqu'à et y compris l'intégralité de l'API Java Platform, Standard Edition. Les implémentations typiques utiliseront un sous-ensemble de cet ensemble d'API en fonction des profils supplémentaires pris en charge. Cette spécification a été développée dans le cadre du processus communautaire Java.
Profil de base personnel
Le profil de base personnel étend le profil de base pour inclure une prise en charge d'interface utilisateur graphique légère sous la forme d'un sous-ensemble AWT . C'est sur cette plate-forme que BD-J est construit.
JSR (demandes de spécifications Java)
Fondation
Extensions principales
Avenir
ESR
Le consortium ESR se consacre aux normes pour Java embarqué. Des normes particulièrement rentables. Les domaines d'application typiques sont le contrôle industriel, le machine-to-machine, le médical, les compteurs électroniques, la domotique , le grand public, l'interface homme-machine, ...