Programozás | Java, JSP » Mérési útmutató a J2ME méréshez, szoftverfejlesztés mobil végberendezésekre

Alapadatok

Év, oldalszám:2004, 14 oldal

Nyelv:magyar

Letöltések száma:93

Feltöltve:2009. december 12.

Méret:88 KB

Intézmény:
-

Megjegyzés:

Csatolmány:-

Letöltés PDF-ben:Kérlek jelentkezz be!



Értékelések

Nincs még értékelés. Legyél Te az első!


Tartalmi kivonat

Mérési útmutató a J2ME méréshez Szoftverfejlesztés mobil végberendezésekre Mérés helye: Híradástechnikai Tanszék Mobil Kommunikációs Laboratórium I.B115 Összeállította Erdei Márk Sója Katalin 2004. április 9 J2ME Technológiák A J2ME platformot alapvetően olyan beágyazott eszközökre való fejlesztésre találták ki, mint a mobil telefonok, PDA-k, illetve az autóba szerelhető telematikus eszközök. A J2SE és J2EE-hez hasonlóan a J2ME is a Java Community Process™ által szabványosított API-val rendelkezik A J2ME platform biztosítja a Java technológia előnyeit e fenti eszközökön – rugalmas felhasználói interfész, robosztus biztonsági modell, hálózati protokollok széles skálája, illetve hálózati és off-line alkalmazások támogatása. 1. A J2ME architektúra [1] Szerverek és vállalati gépek Szerverek és PC-k Felső kategóriás PDA-k, beágyazott eszközök Mobil telefonok, egyszerűbb PDA-k Smart-kártyák

Optional Packages Optional Packages Optional Packages Java 2 Platform Enterprise Edition (J2EE) JVM™ Personal Profile Java 2 P latform Standard Edition (J2SE) JVM Personal Basis Profile Optional Packages Foundation Profile MIDP CDC CLDC Java Card JVM KVM Card VM Java 2 Platform Micro Edition 1. ábra A J2ME architektúra A J2ME architektúrában különböző konfigurációkat, profilokat és opcionális csomagokat definiáltak. Ezen elemekből épül fel a teljes Java futtatókörnyezet (JRE) Minden egyes kombináció memóriára, processzor kapacitásra, illetve I/O műveletekre optimalizált – attól függően, hogy az adott eszköz melyik hardver-kategóriába tartozik. 1.1 Konfigurációk A konfigurációkban egy virtuális gépet, illetve minimális könyvtárhalmazt definiáltak. Ezek biztosítják az egy kategóriába tatozó eszközök számára az olyan alapfunkcionalitásokat, mint a hálózati kapcsolat és memóriakezelés. Jelenleg két J2ME

konfiguráció létezik: a CLDC (Connected Limited Device Configuration) illetve a CDC (Connected Device Configuration) 1.11 CDC CDC was designed around the two goals of J2SE compatibility and support for resourceconstrained devices. J2SE compatibility allows developers to leverage their investments in J2SE technology, including libraries, tools and skills. Support for resource constrained devices allows device vendors to offer a feature-rich Java application environment that can support mobile enterprise applications with security. CDC supports the full Java 2 virtual machine specification, including floating point support and core library features such as full class loading, thread support and security. At the class library level, CDC uses J2SE class libraries whose implementations have been optimized for small memory environments. In the interest of resource conservation, some J2SE-based class libraries have modified interfaces, while others have been removed entirely. The

result is a flexible Java application environment that fits comfortably within a memory budget of 2 MB of RAM and 2 MB of ROM. 1.12 CLDC CLDC was designed to meet the rigorous memory footprint requirements of cellular phones. To meet these requirements, CLDC made accommodations in both the virtual machine and the class library. The first CLDC virtual machines (CLDC 10) omitted certain virtual machine features, such as floating point. The CLDC class libraries are not directly related in interface or design to the J2SE class libraries. Certain items of J2SE core library support, such as class reflection, thread groups and application-defined class loading, are not present in the CLDC class libraries. The benefits of these differences are significant. The memory footprint for early CLDC implementations achieved the target memory goal of 128-256KB, well within the memory budgets of cellphones. Recent versions of CLDC have taken advantage of more relaxed memory footprints by bringing back

