Mérési útmutató a JAVA Micro Edition méréshez



Hasonló dokumentumok
Kétszemélyes játék Bluetooth kapcsolaton megvalósítva

Java programozási nyelv 7. rész Java osztálykönyvtár 1.

Bevezetés, platformok. Léczfalvy Ádám

JAVA SE/ME tanfolyam tematika

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

A mobil játékfejlesztés elméleti és gyakorlati momentumai

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Mobil eszközök objektumorientált programozása, a Java2 Micro Edition Object-oriented Programming Language for Mobile Devices J2ME

Debreceni Egyetem Informatika Kar. Mobiltelefon programozás és mobil adatbázis-kezelés

Java osztálykönyvtár és használata

Szoftvertechnológia alapjai Java előadások

Grafikus felületek a programozó szempontjából grafikus elemek absztrakt reprezentációja az egyes elemek tulajdonságait leíró adatstruktúrák.

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

SZAKDOLGOZAT. Király Edit. Debrecen

Bevezetés a Symbian operációs rendszerbe

Java I. A Java programozási nyelv

libgdx alapok, első alkalmazás

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Mobil készülékek programozása

Java. JIT (Just in Time) fordítók alkalmazása, optimalizálás AOT (Ahead of Time) fordítók alkalmazásának lehetősége

Grafikus felhasználói felületek. Abstract Window Toolkit, a java.awt és java.awt.event csomagok

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben


Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

Szakköri segédanyag. Írta: Bátfai Norbert október 26.

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

LOGalyze Telepítési és Frissítési Dokumentáció Verzió 3.0

Bevezetés a Java programozási nyelvbe

Szakdolgozat. Sike Csaba. Debrecen

Grafikus felületek készítése 1.

Operációs rendszerek. A Windows NT felépítése

Kivételek. A program végrehajtása során ritkán bekövetkező események Nem a fő végrehajtási ág ; logikailag alacsonyabbrendű feladat jelzése

DB2 Connect Personal Edition telepítése és beállítása

Java felhasználói felület

Fejlesztői szemmel at K

Bevezetés a Java programozási nyelvbe

2. fejezet Hálózati szoftver

Java I. A Java programozási nyelv

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Robotot vezérlő szoftverek fejlesztése Developing robot controller softwares

A J2ME architektúrája. Léczfalvy Ádám

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

libgdx alapú program létrehozása, kép importálása, mozgatása libgdx alapok Android játékfejlesztés Soós András

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

INFORMATIKAI ALAPISMERETEK

Java alkalmazás fejlesztése mobiltelefonra

Kivételkezelés, naplózás. Exception handling, logging

Bluetooth mérési útmutató 1. mérés

SZAKDOLGOZAT. Renn Antal Gábor. Debrecen

TARTALOMJEGYZÉK 1 BEVEZETÉS MIÉRT ÉPPEN JAVA MIDP 2.0? A JAVA NYELV LEGFŐBB TULAJDONSÁGAI MIT ÍGÉR A MIDP 2.0?...

Előszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István Viczián István

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelés ActiveX vezérlıkkel - 1

Az informatika alapjai. 10. elıadás. Operációs rendszer

Programozási technológia

DB2 Connect v9.5. DB2 Connect Personal Edition gyors üzembe helyezés Frissítve: március GC

Nemzeti Alaptanterv Informatika műveltségterület Munkaanyag március

Csatlakozás az IBM i rendszerhez IBM i Access for Windows: Telepítés és beállítás

A földi ellenôrzô berendezésekben alkalmazott programozási technikák

Mobil eszközök programozása Java

Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

Java programozási nyelv

Magas szintű programozási nyelvek 2 Előadás jegyzet

Java Programozás 11. Ea: MVC modell

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

FELHASZNÁLÓI ÚTMUTATÓ. A Nokia Connectivity Cable Drivers telepítése

Gábor Dénes Főiskola (IAI) Programozási technológia (Java) - I. / 1

Programozási nyelvek Java

SZAKDOLGOZAT. Olajos Mihály

Alap számológép alkalmazás

Vezeték nélküli eszközök (csak egyes típusokon) Felhasználói útmutató

Access adatbázis elérése OLE DB-n keresztül

A Polycom RealPresence Group Series készülékek és tartozékok szoftverének és opcióinak telepítése. Áttekintés

Kaspersky Internet Security Felhasználói útmutató

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string


