1. A MIDP 2.0 szabvány
A MIDP 1.0 nagyon sikeres lett, jelenleg a
középkategóriás telefonok kb. 40%, a felső
kategóriások 90%-át látják el
Jáva támogatással (az átlag az alsó
kategóriában átlagosan 2%).A növekvő
népszerűség a szabvány bővített
változatának elkészítésére
késztette a gyártókat, ez a MIDP 2.0 (JSR-118)
.Ez felfelé
kompatibilis a MIDP 1.0-val. A legjelentősebb változások
a következők:
- Biztonsági mechanizmus, ami lehetővé teszi
megbízható, digitális
aláírással ellátott MIDleteknek, hogy
érzékeny funkciókhoz (pl.
üzenetküldés,
hívásindítás) férjenek hozzá.
- Bővített kommunikációs könyvtár,
ami lehetővé teszi, hogy MIDletek üzenetekre
várjanak és a beérkező üzenetek
aktiválják őket.
- Javított játéktámogatás, pl.
kettős képernyőbuffer támogatása, sprite-ok,
layer-ek, jobb nyomógombfigyelés (le lehet kérdzni
azt is, hogy egy gombot éppen nyomva tartanak-e).
- Multimédia támogatás, különös
tekintettel a hangokra.
A MIDP 2.0-t a CLDC 1.1 (JSR-139) konfiguráció
tetején tervezték futtatni. Maga a szabvány
azonban nem tételez fel a konfigurációról
semmit se, ami miatt ne lehetne a CLDC 1.0 tetején is futtatni.
A CLDC 1.1 tulajdonságai a következők az 1.0-hoz
képest.
- Van lebegőpontos támogatás
- Vannak gyenge referenciák (egy kis részhalmaza a
J2SE gyenge referencia támogatásának)
- NoClassDefFoundError már van (CLDC 1.0-ban semmilyen Error
nem volt)
- Thread objektumnak vannak nevei
- Egy csomó apró
könyvtármódosítás.
Főként a lebegőpontos támogatás miatt a
ROM-igény megnőtt, 160 kBájtról 192 kBájtra.
2. Bővített biztonsági rendszer a MIDP 2.0-ban
A MIDP 1.0 nagyon egyszerű biztonsági rendszerrel rendelkezik: a
homokozóban futó MIDletek bármit megtehetnek, de
csak a homokozó keretein belül. Nem férhetnek
hozzá semmilyen szolgáltatáshoz, mellyel
kár okoznának a telefonban ill. annak
használójának. Ez egy egyszerű és
biztonságos model, de nagyon korlátozott. A MIDP 2.0-ban
egy új, engedélyeken (permission) alapuló
rendszert vezettek be, ami a J2SE biztonsági rendszerének
egyszerűsített változatának tekinthető és
teljesen kompatibilis a MIDP 1.0-val.
A MIDP 2.0 midlet sorozatokat aláírják. Ez azt
jelenti, hogy a digitális aláírást
és a hozzátartozó igazolást (certificate)
egyaránt elhelyezik az alkalmazásleíróban
(JAD fájl). Érdekesség, hogy a JAR
fájloknak van egy aláírási
szabványa, azonban a MIDP 2.0 nem ezt használja, a MIDP
2.0 JAR fájlja nincs aláírva. Amikor a JAR
letöltődik, a JAR-ra újraszámolják a
digitális aláírásban levő hash-t. Ha ez
illeszkedik, akkor a megfelelő igazolást az
alkalmazásleíróban ellenőrzik, hogy a telefonban
tárolt mesterigazolásra (root certificate) illeszkedik-e.
Ha igen, akkor a JAR-t elfogadják az igazolás
tulajdonosától származónak.
Az aláírás alapján
meghatározzák a midlet sorozathoz tartozó
engedélyeket. Ezeket az engedélyeket a telefonba
épített policy tárolja. Ez a policy a
szokásos implementáció szerint fix, a
gyártáskor rögzítődik és nem lehet
manipulálni. Lényegileg a policy azt mondja meg, hogy egy
bizonyos aláíráshoz milyen engedélyek
tartoznak. A midlet sorozatnak emelett meg kell igényelnie az
általa használni kívánt
engedélyeket a manifest
fájlban. Példa:
MIDlet-Permissions:
javax.microedition.io.PushRegistry,
javax.microedition.io.Connector.serversocket
Amikor a JAR letöltődik, az igényelt engedély
ellenőrződik a policy engedélyeivel szemben és ha az
igénylő midlet sorozat nem kaphatja meg az engedélyt,
akkor az nem is installálódik. A másik
lehetőség, hogy a midlet sorozat képes az engedély
nélkül is működni csökkentett
funkcionalitással. Ilyenkor a midlet sorozat opcionálisan
igényelheti meg az engedélyt.
MIDlet-Permissions-Opt:
javax.microedition.io.PushRegistry,
javax.microedition.io.Connector.datagramreceiver
Ha a midlet sorozat opcionális engedélyt igényel,
akkor is installálódik, ha az engedélyt nem
kaphatja meg. Ha a midlet sorozat meghív egy metódust,
amit a meg nem kapott engedély véd, SecurityException
lesz az eredmény. A midlet leellenőrizheti a MIDlet
alaposztály checkPermission metódusával, hogy
megkapta-e valamelyik engedélyt.
A policy kétféleképpen rendelkezhet valamely
engedélyről. Egy engedély lehet
Allowed ill
User. Az Allowed engedélyt
a midlet sorozat minden további nélkül megkapja, az
User minősítővel megjelölt engedélyek
megadása előtt azonban meg kell kérdezni a
felhasználót. Háromféle opció
lehetséges: az engedély megadása lehet blanket,
session vagy oneshot. A blanket azt jelenti, hogy a
felhasználót csak egyszer, a legelső
végrehajtáskor kell megkérdezni, hogy megadja-e
ezt az engedélyt az alkalmazásnak. Session
esetében a MIDlet minden egyes futtatásakor fel kell
tenni a kérdést, de csak egy futtatás során
egyszer. A oneshot azt jelenti, hogy a védett funkció
minden egyes meghívása előtt fel kell tenni a
kérdést.
3. Push registry
A MIDletek nem tudnak állandóan futni. A legtöbb
implementáció eleve nem teszi lehetővé több
MIDlet egyidejű futtatását. Ebben a környezetben
"szerver" alkalmazások írása csak úgy
megoldható, hogy az AMS-nél lehet regisztrálni,
milyen eseményre figyeljen az AMS és az esemény
bekövetkezésekor mit hívjon meg. Ezt a mechanizmust
push registry-nek hívják. Az esemény
bekövetkezésekor a startApp
metódus hívódik meg, ahol a MIDlet megszerezheti
az eseménnyel kapcsolatos adatokat az AMS-től.
Manifest:
MIDlet-Name: SunNetwork - Chat Demo
MIDlet-Version: 1.0
MIDlet-Vendor: Sun Microsystems, Inc.
MIDlet-Description: Network demonstration programs for MIDP
MicroEdition-Profile: MIDP-2.0
MicroEdition-Configuration: CLDC-1.0
MIDlet-1: InstantMessage, /icons/Chat.png, example.chat.SampleChat
MIDlet-Push-1: datagram://:79,
example.chat.SampleChat, *
MIDlet-Permissions:
javax.microedition.io.PushRegistry,
javax.microedition.io.Connector.datagramreceiver
A MIDlet-Push-n sor egy
push
midletet dwfiniál. A push midletnek normális
MIDlet-n sorban is definiálni kell lennie, ezen felül ha
még MIDlet-Push-n sorban is definiálva van, akkor az AMS
megnyit számára egy kapcsolatot, amit az első mező ad
meg, megengedi a kapcsolódást mindenhonnan, amit a
harmadik mező megenged (jelenleg *, mindenhonnan
kapcsolódhatnak). A MIDletnek rendelkeznie kell
javax.microedition.io,PushRegistry engedéllyel, hogy
regisztrálhasson a push registry-be.
A manifest-hez tartozó startApp metódus a következő:
public void
startApp() {
String
connections[];
connections
= PushRegistry.listConnections(true);
for (int
i=0; i < connections.length; i++) {
// connections[i] egy megnyitható kapcsolat URL-jét jelzi
}
...
}
4. Játék UI és Media API
Nagyon röviden a játék UI
szolgáltatásai a következők a normál Canvas
UI-hoz képest
- A Canvas-hoz képest úgy bővítették,
hogy lehetséges a nyomógombok állapotát is
követni (pl. folyamatosan lenyomva) és rendelkezik egy
háttérbufferrel is, aminek tartalmát egy
művelettel lehet a képernyőre másolni..
- A Layer egy rajzolható grafikus elem, amit rá lehet
tenni a képernyő adott pozíciójára,
megjeleníteni ill. eltűntetni
- A Sprite egy animáció, amit egyetlen kép
részletei írnak le. Az animáció
kockáit egy képbe öntik (pl. egymás
mellé teszik), a sprite kijelezhető a képernyő adott
pozícióján, az animációs
fázis pedig beállítható
- A TiledLayer nagyméretű scrollozó hátterek
készítésére alkalmas kisebb
képelemekből
Ezen felül a MIDP 2.0 támogat
médialejátszást is. A Media API-n keresztül
médiafájlokat lehet letölteni vagy folyamatosan
lejátszani (streaming)
5. JTWI
A Java Technology for Wireless Industry (JTWI) egy
szabványgyűjtemény, ami azt írja le, mit kell
támogatnia egy Jáva-képes telefonnak. Ez azt
célozza megelőzni, hogy a telefonok sok, egymással nem
kompatibilis API-készletet támogassanak. A JTWI-t a
JSR-185 írja le és a következő főbb
megkötéseket tartalmazza.
- Egy JTWI készülék CLDC 1.0 alapú
- MIDP 2.0 szabványt teljesen támogatja
- Támogatja a Wireless Messaging API 1.1-et (JSR-120). Ez
lehetővé teszi SMS-ek küldését és
fogadását (fogadás a push registry-n
keresztül)
- Támogatja a Mobile Media API-t (JSR-135). Ez MIDI
lejátszást és kameravezérlést
biztosít