some virtual machine features while adding features to the CLDC class library. 2. Connected Limited Device Configuration [2] 2.1 Követelmények 2.11 Minimum követelmények 2.111 Hardware követelmények  Legalább 160 kByte nem-felejtő, a JVM számára elérhető memória  Minimum 32 kByte felejtő a JVM számára futás alatt elérhető memória (pl. heap) 2.12    Szoftver követelmények Az eszközön fut operációs rendszer, mely kezeli a hardvert Az operációs rendszer biztosít legalább egy ütemezhető egységet a JVM számára Az operációs rendszernek nem szükséges támogatnia az elkülönített névtereket vagy folyamatokat és a real-time ütemezést. 2.13 J2ME követelmények Egy J2ME konfiguráció a Java technológia minimum-halmaza. Minden konfigurációban definiált tulajdonság általánosan alkalmazható kell, hogy legyen az eszközök széles skáláján. A további tulajdonságokat a profilokban definiálják Mivel a konfiguráció

célja a hordozhatóság és az interoperabilitás, a konfiguráció nem definiálhat opcionális tulajdonságokat. A J2ME konfiguráció értelemszerűen a Java technológia könyvtárainak és tulajdonságainak egy részhalmaza. A teljes specifikáció helyett a CLDC azt definiálja, hogy miben tér el a J2SE-től. 2.14      A specifikáció által lefedett területek Java nyelv és virtuális gép A fő java könyvtárak (java.lang*, java.util*) I/O (java.io*) Biztonság Hálózat 2.2 CLDC architektúra Profilok Könyvtárak Konfiguráció JVM Operációs rendszer 2. ábra Magas szintű architektúra 2.21 Java alkalmazás A CLDC nem céloz meg semmilyen specifikus eszköz kategóriát. Sok eszköznek fejlett grafikus interfésze van, mások csak karakteres kijelzésre alkalmasak, megint más eszközöknek egyáltalán nincs látható felhasználói interfészük. Ezért a CLDC nagyon egyszerű. Java alkalmazás akkor indítható (ugyanúgy, mint J2SE esetében),

ha van main függvény: public static void main(String[] args) J2ME profilok – pl. MIDP – definiálhatnak alternatív alkalmazás-modellt, melyek 2.3 JVM eltérése J2SE-től A következő tulajdonságokat teljes mértékben eltávolítottak a CLDC virtuális gépből:  Felhasználó által definiált osztálybetöltők (JVMS §5.32)  Szálcsoportok és démonszálak (JVMS §2.19, §812)  Példányok véglegesítése (JVMS §2.177)  Aszinkron kivételek (JVMS §2.161) 3. Connected Device Configuration [3] Mivel egy J2ME alkalmazás mind konfigurációt, mind valamilyen profilt igényel, a CDC specifikációjakor a profilokat helyezték előtérbe. Vagyis minden CDC profil implementáció CDC osztálykönyvtár (class library) implementációt és Java virtuális gépet tartalmaz. Az opcionális csomagokat külön lehet letölteni attól függően, hogy milyen speciális profilt használunk. 3.1 CDC Class Library A CDC osztálykönyvtárak a J2SE-ből származnak,

de a mobil eszközök korlátozásait figyelembe veszik. A legtöbb CDC API megegyezik a neki megfelelő J2SE API-val, a környezetre alkalmazott implementáció a mobil eszköz memória és processzorkapacitására lett hangolva. Így a J2SE-re írt alkalmazások könnyen portolhatók CDC környezetre 3.2 CDC Profilok 3.21 Foundation Profile A legalapvetőbb CDC profil. Tartalmazza a legalapvetőbb alkalmazás-támogató osztályokat, mint pl. hálózat és I/O Nem tartalmaz grafikus, illetve GUI szolgáltatásokat 3.22 Personal Basis Profile Pehelysúlyú komponenseket, illetve Xlet alkalmazásokat támogat. A Personal Basis Profile tartalmazza a teljes Foundation Profile API-t. 3.23 Personal Profile Teljes AWT és korlátozott bean-támogatás. Ezenkívül a PP tartalmazza a teljes PBP API-t. 3.3 Opcionális csomagok  RMI  JDBC A következő táblázat összefoglalja az egyes profilok által támogatott Java csomagokat. Package J2SE 1.31 FP 10 PBP 1.0 PP 1.0 java.applet

 – – P java.awt*  – P P java.beans*  – P P java.io     java.lang*     java.math  P P  java.net     java.rmi*  OP OP OP java.security*     java.sql  OP OP OP java.text     java.util*     javax.accessibility  – – – javax.naming*  – – – javax.rmi*  – – – javax.sound*  – – – javax.swing*  – – – javax.transaction  – – – org.omg*  – – – javax.microeditionio* –    javax.microeditionxlet* – –    P – OP teljes támogatás, részleges támogatás nincs támogatás opcionális csomagban 4. Mobile Information Device Profile [4] A Mobile Information Device Profile (MIDP) a CLDC-vel együtt a Java™ mobil eszközökre való futtatókörnyezete (JRE). CLDC és MIDP együtt olyan dinamikus és biztonságos