RIA Rich Internet Application

A Java nyelv IV. rész - appletek, hálózati alkalmazások fejlesztése

Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Irányítástechnika és Informatika Tanszék. Önálló laboratórium

Java programozási nyelv 10. rész Input/output kezelés

Makk Tamás T-Amp Szakdolgozat

Java programozási nyelv 6. rész Java a gyakorlatban

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

ÓBUDAI EGYETEM Neumann János Informatikai Kar Informatikai Rendszerek Intézet Témavezető: Bringye Zsolt

Tarantella Secure Global Desktop Enterprise Edition

Minden jog fenntartva, beleértve bárminemű sokszorosítás, másolás és közlés jogát is.

Programozás III GRAFIKA RAJZOLÁS SWING FELÜLETEN RAJZOLÁS GRAFIKA HASZNÁLATA. Rajzolni az awt csomag Graphics osztályának metódusaival tudunk.

NetIQ imanager Telepítési útmutató január

Mobilprogramozás tanárként

FELÜLVIZSGÁLATI JEGYZŐKÖNYV (E-DS10F1_TANF-SW) MELLÉKLETE

A Szekszárdi I. Béla Gimnázium Helyi Tanterve

Az adatfeldolgozás és adatátvitel biztonsága. Az adatfeldolgozás biztonsága. Adatbiztonság. Automatikus adatazonosítás, adattovábbítás, adatbiztonság

Programozási nyelvek Java

Csak felvételi vizsga: csak záróvizsga: közös vizsga: Mérnök informatikus szak BME Villamosmérnöki és Informatikai Kar május 30.

Projektmenedzsment eszközök Projektirányítás számítógéppel

Java Programozás 3. Gy: Java GUI. Swing, AWT

A Microsoft Visual Studio 2005 fejlesztőkörnyezet

TANÚSÍTVÁNY. tanúsítja, hogy a Polysys Kft. által kifejlesztett és forgalmazott

2007 Nokia. Minden jog fenntartva. A Nokia, a Nokia Connecting People, az Nseries és az N77 a Nokia Corporation védjegye, illetve bejegyzett

TELEMATIKAI RENDSZEREK ALKALMAZÁSA A SZEMÉLYKÖZLEKEDÉSI IGÉNYEK MENEDZSELÉSÉBEN. Számítógépek Interfészek Kommunikációs és felhasználói szoftverek

A NYELV NEVE. Kezdetben: Oak. James Gosling. Java: Sun Mycrosystems védjegyev

Átírás:

Mérési útmutató a JAVA Micro Edition méréshez Szoftverfejlesztés mobil végberendezésekre Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Híradástechnikai Tanszék Mobil Kommunikációs Laboratórium 2010. november

1. Bevezetés: néhány szó a mérésről A labor foglalkozás célja a hallgatók megismertetése a Java Micro Edition technológiával egy (vagy több) program írásán keresztül. A feladato(ka)t a hallgatók egy vagy több fős mérőcsoportokba osztva oldják meg. A csoportok közötti kommunikáció nem megengedett. Az óra elején a hallgatók beugró dolgozatot írnak, amely a kapott jegyet befolyásolja. A mérőcsoportok legkésőbb az idő lejártakor bemutatják a programjukat a mérésvezetőnek és az általa megadott email címre elküldik a jegyzőkönyvet, amit a programmal párhuzamosan írnak. A mérésvezető engedélyezheti a jegyzőkönyv utólagos beküldését. Programozási feladatról lévén szó, a jegyzőkönyv jelen esetben inkább fejlesztői dokumentációnak tekinthető. A jegyzőkönyvnek mindenképpen tartalmaznia kell az alábbiakat: 1. oldal: méréssel kapcsolatos adatok: o Dokumentum címe o A mérőcsoport tagjai (név, neptun kód) o A dokumentum készítésének helye és ideje. 2. oldaltól: o A feladat rövid leírása o Felhasznált technológiák, eszközök, ezek rövid leírása o Megvalósított program funkcionális felépítése A program részletes ismertetése o A mérőcsoport tagjai által írt forráskód, részletesen kommentezve A dokumentumban szereplő forráskódnak fordíthatónak kell lennie. o Minden, a mérési utasításban feltett kérdésre is írja le a jegyzőkönybe a választ! A mérési jegyzőkönyv rossz megjelenési színvonala a kapott osztályzatot negatív irányban befolyásolhatja. A kapott érdemjegy az alábbiak szerint lesz megállapítva: Beugró Órai munka Program működése és megvalósítása Jegyzőkönyv Ezek közül a legfontosabb a jegyzőkönyv, hiszen ebben van a forráskód is, amit a mérésvezető mérés után fog értékelni. Jegyzőkönyv nélkül a mérés nem értékelhető.

