Java ME

Java Platform, Micro Edition (neboli Java ME, dříve označovaná jako Java 2 Micro Edition nebo J2ME) je jedna z několika základních platforem Javy (spolu s Java SE, Java EE a Java Card). Někteří považují Java Card za podsoučást Java ME. Jedná se o podmnožinu Java platformy SE, s cílem nabídnout sbírku API určenou pro vývoj software pro malá zařízení a zařízení s omezenými prostředky.

Java ME bylo vyvinuto firmou Sun Microsystems a nahrazuje dřívější technologii, tzv. PersonalJava. Bylo vydáno pod licencí GNU General Public License.

Dělení na konfigurace a profily 

Java ME je rozdělena podle náročnosti API do dvou základních konfigurací. Konfigurace je specifikace, která definuje softwarové prostředí pro skupinu zařízení. 

Každá konfigurace je navržena tak, aby představovala základní platformu pro dané zařízení a není povoleno ji dále rozšiřovat. V současné době jsou definovány dvě konfigurace - CLDC a CDC. 

Specifikace konfigurace nevyžaduje po implementaci použití žádného konkrétního virtuálního stroje (VM). Výrobci si mohou vytvořit své vlastní VM splňující specifikaci. Sun poskytuje referenční implementaci pro oba typy konfigurací. Referenční KVM je ve zdrojovém tvaru.

Vztah platforem Java SE a konfigurací Java ME CDC a CLDC

Connected Limited Device Configuration (CLDC) 

CLDC je určen především pro mobilní telefony či PDA s malou pamětí. Aplikace v CLDC konfiguraci se nazývají MIDlety (hlavní třída je potomkem abstraktní třídy javax.microedition.midlet.MIDlet). V současné době drtivé množství výrobců mobilních telefonů implementuje CLDC ve svých výrobcích.

Nároky na paměť:

Vyžaduje 160 kB ROM a 32 kB RAM.
Specifikace CLDC nevyžaduje po implementaci použití žádného konkrétního virtuálního stroje (VM), nicméně Sun Microsystems poskytuje referenční VM - tzv. 

Kilobyte Virtual Machine, s velmi malými paměťovými nároky. 
CLDC konfigurace 1.0 obsahuje tyto balíčky 

 java.io - poskytuje vstupní a výstupní datové proudy
 java.lang - poskytuje třídy nutné pro návrh v programovacím jazyce Java
 java.util - obsahuje framework kolekcí, nástroje pro usnadnění práce s datem a časem, a další různorodé nástroje
 javax.microedition.io - třídy pro správu všeobecného spojení

Základní syntaxe jazyka Java je stejná, jako ve všech ostatních edicích. V podstatě se jedná o Java SE o několik let zpět. 
Protože CLDC používá redukovaný virtuální stroj KVM, který neobsahuje plnohodnotný verifikátor bytekódu jako Java Virtual Machine, musí být kód preverifikován při kompilaci.
Zajímavostí je, že CLDC neuvažuje o vstupu z klávesnice a výstupu na obrazovku, to zařizují až samotné profily.
V březnu 2003 vyšla specifikace CLDC 1.1, umožňující větší podporu zařízení s většími zdroji.

Profily spadající pod CLDC 

Profily doplňují konfigurace o další třídy, které poskytují specifické vlastnosti pro dané typy zařízení. Oba typy konfigurací mají své profily.

Mobile Information Device Profile (MIDP) 

MIDP profil je určen především pro mobilní zařízení (vzhledem k tomu, že náleží k CLDC, tak především pro mobilní telefony). Tento profil přidává k CLDC práci se sítí, uživatelské rozhraní (UI) a lokální úložiště. Profil je zaměřen na zařízení s omezenou funkcionalitou zobrazování a ukládání informací. Z toho důvodu poskytuje relativně jednoduché UI a základní síťovou komunikaci založenou na protokolu HTTP 1.1.
MIDP patří mezi nejznámější Java ME profily a tvoří základ technologie Wireless Java. 

MIDlety běží v zařízení z bezpečnostních důvodů v tzv. sandboxu, neboli na svém vlastním pískovišti, které nemůže opustit.

Ke knihovnám specifikovaným v CLDC přidává MIDP 1.0 (vydáno říjen 2000) další: 

 javax.microedition.rms - správa persistence dat 
 javax.microedition.midlet - třída MIDlet, která je základní třídou MIDP profilu 
 javax.microedition.io - zejména třída HttpConnection 
 javax.microedition.lcdui - třídy pro tvorbu uživatelského rozhraní 