platformot definiál, mely alkalmas magas szintű grafikus, hálózatot kezelő alkalmazás mobil eszközre történő fejlesztésére. A MIDP tartalmazza azokat az alapvető funkcionalitásokat, melyeket a szabványos Java környezetben futó mobil alkalmazások igényelnek. MIDP segítségével olyan alkalmazások írhatók, melyek a korszerű mobil eszközökre optimalizáltak. A MIDP lehetővé teszi hálózati alkalmazások futtatását is. MIDP alkalmazás letöltéséhez a felhasználó kiválasztja a webszerveren a letöltendő alkalmazást. Ezután a mobil eszköz letölti az alkalmazást, verifikálja és lefordítja bájtkódra és elindítja. A grafikus felhasználói interfész a kisméretű kijelzőre, illetve a bemenetet megvalósító és más natív eljárásokra méretezett. A MIDP a telefon billentyűzetének és egyéb gombok teljes kihasználásával biztosítja az intuitív navigációt és adatbevitelt. A MIDP alkalmazások kapcsolat nélkül is képesek

futni, a mobil eszköz biztonságosan tároljon és helyben kezeli az adatokat. 4.1 MIDP architektúra MIDP alkalmazások OEM specifikus alkalmazások Natív alkalmazások OEM specifikus osztályok MIDP CLDC Natív rendszerszoftver MID 3. ábra A J2ME architektúra 4.11 A mobil eszközzel szemben támasztott hardver követelmények  Kijelző: 96x54, színmélység 1 bit, közel négyzet alakú pixel  Legalább egy a következő felhasználói input eszközökből: egykezes billentyűzet, kétkezes billentyűzet, érintőképernyő  256 kB nem felejtő memória a MIDP-nek (+ mai a CLDC-nek kell), ezenkívül 8 kB memória az alkalmazásoknak  128 kB felejtő memória (heap)  Hálózat: kétirányú rádiós csatorna, korlátozott sávszélesség  Hang: hangok lejátszására alkalmas HW eszköz vagy valamilye SW algoritmus 4.12 A mobil eszközzel szemben támasztott szoftver követelmények A fenti hardver tulajdonságokkal rendelkező eszközök még mindig

nagyon sokféle szoftverfuttatási lehetőséggel rendelkezhetnek. a MID környezet eszközeinek szoftverlehetőségei nagyon eltérhetnek egymástól. Pl néhány mobil eszköz teljes operációs rendszerrel, multiprocesszing támogatással és hierarchikus fájlstruktúrával rendelkezik, míg más eszközök kis, szálalapú operációs rendszerrel rendelkeznek, fájlrendszer nélkül A szoftverben is követelményeket kell tehát támasztanunk az eszközzel szemben. Ezek a következők:  minimális kernel, amely kezeli a hardvert (megszakítások, kivételek, minimális ütemezés.) A kernel képes legyen futtatni legalább egy virtuális gépet  biztosítsa a nem felejtő memóriából a való olvasás, illetve az oda történő írás lehetőségét  olvasás és írási hozzáférés az eszköz rádiós hálózati kapcsolatán keresztül  időkezelés  minimális bitmap megjelenítése a grafikus kijelzőn  legalább 1 input kezelése az előző fejezetben

