d'une KVM (Kilobyte Virtual Machine), une machine virtuelle capable d'exécuter une application Java;
d'un ensemble de bibliothèques, notamment une API donnant accès aux fonctions de base du système ainsi qu'aux fonctions spécifiques de l'eco-système visé.
Configurations
Les configurations les plus courantes en 2014 sont:
CLDC (Connected Limited Device Configuration), que l'on retrouve par exemple dans les téléphones mobiles;
CDC (Connected Device Configuration), qui est plutôt utilisé dans des décodeurs de télévision numérique.
À la même époque, les profils les plus courants sont:
MIDP (Mobile Information Device Profile), dont sont équipés les téléphones WAP Java ME;
MicroUI (Micro User Interface) standard (ESR Consortium) pouvant équiper les petits microcontrôleurs jusqu'aux tablettes sous Android et iPhone.
Les téléphones se caractérisent par leur fragmentation qui se traduit sur Java ME: les caractéristiques des téléphones mobiles sont différentes d'un constructeur à un autre, rendant ainsi complexe et coûteux le développement d'applications mobile.
Certaines applications sont développées pour fonctionner sur un nombre important de portables (par exemple: Google Maps, Opera Mini). D'autres se doivent d'être développées pour correspondre précisément aux caractéristiques des téléphones ciblés. Cette étape s'appelle le portage. Plusieurs solutions de portage, à partir d'un code source Java ME commun, existent, notamment NeoMAD de Neomades ou encore Celsius de Mobile Distillery.