Manapság egy átlagos, az utcán sétáló nem harmadik világbeli ember zsebeiben és táskájában több "kis" számítógép lapul. Gondoljuk a
legkülönfélőbb mobiltelefonokra, PDA-kra, PalmTopokra és intelligens multimédiás eszközökre (mit pl. iPod-ok). Ezek szoftver- és
hardverkapacitása dinamikusan fejlődik, képességeikben és lehetőségeikben egyaránt konvergálnak a klasszikus asztali számítógépekhez és
laptopokhoz. Természetes tehát felhasználói részről az izgalmas programok és játékok iránti kereslet, szoftverfejlesztői részről pedig az
intelligens készülékek programozása utáni vágy.
A felhasználók már most számtalan értelmes és többségében értelmetlen, ámde szórakoztató alkalmazást tölthetnek le vagy vásárolhatnak meg,
amely csak tovább fokozza mobileszközök -amúgy sem csekély- jelentőségét. A WalkmanMobilok, az érintő képernyős és/vagy Qwerty-billentyűzettel
ellátott üzleti telefonok (ún. "okos-telefonok"), valamint a játékok futtatására alkalmas iPodok és egyéb multimédiás eszközök az egyszerű
ember számára is elérhetők (és csábítóak).
Természetesen az intelligens mobileszközök nem csak személyes szórakoztatóközpontok, hanem üzleti jelentőséggel is bírhatnak. A gazdaság
számos területén van szükség az információ-technológia mobil képviselőire: pl. logisztikában, szállítmányozásnál, helyszíni értékesítésnél és
egyéb a telephelytől/irodától távol végzett tevékenység esetében is.
A mobileszközök programozása azonban "nem fenékig tejfel". A hardver- és szoftverkörnyezet változatossága és egymással való inkompatibilitása
olyan mértékű, hogy az nagymértékben megnehezíti az alkalmazás-fejlesztést. Aki viszont kitartó és képes ezen a szakterületen mély tudást
szerezni, az nem csak szakmai elismertségre tesz szert, hanem sikeres projektek esetén különös örömet érezhet. Nagy vonalakban (és ferdítve):
"Számítógépet mindenki tud programozni, de mobiltelefont?"
Ezen eszközök programozásakor a szoftverfejlesztő számos problémát kell, hogy kontrolláljon, amelyekért elsősorban a számítógépekénél lényegesen
gyengébb hardveres képességek felelősek. Ezt hivatott kompenzálni azonban az a szoftveres támogatottság, amely annak a ténynek köszönhető,
hogy ezeken a mobileszközökön fut modern számítógépes értelemben vett operációs rendszer. A helyzetet javítja továbbá, hogy a szoftveres
támogatottság jó dokumentáltságot is jelent, amely mellett számtalan webes anyag, tutorial vagy szakkönyv is elérhető.
Az ilyen mobileszközök programozására irányuló technikák és technológiák már lényegesen kiforrottabbak, mint a mobiltelefonoké, hiszen
az ilyen készülékek már kb. 6-8 éve az átlagos ember számára is elérhetővé váltak.
Negatívumok:
Pozitívumok:
Ennek köszönhetően például a WindowsMobile eszközök (PDA-k, HTC telefonok, stb.) esetében az szoftver-fejlesztő mobil alkalmazását Visual
Studioban fejlesztheti, akár C# vagy Visual Basic nyelveken, .NET és AJAX támogatás mellett. Az ilyen készülékekre például nem csak virtuális
ASP szerver telepíthető, hanem az MSSQL Server Management Studio révén kezelhető adatbázis és futtatható virtuális adatbázis-szerver is.
Az Android és Symbian operációs rendszerek esetében hasonló támogatottságot élvez a C++/Qt, míg iPhone-ok esetében az OSX Lite operációs rendszer
nyújt (nem ilyen szerteágazó) lehetőségeket az XCode fejlesztőkörnyezet segítségével, Objective-C nyelven.
Szemben az eddig bemutatott mobileszközök programozásával, a mobiltelefonok programozása lényegesen nehezebb feladat, ugyanis nem csak a hardveres problémák összetettebbek, hanem a szoftveres támogatottság is silányabb.
Egyik jelentős probléma, hogy a mobiltelefonok hardver-nyújtotta képességei még távolabb állnak a számítógépétől, mint az imént tárgyalt eszközöké. A processzor órajele átlagosan 400-500 MHz, a rendelkezésre álló memória pusztán 1-2 MB méretű. Ezen adatok is nyilvánvalóvá teszik, hogy a mobiltelefonra fejlesztő programozónak milyen körültekintőnek kell lennie hatékonyság terén. A telefon akkumulátorok fizikailag kisebbek, mint például egy PalmTopé, ezért az alkalmazás-fejlesztőnek fokozottan figyelnie kell az áramtakarékosságra például vezeték nélküli adatátvitel vagy multimédia használatakor.
A mobiltelefonok szoftver-háttere sokkal szerteágazóbb, mint bármely más informatikai eszközé. A számos mobiltelefon-gyártó az idők során különböző technológiákat fejlesztett ki eszközeik szoftveres támogatására, de a különböző szoftvertermékek nem követtek semmiféle szabványt. Sőt, a fejlesztési irányok "romantikus" változtatásával nem csak a különböző gyártók szoftverei közti kompatibilitás reménye foszlott szerte, hanem az azonos szoftverek eltérő verziónak együttes programozása is ellehetetlenült. Ez a tény leglátványosabban a Symbian rendszerű Nokia telefonoknál látható, ahol már az eltérő Symbian verziók (S60, S80) is fejtörést okoznak a programozónak.
Ahogyan a Java nyelv fejlesztői a JVM-eken keresztül platformfüggetlen (cross-platform) programozást tettek lehetővé a számítógépek világában,
kézen fekvő volt az ötlet, hogy a SUN Microsystems biztosítson lehetőséget az összes mobiltelefon együttes programozására. Ennek megfelelően a
nevezett gyártónál útnak indult a J2ME (Mobility Edition) fejlesztésének projektje. Amikor a nyelv tervezői számára világossá vált, hogy a probléma
"gazdaságosan" megoldható, a szoftvermérnökök nekiláttak lefejleszteni az egyes mobil eszközökre a szükséges interpretert, vagyis
a JVM-et (1998-ban). Ezzel egyidejűleg megkezdődtek a tárgyalások az egyes mobiltelefon-gyártókkal (Nokia, Siemens, Motorola, Samsung, Ericsson, ...),
hogy az újonnan kiadott mobiltelefonok szoftvereibe már integrálják a Java futtatásához szükséges alkalmazásokat és csomagokat.
A gyártók láttak fantáziát platformfüggetlenül programozható felületben, ezért beleegyeztek a telefonok Java-val történő felszerelésébe.
Ennek megfelelően integrálásra kerültek a Java alapcsomagjai (MIDP és CDC/CLDC), valamint külön megállapodás szerint a kiegészítő könyvtárak (JSR-ek)
egy része. A megállapodás nyilvánosságra hozatalát követően a mobilalkalmazás-fejlesztők fellélegezhettek, a régóta tartó problémák megoldódni
látszottak. A Java környezet integrációja azonban mindmáig nem történt meg olyan mértékben és minőségben, mint ahogy azt a valódi platformfüggetlen
programozás megkövetelte volna.