2. Java ME Technológiák A Java programozási technológiák platform független fejlesztési és futtatási környezetet biztosítanak. A nyelv szintaktikája leginkább a C++-ra hasonlít, azonban funkcionalitásában kevesebb alacsony szintű elemet tartalmaz. A Java forráskód lefordítva egy ún. bytecode-ot eredményez, ami Java virtuális gépen futtatható. A Java virtuális gép a hardware operációs rendszere fölött levő réteg, ami a bytecode-ok számára a platformfüggetlenséget biztosítja. Ezen a mérésen a továbbiakban a Java Micro Editionel vagyis a Java ME-vel (korábban J2ME) foglalkozunk, amely a dokumentum írásakor a 3.0-ás verziószámnál tart. Fejlesztőeszközként korábban a J2ME Wireless Toolkit, a dokumentum írásakor a Java ME SDK3 használata ajánlott, amibe a Wireless Toolkit integrálva lett. A Java ME 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 Java ME is a Java Community Process által szabványosított API-val rendelkezik A Java ME 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. 3. Java architektúrák A Java ME 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. 3.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 Java ME konfiguráció létezik: a CLDC (Connected Limited Device Configuration) illetve a CDC (Connected Device Configuration). 2. ábra. A Java ME rétegei

A 2-es, archív (2002-ből) ábrán a Java Micro Edition különböző komponenseinek viszonya látható egy készüléken belül. 3.1.1. CDC (Connected Device Configuration) A CDC fejlesztését J2SE kompatibilitás és a korlátozott erőforrással rendelkező eszközök támogatása ihlette. A J2SE kompatibilitás azért fontos, hogy a fejlesztők a már meglévő tudással tudjanak új eszközökre fejleszteni (a mobil eszközön megvalósított forrás könnyen portolható legyen más eszközökre, ez azonban másodlagos szempont). A korlátozott erőforrású végberendezések támogatása pedig azért fontos, hogy ezeken az eszközökön is lehessen sokféle funkcionalitást biztosító Java programot fejleszteni. A CDC támogatja a teljes Java Virtual Machine (JVM) specifikációt, beleértve a lebegőpontos számítást a core könyvtárak szolgáltatásait (pl.: szálak támogatása, biztonság, stb.). Osztályok szintjén a CDC a J2SE könyvtárát használja, az osztályok implementációja azonban az eszköz korlátozott erőforrásaira (kevesebb memóriára) lett optimalizálva, amihez természetesen különböző módosítások kellettek. Összességében egy jól használható Java környezet ez, amihez mindössze 2MB RAM és 2MB ROM szükséges. 3.1.2. CLDC (Connected Limited Device Configuration) A CLDC a mobiltelefonok korlátolt memóriakapacitását figyelembe véve lett kifejlesztve. Ehhez a CLDC a virtuális gépet és könyvtárakat is tartalmaz, hogy még hatékonyabb legyen, az első verzióból bizonyos nagyobb erőforrás igényű jellemzők kimaradtak. A korai megvalósítások 128-256KB memóriával is beérték. Ez a jó tulajdonságuk a későbbi mobiltelefonok nagyságrendekkel több memóriája miatt gyakorlatilag szükségtelenné vált. 4. Connected Limited Device Configuration 4.1. Követelmények 4.1.1. Minimum követelmények 4.1.1.1 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) 4.1.2. 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.

4.1.3. Java ME követelmények Egy JAVA ME 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 JAVA ME 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. 4.1.4. 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 4.2. CLDC architektúra Profilok Konfiguráció Könyvtárak JVM Operációs rendszer 1. ábra. Magas szintű architektúra 4.2.1. 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) JAVA ME profilok pl. MIDP definiálhatnak alternatív alkalmazás-modellt, melyek 4.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.3.2) Szálcsoportok és démonszálak (JVMS 2.19, 8.12) Példányok véglegesítése (JVMS 2.17.7) Aszinkron kivételek (JVMS 2.16.1)

