A mellékelt kép mutatja, hogyan épül fel a Java. A kékkel jelölt rész a mag, a sárga színt azok a JSR-ek kapták, amelyek elvileg minden napjainkban működő készüléken elérhetőek (jelen dokumentumban ezeket nevezzük gyűjtőnéven kiegészítő szabványos könyvtáraknak). A szürke szín azon JSR-eket jelöli, amelyek meglétét ellenőrizni kell.
Minden programozó által készített osztály az Object ősosztályból származik, így örökli abból a következő metódusokat.
A Java SE platformon használt elemek (AWT, Swing) a korlátozott erőforrások következtében nem használhatók. A felhasználói felület elemei az lcdui csomagon belül helyezkednek el, számos olyan lehetőséget kínálva, melyek könnyebbé teszik mobil készülékekre szánt programok fejlesztését.
Alapvetően két típusú felületkezelést különböztetünk meg. Az első típus adatok kezelésére alkalmas szoftverek fejlesztésekor nyújt segítséget. Ebben az esetben az elemek űrlapokba szervezve kerülnek megjelenítésre.(lcdui.Screen) A másik típust grafikus programok (pl. játékok) megalkotásakor vehetjük igénybe. (lcdui.Canvas)
Egy absztrakt osztályból származnak a kijelzőn megjeleníthető képernyők. Ez az úgynevezett Displayable osztály, amely alkalmas a képernyő egységes kezelésére. A Displayable osztály és az ebből származtatott osztályok halmaza a javax.microedition.lcdui csomagban helyezkednek el.
A Displayable osztály fontosabb műveletei:
A Display.setCurrent művelettel válthatunk az aktuálisan megjelenített képernyők között. Egyidejűleg csak egyetlen képernyő használhatja a kijelzőt. A Java ME ebből a szempontból is eltérően viselkedik a számítógépen megszokott felhasználói felülettől.
Az adatcentrikus alkalmazások elemei a Screen osztályból származtatott képernyők, míg a grafikus programokhoz a Canvas osztály használata a nélkülözhetetlen. Az utóbbiból kifejezetten a játékok számára, a MIDP 2.0-ban már létrehoztak egy GameCanvas nevű osztályt.
Listaszerű megjelenítést tesz lehetővé a teljes kijelzőn. A megjelenített listaelemekből lehet választani. A választásoknak és így a listáknak is három típusa létezik, melyet létrehozáskor a konstruktorban tudunk megadni.
Listák csak speciális értékek megjelenítésére alkalmasak. Ebben az esetben az érték egy szöveg, amelyhez csatolható egy ikon is. Amennyiben a szöveghez tartozó ikonkép használatát nem kívánjuk igénybe venni, úgy NULL értéket kell megadnunk a szöveg mellett.
List típusú objektumot úgy hozhatunk létre, hogy megadjuk a lista nevét és típusát, majd ezeken túl meghatározzuk a lista elemeit szövegek és képek tömbjének segítségével.
A List osztály fontosabb műveletei:
Lehetőséget nyújt a felhasználó számára, hogy a telefonokon szokásos módon megadható legyen egy szöveg. Az objektum létrehozásakor be kell állítanunk, hogy mekkora legyen a maximálisan bevihető szöveg mérete. Ezt az értéket használat során nem léphetjük át. A konstruktor paraméterei a következők: képernyő címe, kezdeti szöveg, maximális szöveghossz és a tartalom jellegének a megszorítása, amely az alább felsorolt értékeket veheti fel.
A felsorolt értékeken kívül megadhatók még módosító értékek is, például hogy szerkeszthető-e a tartalom, vagy a beviteli mező jelszó típusú információt fog-e tartalmazni.
Az osztály fontosabb műveletei:
Bizonyos adatok, információk, figyelmeztetések megjelenítését teszi lehetővé a felhasználók számára, mielőtt másik képernyőre váltanának. A felhívás vagy a setTimeOut-tal beállított ideig maradna kijelzőn, vagy pedig "véglegesen". (Utóbbi használatának támogatását nem minden telefon támogatja. A régebbi típusok esetén kivételt dobhat az alkalmazás.)
Eltérő típusai lehetnek: riasztás (ALARM), megerősítés (CONFIRMATION), hiba (ERROR), információ (INFO) és figyelmeztetés (WARNING). A konstansokat az AlertType osztály foglalja magában. Az üzenetek szövegét és címét a konstruktorban adhatjuk meg.
Az objektum lehetőséget biztosít űrlapszerűen elhelyezett adatbeviteli elemek együttes megjelenítésére és kezelésére. A formok szabadon összeválogatott elemeket tartalmazhatnak. A megvalósítás felelős az elemek elhelyezkedéséért, bejárásukért és szükség esetén a képernyő görgetéséért is.
Az összes formbeli elem az Item absztrakt osztályból származik, ez az osztály adja meg a közös viselkedésüket. A leggyakrabban használt beviteli elemek a rendelkezésünkre állnak, mivel ezeket előre megvalósították, de speciális esetekben saját magunk is létrehozhatunk újakat a CustomItem osztályból leszármaztatva.
Az elemeket vagy a létrehozásukkor helyezzük el a formra, vagy pedig utólag vesszük fel őket az append művelettel. Az első esetben a konstruktor paramétere a cím mellett az elemeket tartalmazó tömb, míg a második esetben elegendő csak a form címét megadni a konstruktorban.
A Form osztály fontosabb műveletei:
Ezzel a vezérlővel választható elemek egy halmazát jeleníthetjük meg egy formon belül. Különböző választási módok léteznek: kizáró (EXCUSIVE), többszörös (MULTIPLE), illetve MIDP 2.0-től kezdődően a kizáró választás módja POPUP is lehet. (Ekkor az összes elem csak a vezérlő aktivizálásakor jelenik meg.)
A konstruktorban megadásra kell hogy kerüljön a vezérlő neve és a választás módja, amit kiegészíthet az elemek és ikonok tömbje. A listáknál megismert módon az elemek itt is csak szövegek lehetnek.
A ChoiceGroup osztály fontosabb műveletei:
Egy olyan szerkeszthető objektum, amelyben időt és dátumot jeleníthetünk meg. A komponens képes a dátumot és az idő külön-külön (DATE, TIME), illetve együttesen is kezelni, (DATE_TIME) a megfelelő konstans konstruktorbeli használatával. A konstruktor első paramétere a komponens címkéje.
Az időpontot beállítani, illetve lekérdezni a Date típust használó setDate és getDate műveletekkel van lehetőség.
Egy zárt intervallumba eső egész szám bevitelére és megjelenítésére alkalmas komponens, amely egy folyamatjelzőhöz hasonlóan mutatja az értékeket. Az intervallum alsó határa zérus, míg a felső érték beállítható. Létrehozható a komponensből interaktív és nem interaktív. Az első esetben a felhasználó maga is beállíthatja az objektum értékét, míg a másodikban az eszköz csak a megjelenítést szolgálja és a módosítás nem megvalósítható.
A konstruktor első paramétere a komponens címkéje, a második az interaktivitást beállító logikai érték (ha igaz, akkor interaktív, ha hamis akkor nem), a harmadik a maximális érték, és a negyedik az aktuális érték. Az aktuális érték lekérdezésére és beállítására a getValue és setValue műveletek alkalmasak.
Formon belüli képmegjelenítésre szolgáló komponens. Az osztály konstansai segítségével szabályozható a kép elhelyezési módja.(layout) A komponensben a képhez felvehető felirat, illetve olyan alternatív felirat, amely akkor kerül megjelenítésre, ha a kép megjelenítése nem megvalósítható.
A konstruktorban a címek, a kép, az elhelyezési mód és az alternatív felirat adhatók meg. A MIDP 2.0-tól kezdődően lehetőség van egy ötödik paraméter megadására is, amely a megjelenítési módot szabályozza. A megjelenítés típusa lehet sima, hivatkozás illetve gomb.
A TextBox-ra hasonlító szövegbeviteli komponens, amely nem teljes képernyős megjelenítésű, hanem a formon belül helyezkedik el. Ennek következtében az alkalmazásbeli használata megegyezik a TextBox használatával.
Olyan felületi elem, amely nem tartalmaz semmit, kifejezetten a formon belüli elemek egymástól való pozicionálására használatos. Ez az eszköz csak a MIDP 2.0-ás változatától kezdve érhető el. A konstruktorban megadásra kerül az elem szélessége és magassága.
Alapot szolgáltat a kijelzőn megjeleníthető alacsony szintű grafikus műveletekhez. Általában ezt az osztályt használjuk, ha az alkalmazásban grafikus képernyőre van szükségünk. A Canvas típusú képernyők használata keverhető a midleten belűl magasabb szintű képernyők használatával. Például egy lista bizonyos elemének kiválasztásával megjelenítésre kerülhet egy Canvas típusú kijelző, majd onnan akár opcionálisan visszatérhetünk a listába.
A Canvas objektum lehetőséget nyújt a telefon beviteli eszközén végrehajtott események figyelésére. Előre rögzített konstansokat tartalmaz a gombok identifikálására illetve azok átalakítására. A keyPressed és keyReleased műveletekkel valósítható meg a mobil telefon gombjainak lenyomásának és felengedésének a figyelése. A műveletek paramétere a gomb azonosító kódja, amelyet az osztály konstansaival azonosíthatunk. A getGameAction művelettel hajthatjuk végre az úgynevezett játék gombok (kurzor, tűz) konvertálását.
Az osztály tartalmaz egy absztrakt paint függvényt, amelyet a leszármaztatott konkrét osztályokban meg kell valósítani. Ezek a megvalósított példányok lesznek felelősek a konkrét megjelenítésért. Amikor a képernyőt, vagy annak egy bizonyos területét meg szeretnénk jeleníteni, akkor ez a függvény kerül meghívásra. Ezt a hatást a repaint művelet meghívásával érhetjük el, ugyanis a nyelv a paint művelet közvetlen hívását nem teszi lehetővé.
A paint műveletnek egy Graphics objektum paramétere van, amire a konkrét kirajzolás megtörténik. Egy Canvas típusú elem kirajzolását csakis a paint művelettel valósíthatjuk meg. Nem lehet a művelet paramétereként kapott objektumot tárolni, és arra a későbbiek folyamán hivatkozni. Az objektum hatóköre maga a művelet, ugyanis a művelet végrehajtása után a grafikus objektumon műveletek nem értelmezettek.
Egy Graphics típusú objektum hasonló lehetőségekkel bír, mint a Java SE-ben. Tehát megvalósítható egyszerű alakzatok kirajzolása, kitöltése, képek és szövegek megjelenítése. Beállítható az aktuális vonalstílus, betűtípus és szín is. Természetesen a megadható jellemzők száma a Java SE-ben választhatókéhoz képest jóval alacsonyabb.
A MIDP 2.0-ás verziójának bevezetésével megalkották a GameCanvas osztályt, amely a Canvas osztály kiterjesztése, játékok támogatása céljából. Olyan lehetőségeket kínál mint például háttér (off-screen) grafikus puffer a rajzolások gyorsítására. Létrehoztak ezen kívül egy Sprite nevű osztályt is, amely különböző alakzatok képernyőn történő kezelésére alkalmas. Ennek segítségével lehetőség nyílik animált elemek megjelenítésére is.
Az MIDP könyvtárban található csomag, mely a hálózati kommunikációhoz nyújt támogatást. Az interfész által definiált osztályok lehetővé teszik többek között
a HTTP és a HTTPS, a TCP/IP, valamint az UDP protokollokon alapuló kommunikációt. Ezen osztályok segítségével a programozó komoly technológiai támogatást kap a webes információ cseréhez,
ami számtalan új lehetőséget kínál.
A programozó a fantáziáját használva széles körben hasznosíthatja ezeket a technológiákat:
Az alapvető, rendszerszintű szolgáltatások gyűjteménye. A beépített típusok és matematikai műveleteken felül két fontosabb osztálya a System és a Thread.
A System nyújtotta szolgáltatások:
Alapvető adatszerkezetek (szegényes) gyűjteménye, lehetővé teszi a felsorolási típus kezelését (Enumerator).