említettek közül  az alkalmazás életciklusának kezelése A MIDP környezetben futó Java alkalmazásokat MIDleteknek nevezzük. Ha alkalmazás töltünk le a webről, akkor nem a MIDletet töltjük le és indítjuk, hanem egy ún. MIDlet suit-ot, ami egy vagy több MIDlet-et tartalmaz összecsomagolva. A MIDlet suite többnyire több, hasonló funkciót ellátó vagy együttműködő MIDlet összessége. Az egy suite-ban lévő MIDletek osztozhatnak az erőforrásokon (adat, grafika) ugyanabban a suite-ban lévő MIDletek hozzáférhetnek egy suite-beli MIDlet információihoz, míg más suite-ban lévő MIDletek erőforrásaihoz nem. 4.2 A MIDlet életciklus modellje MIDlet pédányosítása Paused Active Destroyed Garbage Colector 4. ábra A MIDlet életciklusa 4.3 A MIDP és CLDC csomagjai java.lang Interfészek Runnable Osztályok Boolean, Byte, Character, Class, Integer, Long, Math, Object, Runtime, Short, String, StringBuffer, System, Thread, Throwable

Kivételek ArithmeticException, ArrayIndexOutOfBoundsException, ArrayStoreException, ClassCastException, ClassNotFoundException, Exception, IllegalAccessException, IllegalArgumentException, IllegalMonitorStateException, IllegalStateException, IllegalThreadStateException, IndexOutOfBoundsException, InstantiationException, InterruptedException, NegativeArraySizeException, NullPointerException, NumberFormatException, RuntimeException, SecurityException, StringIndexOutOfBoundsException OutOfMemoryError, VirtualMachineError Hibák java.util Interfészek Enumeration Osztályok Calendar, Date, Hashtable, Random, Stack, Timer, TimerTask, TimeZone, Vector Kivételek EmptyStackException, NoSuchElementException Hibák javax.microeditionio Interfészek Osztályok Kivételek Hibák CommConnection, Connection, ContentConnection, Datagram, DatagramConnection, HttpConnection, HttpsConnection, InputConnection, OutputConnection, SecureConnection, SecurityInfo, ServerSocketConnection,

SocketConnection, StreamConnection, StreamConnectionNotifier, UDPDatagramConnection Connector, PushRegistry ConnectionNotFoundException javax.microeditionlcdui Choice, CommandListener, ItemCommandListener, Interfészek ItemStateListener Osztályok Kivételek Hibák Alert, AlertType, Canvas, ChoiceGroup, Command, CustomItem, DateField, Display, Displayable, Font, Form, Gauge, Graphics, Image, ImageItem, Item, List, Screen, Spacer, StringItem, TextBox, TextField, Ticker javax.microeditionlcduigame Interfészek Osztályok GameCanvas, Layer, LayerManager, Sprite, TiledLayer Kivételek Hibák javax.microeditionmedia Interfészek Control, Controllable, Player, PlayerListener Osztályok Manager Kivételek MediaException Hibák javax.microeditionmediacontrol Interfészek ToneControl, VolumeControl Osztályok Kivételek Hibák javax.microeditionmidlet Interfészek Osztályok MIDlet Kivételek MIDletStateChangeException Hibák javax.microeditionpki Interfészek Certificate Osztályok

Kivételek CertificateException Hibák javax.microeditionrms RecordComparator, RecordEnumeration, RecordFilter, Interfészek RecordListener Osztályok RecordStore Kivételek Hibák InvalidRecordIDException, RecordStoreException, RecordStoreFullException, RecordStoreNotFoundException, RecordStoreNotOpenException 5. Ellenőrző kérdések 1. 2. 3. 4. Mi a CDC, mi a CLDC és mi a különbség a kettő között? Írja le a CDC profiljait! Rajzolja le a MIDP architektúrát! Sorolja fel a MIDP + CDC-t futtató mobil eszközzel szemben támasztott követelményeket. (HW + SW) 5. Írja le a MIDlet életciklus-modelljét 6. Feladat: Készítsen faliújság olvasó klienst mobil végberendezésre. A kliens HTTP kapcsolaton keresztül kommunikál a faliújság szerverrel. A faliújság szerver a http://octopus.hitbmehu/noticeboard/NoticeBoard címen érhető el. A szerver egy HTTP-GET parancsra visszaadja a feljegyzések listáját. A feljegyzések ’|’ karakterekkel vannak