5. Connected Device Configuration Mivel egy JAVA ME 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. 5.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. 5.2. CDC Profilok 5.2.1. 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. 5.2.2. Personal Basis Profile Pehelysúlyú komponenseket, illetve Xlet alkalmazásokat támogat. A Personal Basis Profile tartalmazza a teljes Foundation Profile API-t. 5.2.3. Personal Profile Teljes AWT és korlátozott bean-támogatás. Ezenkívül a PP tartalmazza a teljes PBP API-t. 5.3. Opcionális csomagok RMI JDBC

6. Mobile Information Device Profile 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. 6.1. MIDP architektúra MIDP alkalmazások MIDP OEM specifikus alkalmazások OEM specifikus osztályok Natív alkalmazások CLDC Natív rendszerszoftver MID 2. ábra. A Java ME architektúra 6.1.1. 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

6.1.2. 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. 6.2. A MIDlet életciklus modellje MIDlet pédányosítása Paused Active Destroyed Garbage Colector 3. ábra. A MIDlet életciklusa

7. Feladatok 7.1. Fejlesztőkörnyezet meglétének ellenőrzése, első forráskód létrehozása 1. Ellenőrizze, hogy a számítógépen megtalálható-e a Java ME Wireless Toolkit legalább 2.5-ös verziója. Indítsa el a programot. Ekkor a 2.5.2_01-es verzió megjelenése az alábbi ábrán látható. 2. Hozzon létre egy új projektet! Az API kiválasztásánál válassza a legtöbb szolgáltatást nyújtó MID Profile-t (2.1) illetve a CLDC 1.1-es konfigurációját. Ekkor a projekt a C:\Document and Settings\[Felhasználónév]\j2mewtk\2.5.2 könyvtárban létrejön. 3. A létrejövő könyvtár forrás könyvtárában hozzon létre egy fájlt, aminek neve a mérőcsoport egyik tagjának neptun kódja, kiterjesztése: java. (Pl.: nepkod.java) 4. Másolja be a fájlba az alábbi kódot! import java.io.*; import javax.microedition.io.*; import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class neptun extends MIDlet implements CommandListener { } public void pauseapp() {} public void destroyapp(boolean unconditional) {} public void startapp() {} public void commandaction(command c, Displayable s) {}

5. Ezzel meg is van az első leforduló Java ME forráskódunk. A fejlesztő környezetben nyomja meg a build gombot! Ha a forrás nem fordul le, akkor próbálja megoldani a kapott hibaüzenet alapján a problémát! 6. Próbálja meg a forrás egyes sorai kikommentezni és írja le a mit tapasztal! Melyek a forráskód azon részei, amelyekre jelenleg nincs szükség? Miért? 7. Melyek azok a részek, amelyekre szükség van? Miért? 8. Hol van a bytekód? 7.2. Futtatható program készítése Az első feladatban egy fordítható forráskódot hoztunk létre, ami lefordul byte kóddá, azonban még működő programot nem sikerült csinálnunk. Első programunk egy olyan kis alkalmazás lesz, ami bekéri a felhasználó nevét, majd köszönti az egyént a megadott névvel. Ehhez a fájlunkat az alábbiak szerint módosítjuk: import java.io.*; import javax.microedition.io.*; import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class MidletClass extends MIDlet implements CommandListener { private Form mmainform; private TextField Szovegmezo; private Command mexitcommand; } public void pauseapp() {} public void destroyapp(boolean unconditional) {} public void startapp() { mmainform = new Form("Greetings"); Szovegmezo=new TextField("Adja meg a nevét!","",20, TextField.DECIMAL); mmainform.append(szovegmezo); mmainform.setcommandlistener(this); Display.getDisplay(this).setCurrent(mMainForm); mexitcommand= new Command("Exit", Command.OK, 1); mmainform.addcommand(mexitcommand); } public void commandaction(command c, Displayable s) { if(c==mexitcommand){notifydestroyed();} } 1. Fordítsa le és indítsa el a programot! Nézze meg, hogy mit csinál! 2. Értelmezze és kommentezze a forrást! A változásokat vigye fel a jegyzőkönyvbe! 3. Írjon hozzá, illetve módosítsa úgy a forráskódot, hogy a program az alábbiakat csinálja: a. Ahol most az Exit gomb ott legyen egy Ok feliratú gomb. b. Az Exit gomb felirata legyen Kilépés és kerüljön át a túloldalra. c. Az Ok gomb megnyomására jelenjen meg az alábbi felirat: i. Hello, [beírt név]! Ahol a [beírt név] természetesen a felhasználó által a textfield-be felvitt string-et jelöli!