MIDP 2.0 (vydáno listopad 2002) rozšiřuje dále funkcionalitu o následující balíky: 

 javax.microedition.media - přehrávání multimédií. Jedná se o podmnožinu JSR 135 Java Mobile Media API
 javax.microedition.lcdui.game - herní API zaměřené na jednoduché 2D hry 
 javax.microedition.pki - autentizační API pro zabezpečené přípojení 
 zavádí možnost práce s desetinnými čísly.

MIDlet 

MIDlet je javová aplikace, postavená na základě MIDP profilu. Mohou to být různé aplikace pro mobilní a jiná zařízení, jako např. hry.
Hlavní soubor MIDletu je soubor .jar, který obsahuje třídy programu, zdroje (obrázky, atd.) a manifest (soubor určující hlavní třídu a další informace). 

Distribuce MIDletů často obsahují také soubor .jad, který obsahuje adresu .jar souboru a další informace o .jar souboru a jeho výrobci. Některé implementace mohou přítomnost .jad souboru vyžadovat, případně na jeho základě odmítnout instalaci MIDletu. 

MIDlet musí splňovat následující požadavky, aby běžel na mobilním telefonu:

 MIDlet musí být zabalen do .jar souboru
 hlavní třída musí být potomkem javax.microedition.midlet.MIDlet
 .jar soubor musí být preverifikován použitím preverifikátoru.
 v některých případech musí být .jar soubor podepsán mobilním operátorem

Pokud je v .jad souboru popsáno více MIDletů, tvoří dohromady jeden MIDlet suite. Celá MIDlet suite může pak sdílet společné databáze (použitím tříd balíčku javax.microedition.rms) a společné proměnné, které se ukládají do .jad souboru.
MIDlety jsou na rozdíl od appletů limitovány na použití jednoduchého uživatelského rozhraní LCDUI. Existuje také mnoho dalších aspektů, které musí programátoři MIDletů vzít v úvahu. 

Životní cyklus MIDletu

Information Module Profile (IMP) 

IMP spadá pod CLDC konfiguraci, je to profil pro jednoduchá zařízení buď s jednoduchým displejem nebo bez displeje, s omezenou možností připojení k síti, většinou prodejní automaty nebo jednoduché bezpečnostní systémy.

Profil IMP je úzce spojen s profilem MIDP (jak 1.0, tak i následným 2.0), je to v podstatě jeho podmnožina, okrájená o možnost tvorby uživatelského rozhraní (především o balíček javax.microedition.lcdui).

Connected Device Configuration (CDC) 

Tato konfigurace je určena k použití v zařízeních, které potřebují kompletní implementaci Java virtual machine. Konkrétní sada API může (v závislosti na daném profilu) obsahovat celou Java Platformu SE. Typické implementace používají podmnožinu API, v závislosti na podporovaných profilech. 

Aplikace se nazývají Xlety.
Tato zařízení mohou díky větší paměti a procesorovému výkonu využívat z javového prostředí daleko více. CDC se objevuje u PDA, smartphonů, set-top boxů atd. 

Nároky na systémové prostředky:

Vyžaduje 32bitový procesor a alespoň 512 kB ROM a 256 kB RAM. 
Konfigurace CDC pracuje s profily Foundation Profile, Personal Basis Profile a Personal Profile.

Platforma Java TV 

Java TV je nová konfigurace Java ME, určená speciálně pro tvorbu interaktivních televizních služeb. Podle zdrojů z května 2009 implementují tuto 

platformu tito výrobci: 

 MATSUSHITA ELECTRIC INDUSTRIAL CO., LTD.
 PHILIPS CONSUMER ELECTRONICS
 SONY ELECTRONICS
 LG ELECTRONICS
 HONGKONG TELECOM
 OPENTV
 TOSHIBA

Podle slov výrobce  bude moci programovací rozhraní Java TV poskytnout vývojářům vysoký stupeň kontroly nad 

vzhledem aplikací a flexibilitu při jejich vytváření, a uživatelům interaktivních televizí poskytne dynamický a podmanivý zážitek.
Aplikace jsou stejně jako u aplikací CDC tzv. Xlety, hlavní třídy musí být potomky abstraktní třídy javax.tv.xlet.Xlet.

Související články 
 platforma Java

Externí odkazy 
 https://web.archive.org/web/20090521222419/http://interval.cz/vyvoj-aplikaci/j2me/
 http://www.oracle.com/technetwork/java/javame
 http://www.billday.com/j2me/
 J2ME device database and multi-device porting framework
 http://www.javagames.com

Java