szeparálva. Új feljegyzést egy HTTP-POST paranccsal lehet a szerveren rögzíteni. Egy feljegyzés két részből áll: a felhasználó nevéből és a feljegyzésből. A felhasználó nevét egy USER-NAME nevű headerben a megjegyzést egy NOTICE nevű headerben kell elküldeni. A kliens lehetővé teszi a rögzített feljegyzések kilistázását és új feljegyzés rögzítését. Induláskor a kliens egyből csatlakozik a szerverhez és lekérdezi a feljegyzések listáját. A MIDlet az indulását követően kilistázza a képernyőre a feljegyzéseket. Ehhez felhasználja a javax.microeditionlcduiList osztályt A nyitó-képernyőn tehát a pillanatnyi megjegyzések listája látható, továbbá egy Exit és egy Add notice parancs (javax.microeditionlcduiCommand osztállyal készíthető) Az Exit hatására a program befejezi működését, az Add notice paranccsal új feljegyzést lehet rögzíteni a szerveren. Az Add notice kiválasztása után a kliens bekéri a

felhasználó nevét és a feljegyzést: Az Add notice dialógus két TextField-ből (egy a felhasználó neve, egy a feljegyzés számára), valamint egy OK és egy Cancel parancsból áll. A Cancel meghívására a program visszatér a nyitó-képernyőhöz, és befejezi a feljegyzés szerkesztését. OK hatására a program elküldi a feljegyzést a szerverhez, és ezután tér vissza a nyitó-képernyőhöz. A program minden esetben amikor visszatér a nyitó-képernyőhöz, újra lekéri a feljegyzések listáját. 6.1 Segítség a feladat megoldásához:  A MIDlet létrehozásához indítsuk el a J2ME Wireless Toolkit KToolBar programját.  A New Project paranccsal hozhatunk létre új MIDletet. Itt adjuk meg a MIDlet nevét, a többi beállítást hagyjuk az alapértelmezett értékeken.  Ezután a J2ME Wireless Toolkit apps könyvtárában a megadott project névvel létrehozott könyvtár src alkönyvtárában hozzuk létre a MIDlet java osztályát a korábban

megadott névvel.  A MIDlet létrehozásához készítenünk kell egy Java osztályt mely a javax.microeditionmidletMIDlet osztály leszármazottja  A program egy képernyő-felületet a Screen osztály leszármazottaiból hozhat létre, attól függően, hogy milyen felépítésű GUI-ra van szüksége. A feladat megoldásához csak a List és a Form osztály használata szükséges. Az egyes Screenekhez az append metódussal adhatunk hozzá grafikus komponenseket.       Egy képernyő-felülethez parancsot a Screen osztály addCommand metódusával adhatunk. A Command osztály példányosításakor megmondható a parancs típusa Vannak előredefiniált parancsok, pl. EXIT, OK, CANCEL de tetszőleges parancsot is létrehozhatunk (SCREEN). A parancsok aktivizálásáról úgy értesülhetünk, hogy a Screen-be beregisztrálunk egy CommandListener-t, melyet minden parancsról értesít a Screen. A MIDletből kilépni a notifyDestroyed metódus

meghívásával lehet. HTTP kapcsolatot létesíteni a HttpConnection osztály segítségével lehet. A HttpConnectiont a Connector statikus open metódusával hozhatjuk létre. A létrejött HttpConnectionban a HTTP parancs típusát a setRequestMethod metódussal állíthatjuk be, az egyes HTTP headereket pedig a setRequestProperty metódussal. A felparaméterezett HttpConnection példány akkor létesít hálózati kapcsolatot a megadott szerverrel, ha a adatot olvasunk belőle vagy írunk bele. Adat olvasást pl Az openInputStream segítségével kezdhetünk. A HTTP request elküldéséhez nem kell ténylegesen adatot írni vagy olvasni, elegendő mindössze megnyitni az input vagy output streamet. Adat olvasásához az elkért InputStream read metódusát kell hívni, amely egy karaktert olvas be. A kapcsolatot a close metódussal zárhatjuk le 6.2 A méréshez szükséges programok:  Java 2 Platform, Standard Edition (J2SE) 1.42  J2ME Wireless Toolkit 2.1 7.

Bibliográfia [1] [2] [3] [4] J2ME Technologies Overview, http://java.suncom/j2me/docs/j2me-dspdf J2ME™ Connected Limited Device Configuration (CLDC) Specification 1.1 Final Release, http://java.suncom (cldc-1 1-fr-speczip) CDC: An Application Framework for Personal Mobile Devices, http://java.suncom/products/cdc/wp/cdc-whitepaperpdf Mobile Information Device Profile (JSR-37), (midp-1 0a-spec.zip)