# Java ME

En informàtica, la plataforma Java Micro Edition (en anglès, Java Platform, Micro Edition), també coneguda com a Java ME, és una especificació subconjunt de la plataforma Java creada per tal de proporcionar d'una col·lecció d'API per al desenvolupament de programes per a dispositius mòbils amb pocs recursos. Sovint també és coneguda pel seu antic nom: Java 2 Platform, Micro Edition (J2ME)
Java ME va ser dissenyat per Sun Microsystems com a reemplaçament de PersonalJava. Inicialment J2ME va ser desenvolupat per la Java Community Process amb el seu corresponent document formal (Java Specification Request - JSR 68).
El 22 de desembre de 2006, el codi font de Java ME va ser alliberat sota la llicència GNU General Public License. El nom del projecte és phoneME.

## Arquitectura Java ME
### Components

L'arquitectura Java ME té els següents components:
* Configuració: Una configuració té dos parts:
** Màquina virtual: La màquina virtual Java adaptada a les característiques dels dispositius mòbils
** Conjunt d'API per al suport d'aplicacions que són compartides pel conjunt de dispositius que suporten la configuració
* Perfils: és un conjunt d'API de més alt nivell que les proporcionades per les configuracions, que proporcionen suport per al desenvolupament d'aplicacions (cicles de vida, interfícies d'usuari, capacitats de connexió, etc.) en dispositius mòbils. Cada perfil està dissenyat per a una configuració concreta.
* Paquets opcionals: Són paquets opcionals de programari que permeten estendre les capacitats de les aplicacions Java ME.

### Màquina virtual

La màquina virtual és la capa més baixa de l'arquitectura Java ME i, per tant, és la més propera al maquinari. A diferència del que succeeix en ordinadors personals, les màquines virtuals en dispositius mòbils venen proporcionades pel fabricant del dispositiu, és a dir, estan incorporades en el dispositiu.
En Java ME, ens trobem amb 2 màquines virtuals principals, segons el tipus de configuració:
* CLDC: KVM és una màquina virtual per a dispositius MID amb recursos limitats. Es tracta d'una versió reduïda de la JVM.
* CDC: Utilitza la Java Virtual Machine (JVM) que s'utilitza en ordinadors o dispositius mòbils avançats.

### Perfils
#### Perfils CLDC
##### Information Module Profile

El perfil Information Module Profile (definit al JSR 195) està dissenyat per a màquines d'auto-vending, targetes de xarxa, encaminadors o altres dispositius amb una pantalla molt simple o sense pantalla i que tenen connexió limitada a xarxa.
Els creadors d'aquesta especificació van ser Siemens Mobile i Nokia.

##### DoJa Profile

Aquest perfil va ser dissenyat per als mòbils i-mode de DoCoMo

#### Perfils CDC

* Foundation Profile
** API similar a la de Java SE
** Sense interfície gràfica d'usuari
* Personal Basis Profile
** És una extensió dels perfil Foundation Profile
** Suport per a interfícies gràfiques d'usuari lleugeres. Suporta algunes classes de AWT, però no tots els Widgets. Per exemple no suporta java.awt.Button perquè aquest tipus de widget pressuposa que es disposa d'un dispositiu punter com un ratolí.
** Basada en BD-J
* Personal Profile
** Extensió del perfil Personal Basis Profile
** Suport complet AWT
** Suport complet d'Applets
** Les aplicacions Java són fàcils de passar a aquest perfil

### Paquets opcionals

* Wireless Messaging API (WMA): Enviament i recepció de missatges SMS
* Mobile Media API (MMAPI): Multimèdia, reproducció i captura de vídeo i àudio
* Bluetooth API: Permet establir connexions Bluetooth
* J2ME Web Services: Invocació de serveis web des de dispositius mòbils.
* Mobile 3D Graphics: Permet incorporar gràfics 3D.

## Vegeu també

* Java
* MIDP
* MIDlet
* CLDC
* CDC
* Sun Java Wireless Toolkit

## Enllaços externs

* Pàgina oficial de Java ME (en anglès)
* JSR 68