4. A feladat megoldásához a Java ME hivatalos dokumentációja használható. 5. Illessze be a működő, kommentezett forráskódot a jegyzőkönybe! 7.3. Kiegészítő feladat A korábbiakban megismert programozási technikával készítsen számológépet! A számológépnek az alábbi funkcióknak kell megfelelnie: Két bemeneti operandusa kell, hogy legyen, amit egy képernyőn kell bekérni a felhasználótól. A négy alapműveletet kell tudnia elvégeznie a két bemeneten. 0-val való osztáskor a programnak működőképesnek kell maradnia, azonban figyelmeztetnie kell a felhasználót a hibára! Az eredmény megjelenhet az adatokat bekérő képernyőn vagy egy másik képernyőn is. Lehetőséget kell biztosítani a felhasználónak a programból való kilépésre a telefon kikapcsolása nélkül. Ügyeljen az igényes megvalósításra! A kommentezett, futtatásra alkalmas forráskódot illessze be a jegyzőkönybe! 7.4. Általános segítség a feladat megoldásához: 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 a Form osztály specifikációját érdemes tanulmányozni. 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 (ld. példaprogram). 7.5. A méréshez szükséges programok: Java 2 Platform, Standard Edition (J2SE) 1.4.2 Java ME Wireless Toolkit 2.5.2.

8. Ellenőrző kérdések 1. Hogyan valósítja meg egy Java rendszer a platformfüggetlenséget? 2. Mi a CDC, mi a CLDC és mi a különbség a kettő között? 3. Írja le a CDC profiljait! 4. Rajzolja le a MIDP architektúrát! 5. Sorolja fel a MIDP + CDC-t futtató mobil eszközzel szemben támasztott követelményeket. (HW + SW) 6. Írja le a MIDlet életciklus-modelljét. 9. Hivatkozások [1] Erdei Márk, Sója Katalin: J2ME mérés(2004). [2]

10. Függelék 10.1. Profilok által biztosított csomagok A következő táblázat összefoglalja az egyes profilok által támogatott Java csomagokat. Package J2SE 1.3.1 FP 1.0 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.microedition.io.* javax.microedition.xlet.* teljes támogatás, P részleges támogatás nincs támogatás OP opcionális csomagban

10.2. A MIDP és CLDC csomagjai java.lang Interfészek Runnable Boolean, Byte, Character, Class, Integer, Long, Math, Osztályok 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 java.util Interfészek Enumeration Osztályok Calendar, Date, Hashtable, Random, Stack, Timer, TimerTask, TimeZone, Vector Kivételek EmptyStackException, NoSuchElementException javax.microedition.io Interfészek CommConnection, Connection, ContentConnection, Datagram, DatagramConnection, HttpConnection, HttpsConnection, InputConnection, OutputConnection, SecureConnection, SecurityInfo, ServerSocketConnection, SocketConnection, StreamConnection, StreamConnectionNotifier, UDPDatagramConnection Osztályok Connector, PushRegistry Kivételek ConnectionNotFoundException javax.microedition.lcdui Choice, CommandListener, ItemCommandListener, Interfészek ItemStateListener Osztályok Alert, AlertType, Canvas, ChoiceGroup, Command, CustomItem, DateField, Display, Displayable, Font, Form, Gauge, Graphics, Image, ImageItem, Item, List, Screen, Spacer, StringItem, TextBox, TextField, Ticker Kivételek

javax.microedition.lcdui.game Interfészek Osztályok GameCanvas, Layer, LayerManager, Sprite, TiledLayer Kivételek javax.microedition.media Interfészek Control, Controllable, Player, PlayerListener Osztályok Manager Kivételek MediaException javax.microedition.media.control Interfészek ToneControl, VolumeControl Osztályok Kivételek javax.microedition.midlet Interfészek Osztályok MIDlet Kivételek MIDletStateChangeException javax.microedition.pki Interfészek Certificate Osztályok Kivételek CertificateException javax.microedition.rms RecordComparator, RecordEnumeration, RecordFilter, Interfészek RecordListener Osztályok RecordStore Kivételek InvalidRecordIDException, RecordStoreException, RecordStoreFullException, RecordStoreNotFoundException, RecordStoreNotOpenException