Mobileszközök programozása Java nyelven

A mobil eszközök programozásáról általánosságban

Bevezetés

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?"

PalmTopok, GPS-ek, PDA-k és egyéb mobil készülékek programozása

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.

Mobiltelefonok programozása

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.

Hardveres problémák

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.

Szoftveres problémák

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.

Megoldás: a platformfüggetlen Java

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.