You are on page 1of 30

Гар утасны програмчлал :

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

You might also like