Гар утасны програмчлал : J2ME 2006 он Ц.Амарбат
Лекц №1
Агуулга
J2SE, J2EE, J2ME Гар утасны тоглоомын програмчлал Тоглоомын төрлүүд
2
Java platforms
Sun корпорац нь технологи хөгжихийн хэрээр үүсэн буй асуудлуудыг шийдвэрлэх онцлогтой нь холбогдуулан Java платформыг гурав хуваан тусд нь хөгжүүлж эхэлсэн:
J2EE : Java 2 Platform Enterprice Edition.
J2SE : Java 2 Platform Standart Edition.
Персональ компьютеруудад ашиглагдах системүүдийг бичихэд хэрэглэгдэнэ.
J2ME : Java 2 Platform Micro Edition.
Сервэр компьютеруудад тавигдах томоохон системүүдийг бичихэд хэрэглэнэ.
Жижиг төхөөрөмжүүдийг програмчлахад хэрэглэгдэнэ.
Эдгээрийг ашиглан таван төрлийн зах зээлд програм бичих боломжтой бөгөөд үүнийг доор харуулав: 3
Java platforms
4
KVM
1998 онд Sun лабд Spotless хэмээх төсөл эхэлсэн.
Зорилго: Java хэлний маш хязгаарлагдмал нөөцтэй системүүдэд (гар утас) хэрэглэх боломжтой хувилбарыг гаргах явдал. Энэ төсөл нь эхний үед зөвхөн судалгааны ажил байсан боловч Motorola компаны нөлөөгөөр уг төслийг бодит систем болгосон. Төслийн үр дүнд
KVM буюу K Virtual Machine хувилбар гарч ирсэн.
5
CLDC
Нэгэнт Motorola, Nokia, NTT DoCoMo, Palm Computing, RIM, Siemens болон бусад корпорациуд KVM –г сонирхож эхэлсэн тул Java – ийн стандартчлалыг бий болгох шаардлагатай болсон.
Тэгэхгүй бол корпораци бүрт өөр өөр KVM-н имплиментаци үүсч утас хоорондын зөрчил улам ихсэх байв. Стандартчлах ажилд 18 компани оролцон үүний үр дүнд CLDC стандарт бий болов (1999 оны 10 сард дууссан).
Энэ стандарт нь ямар нэг төхөөрөмжид тусгайлж зориулаагүй бөгөөд ямар ч төхөөрөмжид хэрэглэгдэх үндсэн асуудлуудыг тооцсон.
Дараачийн стандартчлалд 22 компани оролцон MIDP стандарт үүсэв. Энэ нь CLDC стандарт дээр тулгуурласан байсан (1999 оны 11 сар).
Энэ стандарт нь ялангуяа гар утаснуудад хэрэглэгдэх API нуудад гол анхаарлаа хандуулж өгсөн.
6
J2SE, J2EE, J2ME
Java хөрвүүлэгчид:
Java 2 Second Edition : For desktop application Java 2 Enterprice Edition : For server application Java 2 Micro Edition : For small devices such as cell phone, PDА…
Онцлог
Хэмжээгээр илүү бага Санах ой болон процессорын бага хүч шаардана Цөөн тооны класс агуулсан
Төхөөрөмжүүд ч хоорондоо санах ой, боломжоороо эрс ялгаатай тул J2ME нь улам задран хувилбаруудад хуваагдсан
Connected Device Configuration (CDC) : Илүү их хэмжээний санах ойтой төхөөрөмжүүдэд зориулагдсан хувилбар. Жишээ PDА. Connected Limited Device Configuration (CLDC) : Бага санах ой, жижиг дэлгэцтэй төхөөрөмжүүдэд зориулагдсан хувилбар. Жишээ гар утас. CLDC 1.0 , CLDC 1.1 хувилбарууд гарсан.
7
J2ME : Profiles
Хэдийгээр хувилбаруудад (Сonfigurations) задарсан ч нэг хувилбар дотор мөн л ялгаатай маш олон төхөөрөмжүүд байдаг тул SUN нь J2ME –г цааш нь улам задлан Тохиргоонуудад (Profiles) хуваасан.
Өөрөөр хэлбэл CLDC нь дотроо олон янзын төхөөрөмж утсуудад зориулсан олон тохиргоотой гэсэн үг.
Тохиргоо бүр нь уг төхөөрөмжид л хамааралтай тусгай класс, функцүүдийг агуулна.
Хамгийн түгээмэл хэрэглэгддэг CLDC-н тохиргоо бол MIDP юм.
8
J2ME : CLDC --- Profiles --- MIDP
Mobile Information Device Profile (MIDP) :
Гар утаснуудад зориулагдсан пакэжуудийг агуулдаг.
Үүгээр хязгаарлагдахгүй. Зарим төхөөрөмжүүд жишээ нь PalmOS, PDA нь MIDP – г агуулдаг. MIDP 1.0, MIDP 2.0 хувилбарууд гарсан. MIDP 1.0 нь нэлээд хязгаарлагдмал байсан тул Sony Ericson, Nokia, Siemens, Motorola нар нь өөрсдийн утсанд зориулсан Java SDK гаргасан нь асуудлыг улам хүндрүүлж байсан. MIDP 2.0 нь дээрх алдааг засан илүү тохиромжтой болсон байна.
MIDP 1.0 ашиглан хийсэн DangerDrop тоглоом
9
Тоглоомын төрлүүд
Ихэнх тоглоомууд дараах төрлүүдийн аль нэгэнд багтана:
Arcade / Action: Хурдан хөдөлдөг, өндөр хэмжээний график, тоглогч тоглоомын харилцаа өндөр. Жишээ : Quake, Counter Strike Puzzle: Тетрис мэтийн логик шаардах тоглоомууд Card: Карт ашиглах тоглоомууд. Жишээ нь хөзөр. Strategy: Сэтгэлгээ их шаардана, менежмент хийх, тактик гаргах. Жишээ : Command and Conquer, World of Warcraft RPG: Ямар нэг дүрд тоглох, цаг хугацааны туршид хөгжих. Sport: Спортыг дууриалгасан тоглоом
10
Arcade and Action Game
MIDP 1.0 ашиглан хийгдсэн энэ төрлийн тоглоомууд нь хэтэрхий энгийн байсан. Английн алдартай IOMO компаниас гаргасан Pursuit Squad (MIDP 2.0) програм. 3D график ашигласан байна :
11
Sport Game
IOMO компани нь J2ME-д зориулан 3D драйвер зохиосон бөгөөд өөрсдийн хийсэн Голф тоглоомд үүнийгээ ашигласан байна :
MIDP ашиглан хийгдсэн тоглоомуудыг MIDLet гэж нэрлэдэг.
12
Strategy Game
Macrospace компаниас гаргасан Ancient Empire тоглоом :
13
Card Game
Энэ төрлийн тоглоом нь гар утсанд илүү тохиромжтой байдаг. Нөөц бага шаарддаг боловч сонирхол их төрүүлдэг. Flarb LLC компаниас гаргасан дараах тоглоомд хүмүүс үнэхээр их татагддаг :
14
Multiplayer Game
Ер нь гар утаснууд интернэтэд холбогддог (TCP\IP or WAP). Гэвч олон хэрэглэгч холбогдон тоглох энэ төрлийн тоглоом нь сүлжээ их ашиглах тул зарим тоглоом нь үнэтэй тусч болох юм. Cosmic Infinity компанийн Shape тоглоом :
15
Гар утасны тоглоомын ирээдүй
Гар утасны тоглоомын програмчлалын давуу талууд :
Зардал бага 1-5 хүний бүрэлдэхүүнтэй баг Тусгай тоног төхөөрөмж хэрэглэгдэхгүй байдал Олон хэрэглэгчийн тоглоомыг хэрэгжүүлэх боломж
Хэрэглэх програм
Java 2 Micro Edition (J2ME)
16
Гар утаснууд (Handsets)
MIDP 2.0 дэмждэг гар утаснууд
17
Requirements
CLDC requirements:
160 kb тогтмол санах ой 32 kb шуурхай санах ой
MIDP 2.0 requirements:
Дор хаяж 96х54 хэмжээтэй дэлгэц 256 kb тогтмол санах ой (for MIDP implementation) Ажиллаж буй програмын өгөгдлийг хадгалах 8 kb тогтмол санах ой Java виртуаль санах ойд зориулан 128 kb санах ой Сүлжээнд өгөгдөл дамжуулах боломж Дуу тоглуулах боломж 18
J2ME
Дараах хаягаар татаж авна: http://java.sun.com/j2me Эндээс Sun J2ME Wireless Toolkit програмыг татаж авна.
Sun J2ME Wireless Toolkit дотор юу байдаг вэ?
KToolbar
MIDLet-үүдийг бичиж, компиляци хийн debug хийх програм
Emulator
MIDLet-үүдийг компьютер дээр ажиллуулан турших програм Гар утасны үүргийг гүйцэтгэх програм Дуу тоглуулах боломж 19
Hello World!
Эхний програмаа бичиж үзье:
Эхлээд KToolbar дээр шинээр Project үүсгэнэ.
Үүний тулд new project товчийг дарна:
20
Hello World!
Project Name: Энэ нь уг програмын файлуудыг хадгалах хавтасны (folder) нэр бөгөөд энэ хавтас C:WTK25\app (j2me-г c диск дээр шууд суулгасан бол) хэсэгт хадгалагдана. MIDLet Class Name: Энэ нь манай MIDLet-ийн үндсэн классын нэр юм.
Дараах байдлаар нэр өгье: Үүний дараа гарч ирсэн цонх дээр OK дарна.
21
Hello World!
Одоо кодоо бичиж өгье. Үүний тулд:
Eclipse дээр шинэ Project үүсгэнэ J2ME lib файлууд хаана байгааг зааж өгнө:
Project Property->Build path->Add external jars
C:\WTK25\lib замаар орж тэнд байгаа jar файлуудыг оруулж өгнө.
Уг Project дээр шинээр HelloWorld нэртэй класс үүсгэнэ.
Дараах кодуудыг бичнэ үү:
22
Hello World!
23
Hello World!
24
Hello World!
Мэдээж бид MIDlet бичиж буй учир javax.microedition.midlet.MIDlet пакэжийг импорт хийнэ. Харин lcdui пакэж нь J2SE-н график AWT классын оронд хэрэглэгдэх тусгайлан утсанд зориулсан график компонентуудыг агуулсан байдаг.
HelloCanvas-г ашиглан бид дэлгэц дээр Hello World гэж бичнэ. Display нь төхөөрөмжийн дэлгэцийн тухай мэдээллийг өгч тохируулахаас гадна утсыг vibrate үйлдлийг хүртэл гүйцэтгэдэг.
Энэ үйлдлийг SUN ийнхан өөр тавьчихаар класс олоогүй бололтой.
25
Hello World!
Бид Display-г ашиглан яг одоо идэвхтэй байгаа дэлгэцийг canvas-д зааж өгч байгаа. MIDlet класс дотор гурван абстракт функц байдаг нь :
startApp( ) : MIDlet-г идэвхтэй болонгуут энэ функц дуудагддаг. Жишээ нь MIDlet ачаалагдах, түр pause-с дахин ажиллах, утсаар орж ирсэн ярианы дараа үргэлжлүүлэн тоглох гэх мэт. Тиймээс програмчилж байхдаа яг эхлэхэд ямар код нь ажиллах, түр зогссоны дараа ямар код ажиллахыг тодорхой болгох шаардлагатай. pauseApp( ) : Түр зогсооно. Янз бүрийн шалтгаанаар түр зогсож орно. Тоглож байх зуур дуудлага орж ирэх, мэссэж ирэх эсвэл хэрэглэгч өөрөө түр зогсоох гэх мэт. Энэ функц дотор тоглоомын төлөвийг хадгалах, цагтай холбоотой асуудлуудыг шийдэх зэрэг зүйл хийж болно. MIDlet өөрөө өөрийгөө notifyPaused( ) функц дуудан зогсоож болдог. destroyApp( ) : Програмыг дуусгах үед дуудагдана. Энд тоглолтыг хадгалах, нөөцийг суллах (сүлжээний холболтыг хаах) зэрэг үйлдэл хийж өгч болно. MIDlet өөрийгөө notifyDestroyed( ) функц дуудан дуусгаж болно. Байгуулагч функц. 26
Hello World!
MIDlet-ийн байгуулагч функц дотор бид нэг их зүйл хийх боломжгүй байдаг. Учир нь дэлгэц болон бусад нөөцтэй холбоотой нэлээд функцүүд байгуулагч функц дотор тодорхойгүй хариу үйлдэл үзүүлдэг.
Тиймээс байгуулагч функц дотор ихэвчлэн хувьсагчдад болон өгөгдлүүдэд анхны утгыг олгох үйлдлүүдийг хийгээд гол функц үйлдлүүдийг startApp( ) дотор хийвэл зохимжтой.
CommandListener интерфэйсээс commandAction функц орж ирдэг. Энэ функцийг ашиглан бид хэрэглэгчээс дарсан товчийг авдаг.
27
Hello World!
J2ME-ийн Canvas класс нь график зүйлийг дүрслэхэд хэрэглэгддэг. Жишээ нь текст, bitmap зургууд болон геометрийн дүрсүүдийг зурах гэх мэт. Мөн Canvas нь хэрэглэгчээс дарсан товчийг авах болон өөрийн харьяалагдаж буй MIDlet рүү CommandListener интерфэйсийг хэрэглэн команд өгөх зэрэгт хэрэглэгддэг.
Эдгээр зурах болон команд авах өгөх зэрэг холбоогүй үйлдлүүд холилдсоноос болж сонин төрхтэй код үүсдэг боловч програмистууд үүнтэй зохицохоос өөр аргагүй.
Бидний жишээн дээр Canvas маань дэлгэцийг цэвэрлэн текст зурах үйлдэлд ашиглагдсан байгаа.
28
Hello World!
Одоо кодоо ажиллуулна.
Эхлээд Eclipse дээрх бичсэн HelloWorld.java файлыг сонгон copy хийнэ. Үүнийг C:\WTK25\apps\helloworld\src хавтас дотор хуулж өгнө. Дараа нь KToolkit дээрээс build товчийг дарна. Консол дээр нь build complete гэсэн мэдээлэл гарч байвал ажиллуулахад бэлэн боллоо гэсэн үг. Үүний дараа Run товчийг дарснаар MIDlet маань ажиллана.
Ажиллуулсны дараа C:\WTK25\apps\helloworld\bin хавтас дотор MIDlet ийн маань хөрвүүлэгдсэн helloworld.jad файл гарч ирсэн байгааг харж болно. Үүнийг утсандаа суулгаснаар програм маань утсан дээр ажиллахад бэлэн болох юм.
29
Hello World!
30