133_4357

Upload: dnguyenbinh

Post on 04-Apr-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/30/2019 133_4357

    1/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    I HC QUC GIA H NI

    TRNG I HC CNG NGH

    ng nh Hng

    NGHIN CU CNG NGH J2ME V TH NGHIMLP TRNH NG DNG TRN THIT B DI NG

    KHO LUN TT NGHIP I HC H CHNH QUY

    Ngnh: Cng ngh thng tin

    H NI - 2010

  • 7/30/2019 133_4357

    2/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    I HC QUC GIA H NITRNG I HC CNG NGH

    ng nh Hng

    NGHIN CU CNG NGH J2ME V TH NGHIM LP TRNH NG DNGTRN THIT B DI NG

    KHO LUN TT NGHIP I HC H CHNH QUY

    Ngnh: Cng ngh thng tin

    Cn b hng dn: ThS o Ngc Phong

    I HC QUC GIA H NI

    TRNG I HC CNG NGH

    ng nh Hng

    NGHIN CU CNG NGH J2ME V TH NGHIMLP TRNH NG DNG TRN THIT B DI NG

    KHO LUN TT NGHIP I HC H CHNH QUY

    Ngnh: Cng ngh thng tin

    Cn b hng dn: ThS o Ngc Phong

    H NI - 2010

  • 7/30/2019 133_4357

    3/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    Li cm n

    Sau mt thi gian tp trung nghin cu v thc hin, em hon thnh xong lunvn ca mnh. y l kt tinh ca mt qu trnh lao ng v hc tp nghim tc da trn

    kin thc m em thu thp c di s truyn dy ca qu thy c.

    Li u tin, em xin c gi li cm n su sc ti ThS. o Ngc Phong v thy

    PGS TS Trnh Nht Tin, nhng ngi thy nhit tnh gip em cng nh cc bn

    c thy hng dn trong sut qu trnh lm kha lun.

    Em xin c cm n cc thy, cc c ging dy em trong sut bn nm qua.

    Nhng kin thc m cc thy, cc c dy s mi l hnh trang gip em vng bc

    trong tng lai.

    Em cng xin c cm n tp th lp K51CC, mt tp th lp on kt vi nhng

    ngi bn lun nhit tnh gip mi ngi, nhng ngi bn gip em trong sut

    bn nm hc tp trn ging ng i hc.

    Cui cng, em xin c gi li cm n su sc ti b m v gia nh em, nhng

    ngi lun kp thi ng vin, khch l em, gip em vt qua nhng kh khn trong

    cuc sng.

    H Ni, thng 5 nm 2010

    ng nh Hng

  • 7/30/2019 133_4357

    4/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    Tm tt ni dung

    Kha lun tp trung nghin cu cng ngh J2ME trn thit b di ng vi trngtm l phc v cho vic p ng cc dch v trc tuyn trong thc t cuc sng. B n cnh

    cn c cc cng ngh lin quan nhm tr gip cc lp trnh vin d dng tip cn vi

    vic xy dng cc ng dng trn thit b di dng mt cch linh hot v chuyn nghip.

    Vic xy dng ng dng th nghim c p ng hai kha cnh, mt l xy dng

    ng dng Web Services xy dng v qun tr ni dung, hai l th nghim ng dng

    trn thit b di ng dnh cho ngi dng vi mt chng trnh m phng.

  • 7/30/2019 133_4357

    5/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    Mc lc

    Chng 1. Tng quan v lp trnh trn thit b di ng .................................................... 11.1. Thc t cc ng dng trn thit b di ng ______________________________ 1

    1.2. c im ca lp trnh ng dng trn thit b di ng _____________________ 1

    1.3. Cc cng ngh trong lp trnh trn thit b di ng _______________________ 1

    Chng 2. Gii thiu J2ME................................................................................................ 32.1. Lch s hnh thnh J2ME ____________________________________________ 3

    2.2. Cc phin bn, c im _____________________________________________ 32.2.1. MIDP 1.0 _______________________________________________________ 3

    2.2.2 . MIDP 2.0 _______________________________________________________ 4

    2.3. S khc nhau gia J2ME v J2SE _____________________________________ 5

    2.4. Cc c im khc _________________________________________________ 7

    Chng 3. Cng ngh lp trnh J2ME trn thit b di ng ............................................. 83.1. Kin trc _________________________________________________________ 8

    3.2. Cc lp ca J2ME _________________________________________________ 10

    3.3. Cc tng ca CLDC J2ME __________________________________________ 113.4. Tng my o Java _________________________________________________ 12

    3.5. Tng cu hnh ____________________________________________________ 15

    3.6. Tng hin trng ___________________________________________________ 16

    3.7. MIDlet _________________________________________________________ 16

    3.7.1. B khung MIDlet ________________________________________________ 17

    3.7.2. Chu k sng ca MIDlet __________________________________________ 18

    3.7.3. Tp tin JAR ____________________________________________________ 20

    3.7.4. Tp tin k khai v JAD ___________________________________________ 203.7.5. B MIDlet _____________________________________________________ 21

    Chng 4. Mt s cng ngh trong J2ME ....................................................................... 224.1. ha __________________________________________________________ 23

    4.1.1. ha mc cao _________________________________________________ 23

  • 7/30/2019 133_4357

    6/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    4.1.1.1. Text Box _____________________________________________________ 23

    4.1.1.2. Form ________________________________________________________ 23

    4.1.1.3. List _________________________________________________________ 234.1.1.4. Alert ________________________________________________________ 23

    4.1.1.5. Form v cc Form Item __________________________________________ 24

    4.1.1.5.1. String Item __________________________________________________ 24

    4.1.1.5.2. Image Item __________________________________________________ 24

    4.1.1.5.3. Text Field ___________________________________________________ 24

    4.1.1.5.4. Date Field ___________________________________________________ 24

    4.1.1.5.5. Choice Group ________________________________________________ 24

    4.1.1.5.6. Gause ______________________________________________________ 25

    4.1.1.5.7 . Ticker ______________________________________________________ 25

    4.1.2. ha mc thp ________________________________________________ 25

    4. 2. Lp trnh mng ___________________________________________________ 26

    4.2.1. Khung mng CLDC tng qut ______________________________________ 26

    4.2.2. Cc lp giao din kt ni __________________________________________ 28

    4.2.3. Kt ni HTTP ___________________________________________________ 30

    4.2.3.1. V d kt ni HTTP GET ________________________________________ 314.2.3.2. V d kt ni HTTP POST _______________________________________ 32

    4.2.4. Triu gi CGI script ______________________________________________ 33

    4.2.5. HTTP Request Header ____________________________________________ 34

    4.3. Wireless Messaging API ____________________________________________ 34

    Chng 5. Xy dng ng dng th nghim .................................................................... 385.1. Gii thiu ng dng _______________________________________________ 38

    5.1.1. Mc tiu _______________________________________________________ 38

    5.1.2. ng dng th nghim ____________________________________________ 385.2. Cc cng ngh s dng trong chng trnh _____________________________ 38

    5.2.1. Lightweight UI Toolkit (LWUIT) ___________________________________ 38

    5.2.2. XML __________________________________________________________ 40

    5.2.2.1. Phn tch XML ________________________________________________ 41

  • 7/30/2019 133_4357

    7/83

  • 7/30/2019 133_4357

    8/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    6.3.2. Trn thit b di ng______________________________________________ 61

    6.4. M ngun tham kho ______________________________________________ 65

    6.4.1. kxml2 _________________________________________________________ 656.4.2. Convert UTF-8 __________________________________________________ 65

    6.4.3. LWUIT ________________________________________________________ 65

    Chng 7. Ci t ng dng th nghim ....................................................................... 667.1. Web Services ____________________________________________________ 66

    7.1.1. Ci t phn gi lp my ch Web trn my tnh c nhn ________________ 66

    7.1.2. Cu hnh gi ng dng Web Services ________________________________ 66

    7.2. Trn thit b di ng _______________________________________________ 67

    7.2.1. Ci t phn mm m phng _______________________________________ 677.2.2 . Cu hnh ng dng th nghim _____________________________________ 67

    Kt lun:....Ti liu tham kho:...

  • 7/30/2019 133_4357

    9/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    Danh mc hnh v v bng biu

    Hnh 1: Lch s J2ME............................................................................................... ....3Hnh 2: S kim tra ca b tin kim tra v b kim tra..........................................5

    Hnh 3: M hnh Sandbox..6

    Hnh 4: J2ME v J2SE...7

    Hnh 5: Kin trc J2ME.8

    Hnh 6: Phn khc dng thit b vi cc ngn ng Java....9

    Hnh 7: Cc lp ca J2ME.11

    Hnh 8: Tin trnh xy dng MIDlet. .13

    Hnh 9: MIDlet..16

    Hnh 10: B khung yu cu ti thiu cho mt ng dng MIDlet...17

    Hnh 11: Chu k sng ca MIDlet.18

    Hnh 12: Hai b MIDlet.21

    Hnh 13. Phn cp lp ha.25

    Hnh 14. Khung mng CLDC tng qut.26

    Hnh 15. Cc lp kt ni. 27

    Hnh 16. Cc trng thi kt ni HTTP29

    Hnh 17: Cc phn tng lp trong LWUIT.38

    Hnh 18 : ng dng th nghim vi LWUIT.39

    Hnh 19 : Qu trnh x l trn web services45

    Hnh 20 : Biu thc th lin kt ca h thng48

    Hnh 21: Ngi qun tr ng nhp vo h thng...49Hnh 22: Khu vc mc nh ca h thng...49

    Hnh 23: Khu vc hin th danh mc ca h thng.50

    Hnh 24: Khu vc hin th ni dung bn tin50

  • 7/30/2019 133_4357

    10/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    Hnh 25: Phn ty chn bn tri ca h thng.51

    Hnh 26: Phn qun l nhm ngi dng51

    Hnh 27: Phn qun l nhm thc n52

    Hnh 28: Phn qun l Component.52

    Hnh 29: Khu vc qun l ngn ng hin th trong h thng.53

    Hnh 30: Kt qu thu c vi trnh duyt Mozilla Firefox 3.5.53

    Hnh 31: Kt qu thu c vi trnh duyt Mozilla Firefox 3.554

    Hnh 32: Mn hnh khi ng ca ng dng..55

    Hnh 33: Mn hnh ty chn ng dng...57Hnh 34:Yu cu cho php kt ni ti dch v...57

    Hnh 35: Cc qu trnh khi xem tin tc vi ng dng58

    Hnh 36: To c s d liu trong phpmyadmin..66

    Hnh 37: Qu trnh nhp c s d liu...66

    Hnh 38: Bc u to Project mi67

    Hnh 39: Cu hnh ban u.68

    Hnh 40: Cu hnh chi tit...68

  • 7/30/2019 133_4357

    11/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    Thut ng vit tt

    API Application Program InterfaceASCII American Standard Code for Information Interchange

    AWT Abstract Window ToolKit

    CBS Cell Broadcast Short Message Service

    CDC Connected Device Configuration

    CDMA Code Division Multiple Access

    CGI Common Gateway Interface

    CLDC Connected Limited Device Configuration

    CPU Central Processing UnitDOM Document Object Model

    DTD Document Type Definition

    EDGE Enhanced Data GSM Environment

    GPRS General Packet Radio Service

    GPS Global Positioning System

    GSM Global System for Mobile Communications

    GUI Graphical User Interface

    HTML Hyper-Text Markup Language

    HTTP Hyper-Text Transfer Protocol

    IDE Integrated Development Environment

    IP Internet Protocol

    IR Infra Red

    J2EE Java 2 Platform, Enterprise Edition

    J2ME Java 2 Platform, Micro Edition

    J2SE Java 2 Platform, Standard EditionJAD Java Application Descriptor

    JAR Java Application Archive

    JCP Java Community Process

    JNI JavaNative Interface Support

  • 7/30/2019 133_4357

    12/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    JSR Java Specification Request

    KVM K Virtual Machine

    MIDlet MIDP appletMIDP Mobile Information Device Profile

    MVC Model-View-Controller

    OTA Over The Air

    PC Personal Computer

    PDA Personal Digital Assistant

    PHP PHP Hypertext Preprocessor

    RMI Remote Method Invocation

    RMS Record Management System

    SAX Simple API for XML

    SMS Short Message Service

    UDP User Datagram Protocol

    URL Uniform Resource Locator

    WAP Wireless Application Protocol

    WBXML Wap Binary XML

    WMA Wireless Messaging APIXML eXensible Markup Language

  • 7/30/2019 133_4357

    13/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    1

    Chng 1. Tng quan v lp trnh trn thit b di ng

    1.1. Thc t cc ng dng trn thit b di ngMng in thoi di ng xut hin ti Vit Nam t u nhng nm 1990 v theo

    thi gian, s lng cc thu bao cng nh cc nh cung cp dch v di ng ti Vit Nam

    ngy cng tng. Cng vi s pht trin ca s lng thu bao di ng l s a dng ha

    cc dch v hng n thit b di ng. Trong nhng nm gn y, in thoi di ng

    khng ch mang chc nng nghe gi hay nhn tin thng thng m cn l mt thit b

    gii tr, tra cu thng tin hay tr gip c nhn c lc. Do vy, xy dng cc ng dng

    cho in thoi di ng ang l mt yu cu tt yu trong xu th hin nay. Nm 2009, cc

    nh mng ln bt tay vo vic trin khai mng 3G ti Vit Nam, nm 2010 tr i cnh gi l nhng nm n r cc dch v tin ch trn thit b di ng c bit l cc ng

    dng trc tuyn trn nn thit b di ng.

    Trong tng lai, vi s pht trin mnh m ca cc thit b di ng v phn cng

    cng nh cht lng mng di ng, ngnh cng nghip phn mm trn thit b di ng s

    gt hi c nhiu thnh qu v n s thu ht lng ln cc nhn cng cng nh ha hn

    nhiu iu th v.

    1.2. c im ca lp trnh ng dng trn thit b di ng

    c trng thit b di ng h tr ti nguyn phn cng khng cao, vi c im lb nh hn ch, kh nng x l chm, cc thit b m rng cn hn ch, v vy lp trnh

    ng dng trn thit b di ng i hi cc lp trnh vin qun l tt b nh, ln ca m

    ngun, cng nh cc th vin hay c ch lm vic vi cc file media.

    Do thit b di ng c pht trin bi nhiu hng nn cu trc phn cng a dng

    v kh c chun chung nn yu cu cc ngn ng lp trnh c lp vi phn cng v linh

    hot l rt cao.

    1.3. Cc cng ngh trong lp trnh trn thit b di ng

    Hai hng pht trin ng dng trn in thoi di ng ph bin hin nay l s dngngn ng C++ trn nn h iu hnh Symbian v J2ME. Khong my nm tr li y,

    nn tng di ng m Android ca Google v iPhone OS ca Apple cng ang c tn hiu

    pht trin rt kh quan.

  • 7/30/2019 133_4357

    14/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    2

    Cc ng dng vit trn nn Symbian c cc u th truy cp trc tip cc ti nguyn

    ca in thoi cng nh h tr h thng tp tin, th mc nh my tnh c nhn v c

    h tr trc tip bi h iu hnh. Tuy nhin h iu hnh Symbyan li c kch thc khln nn ch c cc th h in thoi tng i cao cp, v xy dng ng dng dng

    Symbian API cng phc tp hn.

    i trng vi Symbian API l cng ngh J2ME vi kch thc nh gn, tin dng,

    c h tr bi hu ht cc th h in thoi mi ra i, k c cc in thoi c h iu

    hnh Symbian. J2ME khng nhng l mt ngn ng hng n cc thit b di ng m

    cn l ngn ng chnh lp trnh trn cc thit b gia dng, th tn dng in t v cc

    thit b thng minh khc. Chng ta c th ni i tng ca ngn ng J2ME l rng hn

    rt nhiu so vi C++ trn nn Symbyan. Ti thi im hin ti, ngn ng J2ME khng htr c nhiu tnh nng nh trn C++ trn nn Symbian nhng li c nhng u im tri

    hn. J2ME l mt ngn ng nh, gn nhng rt cht ch v d nm bt, vi nhng lp

    trnh vin c kinh nghim vi Java vic lp trnh vi J2ME tr nn rt d dng. J2ME

    cn l ngn ng c cc t chc m ngun m ng h mnh m v pht trin rt nhanh

    chng.

    Nm 2007, lin minh Google, OHA ra mt nn tng Android, n c gii thiu l

    mt nn tng m vi s kt hp ca ngn ng Java v h iu hnh Linux 2.6. Trong

    Android, nt c trng ni bt l tnh tng thch ln nhau, kh nng h tr thit b, cngnh ngn ng Java SE cng vi vic tch hp s dng c s d liu ngay trong thit b.

    Mt i th rt ng gm trong th phn ca in thoi thng minh l iPhone ca

    Apple, cc ng dng ca iPhone c vit bng ngn ng Objective C hot ng trn nn

    iPhone OS. c im chnh ca Objective C l ngn ng hng i tng nhng c h

    tr nhiu bi cc API nn vic x l a phng tin ni tri, iu ny cng to nn

    thng hiu nh m ca Apple.

  • 7/30/2019 133_4357

    15/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    3

    Chng 2. Gii thiu J2ME

    2.1. Lch s hnh thnh J2MEJ2ME c pht trin t kin trc Java Card, Embeded Java v Personal Java ca

    phin bn Java 1.1. n s ra i ca Java 2 th Sun quyt nh thay th Personal Java v

    c gi vi tn l Java 2 Micro Edition, hay vit tt l J2ME. J2ME l nn tng cho cc

    thit b c tnh cht nh gn:

    Hnh 1: Lch s J2ME.

    2.2. Cc phin bn, c im

    C hai phin bn MIDP chnh trong ngn ng J2ME:

    2.2.1. MIDP 1.0

    Phin bn ny xut hin u tin vo nm 2001, v ph bin rng ri M (dn u

    l Motorola ). Vi th h ban u ny, cc chng trnh ch c h tr c bn nh giao

    din chng trnh, giao thc HTTP v cc tnh nng h tr m thanh hay kh nng vit

    game cha c h tr.

    Cc lp v kiu d liu: Phn ln cc lp m cc lp trnh vin Java quen

    thuc vn cn c gi li v d nh cc lp trong gi java.util nh Stack, Vector vHastable cng nh Enumeration.

    H tr i tng Display: ng nh tn gi mt chng trnh MIDP s h

    tr duy nht mt i tng Display l i tng qun l vic hin th d liu trn mn

    hnh in thoi.

  • 7/30/2019 133_4357

    16/83

  • 7/30/2019 133_4357

    17/83

  • 7/30/2019 133_4357

    18/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    6

    B tin kim tra

    Cc tp tin lp c gn nhn bng mt thuc tnh trn my trm. Thuc tnh ny

    sau c b tin kim tra kim tra trc khi m chng trnh c giao cho KVM hay

    b bin dch m bytecode.

    Mt b phn khc ca bo mt trong CLDC l m hnh sandbox.

    Hnh 3 biu din khi nim m hnh sandbox:

    Hnh 3: M hnh Sandbox.

    M hnh Sandbox

    ng dng J2ME t trong mt sandbox b gii hn truy xut n ti nguyn ca

    thit b v khng c truy xut n My o Java hay b np chng trnh. ng dng

    c truy xut n cc API ca CLDC v MIDP. ng dng c truy xut ti nguyn

    ca thit b di ng ch khi nh sn xut in thoi di ng cung cp cc API tng ng.

    Nhng cc API ny khng phi l mt phn ca J2ME.

    Th h k tip ca CLDC l c t JSR - 139 v c gi l CLDC th h k tip.

    N s nhm n cc vn nh nng cao vic qun l li v c th php ton s thc.

    Ti nguynthit b

    Cc CLDCAPI

    Cc MIDPAPI

    Chng trnhng dngJava

    API

    API

    API

    ClassLoader

    H thngJVM

  • 7/30/2019 133_4357

    19/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    7

    Hnh 4: J2ME v J2SE.

    2.4. Cc c im khc

    Khi vit J2ME, do c tnh cn nh gn v bo mt tt cho thit b di ng nn Sun

    lc bt cc lp s ch li cc lp c bn, do vy, v bn cht J2ME l ngn ng

    k tha v tinh lc ca phin bn J2SE.

    Bn cnh nhng MIDP v c vit cho thit b c cu hnh ln b nh thp nn

    n khng h tr:

    Php tnh du phy ng (floating point): Php tnh ny i hi rt nhiu

    ti nguyn CPU v phn ln cc CPU cho cc thit b di ng khng h tr php tnh ny,

    do MIDP cng khng c.

    B np class (Class Loader).

    H tr t kha finalize() nh trong J2SE: Vic dn dp ti nguyn trc

    khi n b xa c y v pha cc lp trnh vin.

    H tr hn ch thao tc bt li.

    Phn ln cc th vin API cho Swing v AWT khng th s dng c

    trong MIDP.

    Khng h tr cc tnh nng qun l file v th mc: y c th lm bnngc nhin nhng thc t l cc thit b J2ME khng c h tr cc thit b lu tr thng

    thng nh cng v.v. Tuy nhin, iu khng c ngha l bn phi mt i mi d liu

    quan trng mi khi tt my, Sun cung cp mt chc nng khc tng ng gi l

    Record Management system (RMS) cung cp kh nng lu tr cho cc thit b ny.

  • 7/30/2019 133_4357

    20/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    8

    Chng 3. Cng ngh lp trnh J2ME trn thit b di ng

    3.1. Kin trc

    Hnh 5: Kin trc J2ME.

    Configuration: l c t nh ngha mt mi trng phn mm cho mt dng cc

    thit b c phn loi bi tp hp cc c tnh, v d nh:

    o Kiu v s lng b nh

    o Kiu v tc vi x l

    o Kiu mng kt ni

    Do y l cc c t nn nh sn xut thit b u cui nh Samsung, Nokiabt

    buc phi thc thi y cc c t do Sun qui nh cc lp trnh vin c th da vo

    mi trng lp trnh nht qun v thng qua s nht qun ny, cc ng dng c to ra

    c th mang tnh c lp thit b cao nht c th. V d nh mt lp trnh vin vit chng

    trnh game cho in thoi Samsung th c th sa i chng trnh mt cch ti thiunht c th chy trn in thoi Nokia

    Hin nay Sun a ra hai dng cu hnh:

    CLDC (Connected Limited Device Configuration-Cu hnh thit b kt ni

    gii hn): c thit k nhm vo th trng cc thit b cp thp, cc thit b ny

  • 7/30/2019 133_4357

    21/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    9

    thng thng l my in thoi di ng v PDA vi khong 512 KB b nh. V ti

    nguyn b nh hn ch nen CLDC c gn vi Java khng dy, dng cho php ngi

    dng mua hoc ti v cc ng dng Java, v d nh Midlet. CDC (Connected Device Configuration-Cu hnh thit b kt ni): CDC

    c a ra nhm n cc thit b c tnh nng mnh hn dng thit b thuc CLDC

    nhng vn yu hn h thng my bn s dng J2SE. Nhng thit b ny c nhiu b nh

    hn (thng thng trn 2 Mb) v c b x l mnh hn. Cc sn phm ny c th k n

    nh cc my PDA cp cao, in thoi web, cc thit b gia dng

    C hai dng cu hnh k trn u cha my o Java JVM (Java Virtual Machine)

    v tp hp cc lp Java c bn cung cp mt mi trng cho cc ng dng J2ME. Tuy

    nhin, vi cc thit b cp thp, do hn ch v ti nguyn nh b nh v b x l nn

    khng th yu cu my o h tr tt c cc tnh nng nh my o ca J2SE, n c, cc

    thit b thuc CLDC khng c phn cng yu cu cc php tnh ton du phy ng, nn

    my o thuc CLDC khng c yu cu h tr kiu float v double.

    Hnh 6: Phn khc dng thit b vi cc ngn ng Java.

  • 7/30/2019 133_4357

    22/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    10

    CLDC CDC

    RAM >=32Kb, =256Kb

    ROM >=128Kb, =512Kb

    Ngun nng lng C gii hn Khng gii hn

    Network Chm Nhanh

    Bng so snh cc thng s k thut gia CLDC v CDC

    Profile: profile l m rng ca configuration bng cch thm vo cc lp b tr

    cc tnh nng cho tng thit b chuyn bit. C hai configuration u c nhng profile lin

    quan v t nhng profile ny c th dng cc lp ca nhau. Chnh v vy m do miprofile nh ngha mt tp hp cc lp khc nhau nn thng th ta khng th chuyn ng

    dng Java vit cho profile ny sang mt my h tr profile khc. Cng v vy m khng

    th ly ng dng vit trn J2SE hay J2EE chy trn my h tr J2ME. Sau y l mt

    s profile tiu biu:

    o Mobile Information Device Profile (MIDP): profile ny s b sung cc tnh

    nng nh h tr kt ni, cc thnh phn h tr giao din ngi dng vo CLDC.

    Profile ny c thit k ch yu nhm vo in thai di ng vi c tnh l mn

    hnh hin th hn ch, dung lng cha c hn. Do MIDP s cung cp mt giao dinngi dng n gin v cc tnh nng mng n gin da trn HTTP. C th ni MIDP l

    profile ni ting nht bi v n l kin thc c bn cho lp trnh Java trn cc my di

    ng (Wireless Java).

    o PDA Profile: tng t MIDP, nhng vi th trng l cc my PDA vi

    mn hnh v b nh ln hn.

    o Foundation Profile: cho php m rng cc tnh nng ca CDC vi phn ln

    cc th vin ca b Core Java2 1.3.

    Ngoi ra cn c Personal Basis Profile, Personal Profile, RMI Profile, Game Profile.

    3.2. Cc lp ca J2ME

    Mc tiu ca J2ME l gip cc lp trnh vin vit cc ng dng c lp vi thit b

    di ng, vit mt ln ng mi ch, khng cn quan tm n phn cng thc s. lm

  • 7/30/2019 133_4357

    23/83

  • 7/30/2019 133_4357

    24/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    12

    ny cung cp mt s chun ha cho cc thit b di ng ng dng J2ME sau khi

    bin dch c th hot ng trn bt k thit b di ng no c J2ME KVM.

    Tng cu hnh (Configuration Layer)Tng cu hnh ca CLDC nh ngha giao din ngn ng Java (Java language

    interface) c bn cho php chng trnh Java chy trn thit b di ng. y l mt tp

    cc API nh ngha li ca ngn ng J2ME.

    Tng hin trng (Profile Layer)

    Tng hin trng hay MIDP ( Mobile Information Device Profile ) cung cp tp cc

    API hu dng hn cho lp trnh vin. Mc ch ca hin trng l xy dng trn lp cu

    hnh v cung cp nhiu th vin ng dng hn. MIDP nh ngha cc API ring bit cho

    thit b di ng. Cng c th c cc hin trng v cc API khc ngoi MIDP c dngcho ng dng. V d, c th c hin trng PDA nh ngha cc lp v phng thc hu

    dng cho vic to cc ng dng PDA (lch, s hn, s a ch). Cng c th c mt hin

    trng nh ngha cc API cho vic to cc ng dng Bluetooth. Thc t, cc hin trng k

    trn v tp cc API ang c xy dng. Chun hin trng PDA l c t JSR-75 v

    chun Bluetooth API l c t JSR-82 vi JSR l vit tt ca Java Specification Request.

    3.4. Tng my o Java

    Vai tr ca my o Java hay KVM l dch m bytecode c sinh ra t chng trnhJava bin dch sang ngn ng my. Chnh KVM s chun ha output ca cc chng

    trnh Java cho cc thit b di ng khc nhau c th c b vi x l v tp lnh khc nhau.

    Khng c KVM, cc chng trnh Java phi c bin dch thnh tp lnh cho mi thit

    b di ng. Nh vy lp trnh vin phi xy dng nhiu ch cho mi loi thit b di ng.

    Hnh di y biu din tin trnh xy dng ng dng MIDlet hon chnh v vai tr ca

    KVM.

  • 7/30/2019 133_4357

    25/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    13

    Hnh 8: Tin trnh xy dng MIDlet.

    Qu trnh pht trin ng dng MIDlet vi IDE ( Intergrated Development

    Environment ):

    Lp trnh vin: Bc u tin l lp trnh vin phi to m ngun Java, c th c

    nhiu tp tin (*.java).

    Trn IDE:

    B bin dch Java (Java Compiler): Bin dch m ngun thnh m bytecode.

    M bytecode ny s c KVM dch thnh m my. M bytecode bin dch sc lu trong cc tp tin *.class v s c mt tp tin *.class sinh ra cho mi lp Java.

    B tin kim tra (Preverifier): Kim tra tnh hp l ca m bytecode. Mt trong

    nhng yu cu an ton ca J2ME l bo m m bytecode chuyn cho KVM l hp l v

    khng truy xut cc lp hay b nh ngoi gii hn ca chng. Do tt c cc lp u

    Tp tin ngunJava*.java

    Tp tin ngunJava*.java

    B bin dch vb tin kimtra Java

    Tp tin lp Java*.class

    Tp tin lp Java*.class

    Tp tin JAR

    Trm pht trin

    B bin dchm bytecodeKVM

    M bytecode

    M my

    Thit b ch

  • 7/30/2019 133_4357

    26/83

  • 7/30/2019 133_4357

    27/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    15

    B tin kim tra kim tra tt c cc lp u c mt thuc tnh hp l c thm

    vo bi b tin kim tra trn trm pht trin ng dng. Nu tin trnh tin kim tra tht bi

    th ng dng s khng c download v thit b di ng.

    B qun l ng dng: Lu tr chng trnh.

    B qun l ng dng trn thit b di ng s lu tr chng trnh trn thit b di

    ng. B qun l ng dng cng iu khin trng thi ca ng dng trong thi gian thc

    thi v c th tm dng ng dng khi c cuc gi hoc tin nhn n.

    Ngi dng: Thc thi ng dng.

    B qun l ng dng s chuyn ng dng cho KVM chy trn thit b di ng.

    KVM: Thc thi m bytecode khi chng trnh chy.

    KVM dch m bytecode sang ngn ng my ca thit b di ng chy.

    3.5. Tng cu hnh

    Tng J2ME k trn tng KVM l CLDC hay Cu hnh thit b kt ni gii hn. Mc

    ch ca tng ny l cung cp mt tp ti thiu cc th vin cho php mt ng dng Java

    chy trn thit b di ng. N cung cp c s cho tng Hin trng, tng ny s cha nhiu

    API chuyn bit hn.

    CLDC Connected Limited Device Configuration:

    Phm vi: nh ngha cc th vin ti thiu v cc API.

    nh ngha:

    o Tng thch ngn ng JVM

    o Cc th vin li

    o I/O

    o Mng

    o Bo mt

    o Quc t ha

    Khng nh ngha:

  • 7/30/2019 133_4357

    28/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    16

    o Chu k sng ng dng

    o Giao din ngi dng

    o Qun l s kin

    o Giao din ng dng v ngi dng

    Cc lp li Java c bn, input/output, mng, v bo mt c nh ngha trong

    CLDC. Cc API hu dng hn nh giao din ngi dng v qun l s kin c dnh

    cho hin trng MIDP.

    3.6. Tng hin trng

    Tng J2ME cao nht l tng hin trng v mc ch ca n l nh ngha cc API

    cho cc thit b di ng. Mt thit b di ng c th h tr nhiu hin trng. Mt hin

    trng c th p t thm cc gii hn trn cc loi thit b di ng (nh nhiu b nh hn

    hay phn gii mn hnh cao hn). Hin trng l tp cc API hu dng hn cho cc ng

    dng c th. Lp trnh vin c th vit mt ng dng cho mt hin trng c th v khng

    cn quan tm n n chy trn thit b no.

    3.7. MIDlet

    Cc ng dng J2ME c gi l MIDlet (Mobile Information Device applet).

    Hnh 9: MIDlet

    Thng bo import dng truy xut cc lp ca CLDC v MIDP.

    CLDC

    import javax.microedition.midlet.*

    import java.lang.Math.*

    public class HelloWorld extends MIDlet

    MIDP

    HelloWorld.java

  • 7/30/2019 133_4357

    29/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    17

    Lp chnh ca ng dng c nh ngha l lp k tha lp MIDlet ca MIDP. C

    th ch c mt lp trong ng dng k tha lp ny. Lp MIDlet c trnh qun l ng

    dng trn in thoi di ng dng khi ng, dng, v tm dng MIDlet (v d, trongtrng hp c cuc gi n).

    3.7.1. B khung MIDlet

    Mt MIDlet l mt lp Java k tha (extend) ca lp tru tng

    java.microedition.midlet.MIDlet v thc thi (implement) cc phng thc startApp(),

    pauseApp(), v destroyApp().

    Hnh 10: B khung yu cu ti thiu cho mt ng dng MIDlet.

    B khung MIDlet1) Pht biu import

    Cc pht biu import c dng include cc lp cn thit t cc th vin CLDC

    v MIDP.

    2) Phn chnh ca MIDlet

    MIDlet c nh ngha nh mt lp k tha lp MIDlet. Trong v d ny

    MIDletExample l bt u ca ng dng.

    3) Hm to (Constructor)

    Hm to ch c thc thi mt ln khi MIDlet c khi to ln u tin. Hm to

    s khng c gi li tr phi MIDlet thot v sau khi ng li.

    4) startApp()

    import javax.microedition.midlet.*;

    public class MIDletExample extends MIDlet{

    public MIDletExample() {}

    public void startApp() {}

    public void pauseApp() {}

    public void destroyApp(boolean unconditional) {}

    }

    1

    2

    34

    56

  • 7/30/2019 133_4357

    30/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    18

    Phng thc startApp() c gi bi b qun l ng dng khi MIDlet c khi

    to, v mi khi MIDlet tr v t trng thi tm dng.

    5) pauseApp()

    Phng thc pauseApp() c gi bi b qun l ng dng mi khi ng dng cn

    c tm dng (v d, trong trng hp c cuc gi hoc tin nhn n). Cch thch hp

    s dng pauseApp() l gii phng ti nguyn v cc bin dnh cho cc chc nng

    khc trong in thoi trong khi MIDlet c tm dng. Cn ch rng khi nhn cuc gi

    n h iu hnh trn in thoi di ng c th dng KVM thay v dng MIDlet. Vic

    ny khng c cp trong MIDP m l do nh sn xut quyt nh s chn cch

    no.6) destroyApp()

    Phng thc destroyApp() c gi khi thot MIDlet. (v d khi nhn nt exit trong

    ng dng). N ch n thun l thot MIDlet. N khng tht s xa ng dng khi in

    thoi di ng. Phng thc destroyApp() ch nhn mt tham s Boolean. Nu tham s

    ny l true, MIDlet c tt v iu kin. Nu tham s l false, MIDlet c thm ty chn

    t chi thot bng cch nm ra mt ngoi l MIDletStateChangeException.

    Tm tt cc trng thi khc nhau ca MIDlet:To (Created) Hm to MIDletExample() c gi mt mt ln.

    Hot ng (Active) Phng thc startApp() c gi khi chng trnh bt u

    hay sau khi tm dng.

    Tm dng (Paused) Phng thc pauseApp() c gi. C th nhn cc s kin

    timer.

    Hy (Destroyed) Ph c destroy() c gi.

    3.7.2. Chu k sng ca MIDlet

  • 7/30/2019 133_4357

    31/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    19

    Hnh 11: Chu k sng ca MIDlet.

    Chu k sng ca MIDlet

    Khi ngi dng yu cu khi ng ng dng MIDlet, b qun l ng dng s thc

    thi MIDlet (thng qua lp MIDlet). Khi ng dng thc thi, n s c xem l ang

    trng thi tm dng. B qun l ng dng gi hm to v hm startApp(). Hm startApp()

    c th c gi nhiu ln trong sut chu k sng ca ng dng. Hm destroyApp() ch c

    th gi t trng thi hot ng hay tm dng.

    Lp trnh vin cng c th iu khin trng thi ca MIDlet.

    Cc phng thc dng iu khin cc trng thi ca MIDlet:

    resumeRequest(): Yu cu vo ch hot ng

    V d: Khi MIDlet tm dng, v mt s kin timer xut hin.

    notifyPaused(): Cho bit MIDlet t nguyn chuyn sang trng thi tm dng

    V d: Khi i mt s kin timer.

    notifyDestroyed(): Sn sng hy

    V d: X l nt nhn Exit

    Lp trnh vin c th yu cu tm dng MIDlet trong khi i mt s kin timer

    ht hn. Trong trng hp ny, ph c notifyPaused() s c dng yu cu

    b qun l ng dng chuyn ng dng sang trng thi tm dng.

    Tm dng Hot ng Hy

    Chng trnh

    c to

    pauseApp()

    destroyApp()

    startApp() destroyApp()

  • 7/30/2019 133_4357

    32/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    20

    3.7.3. Tp tin JAR

    Cc lp bin dch ca ng dng MIDlet c ng gi trong mt tp tin JAR

    (Java Archive File). y chnh l tp tin JAR c download xung in thoi di ng.

    Tp tin JAR cha tt c cc tp tin class t mt hay nhiu MIDlet, cng nh cc ti

    nguyn cn thit. Hin ti, MIDP ch h tr nh dng hnh .png (Portable Network

    Graphics). Tp tin JAR cng cha tp tin k khai (manifest file) m t ni dung ca

    MIDlet cho b qun l ng dng. N cng phi cha cc tp tin d liu m MIDlet cn.

    Tp tin JAR l ton b ng dng MIDlet. MIDlet c th load v triu gi cc phng thc

    t bt k lp no trong tp tin JAR, trong MIDP, hay CLDC. N khng th truy xut cc

    lp khng phi l b phn ca tp tin JAR hay vng dng chung ca thit b di ng.3.7.4. Tp tin k khai v JAD

    Tp tin k khai (manifest.mf) v tp tin JAD (Java Application Descriptor) m t

    cc c im ca MIDlet. S khc bit ca hai tp tin ny l tp tin k khai l mt phn

    ca tp tin JAR cn tp tin JAD khng thuc tp tin JAR. u im ca tp tin JAD l cc

    c im ca MIDlet c th c xc nh trc khi download tp tin JAR. Ni chung,

    cn t thi gian download mt tp tin vn bn nh hn l download mt tp tin JAR.

    Nh vy, nu ngi dng mun download mt ng dng khng c thit b di ng h

    tr (v d, MIDP 2.0), th qu trnh download s b hy b thay v phi i download ht

    ton b tp tin JAR.

    M t ni dung ca tp tin JAR:

    Cc trng yu cu

    o Manifest-Version // Phin bn tp tin Manifest

    o MIDlet-Name // Tn b MIDlet (MIDlet suite)

    o MIDlet-Version // Phin bn b MIDlet

    o MIDlet-Vendor // Nh sn xut MIDlet

    o MIDlet- for each MIDlet // Tn ca MIDlet

    o MicroEdtion-Profile // Phin bn hin trng

    o MicroEdtion-Configuration // Phin bn cu hnh

  • 7/30/2019 133_4357

    33/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    21

    V d mt tp tin manifest.mf:

    MIDlet-Name: CardGames

    MIDlet-Version: 1.0.0

    MIDlet-Vendor: Sony Ericsson

    MIDlet-Description: Set of Card Games

    MIDlet-Info-URL: http://www.semc.com/games

    MIDlet-Jar-URL: http://www.semc.com/j2me/games

    MIDlet-Jar-Size: 1063

    MicroEdtion-Profile: MIDP-1.0

    MicroEdtion-Configuration: CLDC-1.0

    MIDlet-1: Solitaire, /Sol.png, com.semc.Solitaire

    MIDlet-2: BlackJack, /Blkjk.png, com.semc.BlackJack

    Tp tin JAD cha cng thng tin nh tp tin manifest. Nhng n nm ngoi tp tinJAR.

    Cc thuc tnh MIDlet-Name, MIDlet-Version, v MIDlet-Vendor phi c lp li

    trong tp tin JAD v JAR. Cc thuc tnh khc khng cn phi lp li. Gi tr trong tp tin

    m t s gi tr ca tp tin manifest.

    3.7.5. B MIDlet

    Mt tp cc MIDlet trong cng mt tp tin JAR c gi l mt b MIDlet (MIDlet

    suite). Cc MIDlet trong mt b MIDlet chia s cc lp, cc hnh nh, v d liu lu tr

    bn vng. cp nht mt MIDlet, ton b tp tin JAR phi c cp nht.

  • 7/30/2019 133_4357

    34/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    22

    Hnh 12: Hai b MIDlet.

    Cc b MIDlet

    Trong hnh trn, mt b MIDlet cha MIDlet1, MIDlet2, v MIDlet3. B kia ch

    cha MIDlet4. Ba MIDlet trong b u tin truy xut cc lp v d liu ca nhau nhng

    khng truy xut n cc lp hay d liu ca MIDlet4. Ngc li, MIDlet4 cng khng

    truy xut c cc lp, hnh nh, v d liu ca chng.

    [ Ngun [9] ].

    midlet1.class

    funstuff.class

    midlet2.class

    afile.class

    midlet3.class

    needed.class

    Lu tr bnvng 1

    Lu tr bnvng 2

    Lu tr bnvng 3

    midlet4.class

    Lu tr bnvng 4

    MIDlet1, MIDlet2, MIDlet3

    B MIDlet 1 B MIDlet 2

    MIDlet4

  • 7/30/2019 133_4357

    35/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    23

    Chng 4. Mt s cng ngh trong J2ME

    4.1. haCc lp MIDP cung cp hai mc ha: ha mc thp v ha mc cao.

    ha mc cao dng cho vn bn hay form. ha mc thp dng cho cc ng dng tr

    chi yu phi v ln mn hnh.

    4.1.1. ha mc cao

    ha mc cao l lp con ca lp Screen. N cung cp cc thnh phn nh text

    box, form, list, v alert. Ta t iu khin sp xp cc thnh phn trn mn hnh. Vic sp

    xp tht s ph thuc vo nh sn xut.4.1.1.1. Text Box

    Lp TextBox cho php ngi dng nhp v son tho vn bn. Lp trnh vin c th

    nh ngha s k t ti a, gii hn loi d liu nhp (s hc, mt khu, email,) v hiu

    chnh ni dung ca textbox. Kch thc tht s ca textbox c th nh hn yu cu khi

    thc hin thc t (do gii hn ca thit b). Kch thc tht s ca textbox c th ly bng

    phng thc getMaxSize().

    4.1.1.2. FormForm l lp hu dng nht ca cc lp Screen bi v n cho php cha nhiu item

    trn cng mt mn hnh. Cc item c th l DateField, TextField, ImageItem, TextItem,

    ChoiceGroup.

    4.1.1.3. List

    Lp List l mt Screen cha danh sch cc la chn chng hn nh cc radio

    button. Ngi dng c th tng tc vi list v chn mt hay nhiu item.

    4.1.1.4. Alert

    Alert hin th mt mn hnh pop-up trong mt khong thi gian. Ni chung n dng

    cnh bo hay bo li. Thi gian hin th c th c thit lp bi ng dng. Alert c

  • 7/30/2019 133_4357

    36/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    24

    th c gn cc kiu khc nhau (alarm, confirmation, error, info, warning), cc m thanh

    tng ng s c pht ra.

    4.1.1.5. Form v cc Form Item

    S dng form cho php nhiu item khc nhau trong cng mt mn hnh. Lp trnh

    vin khng iu khin s sp xp cc item trn mn hnh. Sau khi nh ngha i tng

    Form, sau s thm vo cc item.

    Mi item l mt lp con ca lp Item:

    4.1.1.5.1. String Item

    Public class StringItem extends ItemStringItem ch l mt chui hin th m ngi dng khng th hiu chnh. Tuy

    nhin, c nhn v ni dung ca StringItem c th c hiu chnh bi ng dng.

    4.1.1.5.2. Image Item

    public class ImageItem extends Item

    ImageItem cho php thm vo hnh form. ImageItem cha tham chiu n mt i

    tng Image phi c to trc .

    4.1.1.5.3. Text Field

    public class TextField extends Item

    TextField cho php ngi dng nhp vn bn. N c th c gi tr khi to, kch

    thc ti a, v rng buc nhp liu. Kch thc tht s c th nh hn yu cu do gii

    hn ca thit b di ng.

    4.1.1.5.4. Date Field

    public class DateField extends ItemDateField cho php ngi dng nhp thng tin ngy thng v thi gian. C th xc

    nh gi tr khi to v ch nhp ngy thng (DATE), thi gian (TIME), hoc c hai.

    4.1.1.5.5. Choice Group

  • 7/30/2019 133_4357

    37/83

  • 7/30/2019 133_4357

    38/83

  • 7/30/2019 133_4357

    39/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    27

    Hnh 14. Khung mng CLDC tng qut.

    Kt ni mng c xy dng bng phng thc open() ca lp Connector trong

    CLDC. Phng thc open() nhn mt tham s u vo l chui. Chui ny dng xc

    nh giao thc. nh dng ca chui l:

    protocol:address;parameters

    CLDC ch xc nh tham s l mt chui nhng n khng nh ngha bt k giao

    thc tht s no. Cc hin trng c th nh ngha cc giao thc kt ni nh HTTP,

    socket, cng truyn thng, datagram, Phng thc open() tr v mt i tngConnector. i tng ny sau c th ng vai tr l mt giao thc xc nh c nh

    ngha trong hin trng.

    Connector.open(:;);

    Mt s giao thc v d (nhng khng c h tr bi CLDC hay MIDP):

    Socket: Connector.open(socket://199.3.122.21:1511);

    Comm port: Connector.open(comm:0;baudrate=9600);

    Datagram: Connector.open(Datagram://19.3.12.21:1511);

    Files: Connector.open(file:/filename.txt);

    MIDP h tr giao thc HTTP:

    HTTP: Connector.open(http://www.sonyericsson.com);

    Socket:Comm ports:

    Datagrams:Files:HTTP:

    Connector.open(string);Vi nh dng string nh sau::;

    Connector.open(:;);Tr v mt i tng Connection

  • 7/30/2019 133_4357

    40/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    28

    Tr v mt i tng Connection

    V d trn minh ha kt ni socket, cng truyn thng, datagram, file v HTTP. Tt

    c cc kt ni mng u c cng nh dng, khng quan tm n giao thc tht s. N ch

    khc nhau chui chuyn cho phng thc open(). Phng thc open() s tr v mt i

    tng Connection ng vai tr l lp giao thc (v d. HttpConnection) c th s dng

    cc phng thc cho giao thc . J2ME ch nh ngha mt kt ni l kt ni HTTP

    trong MIDP.

    4.2.2. Cc lp giao din kt ni

    Dn xut t lp Connection l nhiu lp giao din con cung cp khung kt ni

    mng. Cc giao din khc nhau h tr cc loi thit b di ng khc nhau.

    Hnh 15. Cc lp kt ni.

    Sau y l m t cc giao din kt ni c nh ngha trong CLDC

    StreamConnectionNotifier

    Connection

    StreamConnectionNotifier OutputConnectionInputConnection DatagramConnection

    StreamConnection

    InputConnection

    HttpConnection

    CLDC

    MIDP

    Connection c = Connector.open(url);

  • 7/30/2019 133_4357

    41/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    29

    Giao din StreamConnectionNotifier c dng khi i mt kt ni pha server

    c thit lp. Phng thc acceptAndOpen() b chn cho n khi client thit lp kt ni.

    Giao din DatagramConnection

    Kt ni datagram cung cp kiu truyn thng gi khng chng thc. Datagram cha

    gi d liu v a ch. Chui a ch c nh dng sau:

    datagram:[//{host}]:{port}

    Nu tham s host c xc nh, th datagram m kt ni ch client. Nu tham

    s host khng c xc nh, th datagram c m ch server

    c = Connector.open("datagram://192.365.789.100:1234"); // Ch clientc = Connector.open("datagram://:1234"); // Ch server

    Giao din InputConnection

    Giao din InputConnection dng thc hin mt lung nhp tun t d liu ch c.

    Giao din OutputConnection

    Giao din OutputConnection dng thc hin mt lung xut d liu ch vit.

    Giao din StreamConnectionGiao din StreamConnection l kt hp ca c hai giao din InputConnection v

    OutputConnection. N dng cho cc thit b di ng c truyn thng hai chiu.

    Giao din ContentConnection

    Giao din ContentConnection k tha giao din StreamConnection v thm vo cc

    phng thc getType(), getEncoding(), v getLength(). N cung cp c s cho giao din

    HttpConnection ca MIDP.

    Giao din HttpConnection

    Giao din HttpConnection c nh ngha trong MIDP v k tha giao din

    ContentConnection ca CLDC. Giao din ny cung cp cc ph c thit lp mt

    kt ni HTTP.

  • 7/30/2019 133_4357

    42/83

  • 7/30/2019 133_4357

    43/83

  • 7/30/2019 133_4357

    44/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    32

    i tng Connection ng vai tr l mt lp HttpConnection. Phng thcopenInputStream() s lm cho kt ni chuyn sang trng thi Kt ni. V khng c yu

    cu phng thc no, kt ni s mc nh l mt kt ni HTTP GET.Phng thc getLength() s tr v chiu di ca d liu gi t server. Nu bit c

    chiu di, th bin len s cha chiu di d liu v ta c th c ton b khi d liu. Nukhng th len s cha gi tr -1 v d liu phi c c tng k t mt cho n khi gpnh du cui file (-1). Phng thc processData() v processBuffer() x l d liu nt server. Khi lnh cui cng s ng tt c cc kt ni khng quan tm n c li tkhi lnh try trc hay khng.

    4.2.3.2. V d kt ni HTTP POST

    HTTP POST cho php gi d liu n server. D liu gi n server qua phngthc GET ch gii hn l d liu cha a ch URL. Phng thc POST cho php gi mt

    lung byte n server. Phng thc HTTP POST thc hin theo cch tng t vi

    phng thc HTTP GET.

    V d thc hin mt kt ni HTTP POST:void postViaHttpConnection(String url) throws IOException {HttpConnection c = null; InputStream is = null;OutputStream os;

    try {c = (HttpConnection)Connector.open(url); // M kt ni// Thit lp phng thc POST// trong khi vn trng thi Thit lpc.setRequestMethod(HttpConnection.POST);// M lung output stream v chuyn sang trng thi Kt nios = c.openOutputStream();// Chuyn i d liu thnh lung byte// v gi n server

    os.write(Data Sent to Server\n.getBytes());int status = c.getResponseCode();// Kim tra statusif (status != HttpConnection.HTTP_OK)

    throw new IOException(not OK);int len = (int)c.getLength();

  • 7/30/2019 133_4357

    45/83

  • 7/30/2019 133_4357

    46/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    34

    4.2.5. HTTP Request Header

    HTTP request header phi c thit lp trng thi Thit lp bng phng thc

    setRequestMethod() v setRequestProperty(). Phng thc setRequestMethod() dng

    thit lp cc phng thc GET, POST, hoc HEAD.

    Phng thc setRequestProperty() dng thit lp cc trng trong request header.

    V d c th l Accept-Language, If-Modified-Since, User-Agent.

    Phng thc getRequestMethod() v getRequestProperty() c th c dng ly

    cc thuc tnh trn.

    4.3. Wireless Messaging API

    J2ME cha hu ht cc cu hnh v hin trng, kt hp vi nhau nh ngha mi

    trng thc thi Java hon chnh cho cc thit b c ti nguyn gii hn. Tuy nhin, i

    khi, cn phi c gi giao din lp trnh ng dng (Application Programming Interface

    API), c th chi x bi cc ng dng chy trn cc hin trng khc nhau. J2ME nh

    ngha API nh vy l cc gi ty chn (optional package), l mt tp cc lp v cc ti

    nguyn khc c th c dng kt hp vi hin trng.

    Cng ging nh cc thnh phn ca J2ME, cc gi ty chn c nh ngha l yu

    cu c t Java (Java Specification Request JSR) thng qua Java Community Process.Mt trong nhng gi ty chn u tin cho J2ME l JSR 120, b API nhn tin khng dy

    (Wireless Messaging API WMA), dng gi v nhn cc tin nhn vn bn hoc nh

    phn ngn trn kt ni khng dy. WMA da trn khung kt ni mng tng qut (GCF).

    Cc tin nhn c gi v nhn vi WMA c gi trn cc mng khng dy ca

    in thoi di ng v cc thit b tng t khc, c th l GSM hay CDMA. WMA h tr

    Short Message Service (SMS) v Cell Broadcast Short Message Service (CBS). Mc d

    tin nhn WMA tng t nh datagram, WMA khng s dng giao din datagram c

    nh ngha bi GCF, giao din ny dng cho kt ni UDP. Thay vo , WMA nh ngha

    mt tp giao din mi trong gi java.wireless.messaging.

    gi hoc nhn tin nhn, ng dng trc ht phi to mt instance ca giao din

    MessageConnection, s dng GCF connection factory. a ch URL chuyn cho phng

  • 7/30/2019 133_4357

    47/83

  • 7/30/2019 133_4357

    48/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    36

    public void sendText( MessageConnection conn, String text )throws IOException, InterruptedIOException {

    TextMessage msg = conn.newMessage( conn.TEXT_MESSAGE );msg.setPayloadText( text );conn.send( msg );

    }Gi d liu nh phn cng hon ton tng t:

    public void sendBinary( MessageConnection conn, byte[] data )throws IOException, InterruptedIOException {

    BinaryMessage msg =conn.newMessage( conn.BINARY_MESSAGE );

    msg.setPayloadData( data );conn.send( msg );

    }

    D nhin, c gii hn lng d liu c th gi trong mt tin nhn. Thng thng, tin

    nhn vn bn SMS b gii hn n 160 hoc 70 k t, tin nhn nh phn b gii hn n

    140 bytes.

    Nhn tin nhn thm ch cn n gin hn: Sau khi m mt kt ni server, ng dng

    gi phng thc receive() ca kt ni, phng thc ny s tr v tin nhn c trong cng

    xc nh. Nu khng c tin nhn, phng thc s ng (block) cho n khi c tinnhn, hoc cho n khi c mt thread khc ng kt ni:

    import java.io.*;import java.microedition.io.*;import java.wireless.messaging.*;

    MessageConnection conn = null;String url = "sms://:5678"; // khng c s in thoi!

    try {conn = (MessageConnection) Connector.open( url );while( true ){

    Message msg = conn.receive(); // blocksif( msg instanceof BinaryMessage ){

  • 7/30/2019 133_4357

    49/83

  • 7/30/2019 133_4357

    50/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    38

    Chng 5. Xy dng ng dng th nghim

    5.1. Gii thiu ng dng5.1.1. Mc tiu

    Xy dng mt ng dng trn thit b di ng nhm tr gip ngi dng cp nht

    cc thng tin m ngi dng quan tm thng qua cc thng tin xut bn trn Web

    Services.

    Bng phng php ny, ngi dng s c c cc thng tin chn lc nht m h

    khng phi tn thi gian ngi lt web, thay vo , h c th i n bt c u ch vi

    thit b di ng nh gn trong tay l c th cp nht thng tin h quan tm.5.1.2. ng dng th nghim

    Chng trnh ng dng c vit bng ngn ng J2ME phc v thit b di ng ca

    ngi dng c h tr dng ngn ng ny.

    Pha dch v cung cp ni dung c xy dng trn ngn ng PHP v c s d

    liu mySQL.

    Ni dung c web-services tr v theo chun XML v c ng dng chy trn

    thit b di ng phn tch, x l v hin th trn mn hnh.

    5.2. Cc cng ngh s dng trong chng trnh

    5.2.1. Lightweight UI Toolkit (LWUIT)

    LWUIT l mt th vin nh da trn Swing nhng c thit k cho cc thit b

    mang tnh cht nh gn. LWUIT h tr giao din mt cch linh hot v mnh m, vi cc

    thnh phn v cc lp phn tng ring bit.

  • 7/30/2019 133_4357

    51/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    39

    Hnh 17: Cc phn tng lp trong LWUIT.

    Vi b th vin nh gn ny, ngi lp trnh s c mt phng thc ring tng

    tc v lm vic vi mi trng MIDP trn thit b di ng.

    V d hin th Hello world

    import com.sun.lwuit.Display;import com.sun.lwuit.Form;import com.sun.lwuit.Label;import com.sun.lwuit.layouts.BorderLayout;import com.sun.lwuit.plaf.UIManager;

    import com.sun.lwuit.util.Resources;

    public class HelloMidlet extends javax.microedition.midlet.MIDlet {public void startApp() {

    Display.init(this);try {

    Resources r = Resources.open("/LWUIT.res");UIManager.getInstance().setThemeProps(r.getTheme(

    r.getThemeResourceNames()[0]));

    } catch (java.io.IOException e) {}Form f = new Form();f.setTitle("Hello World");

  • 7/30/2019 133_4357

    52/83

  • 7/30/2019 133_4357

    53/83

  • 7/30/2019 133_4357

    54/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    42

    o Tt cc cc thuc tnh bt buc nh ngha trong DTD phi c mt.

    o Gi tr thuc tnh phi nm trong du nhy.

    o Cc th cha v c cha phi theo st DTD, hay Schema.o Cc k t markup nh < hay & khng c ng mt mnh. Nu cn, chng phi

    c dng l &lt, &amp,

    o Tt c cc th rng phi kt thc bng />

    Chc nng ca b phn tch l kim tra cc lut trn.

    Da vo cc loi ti liu XML m ta cp trn, c hai loi b phn tch XML,mt loi phn tch ti liu XML kim tra hp l v b kia phn tch ti liu XML khngkim tra hp l.

    B phn tch khng kim tra hp l (Nonvalidating parser): B phn

    tch ny ch kim tra ti liu c ng ng php hay khng; ni cch khc, b phn tch ch

    thc hin kim tra c php ca DTD trong ti liu, l l do ti sao n c gi l b

    phn tch khng kim tra hp l.

    B phn tch kim tra hp l (Validating parser): Cc b phn tch ny

    bin dch DTD v theo cc khai bo th pht sinh output dng ngi dng c th c

    c. J2ME khng th h tr kim tra hp l ti liu XML.

    Ngoi ra c th phn loi theo cch tip cn. C hai cch tip cn cho vic x lXML: SAX v DOM. SAX hay Simple API for XML l mt khung (framework) hng s

    kin, b phn tch s gi cc back function trong m chng trnh client khi x l tp tin

    XML. SAX nh, v m hnh hng s kin ca n lm gim b nh cn thit lm cho n

    thch hp vi cc ng dng nh. Tuy nhin, n chim mt phn ln trong m chng

    trnh client theo di cy phn tch XML. Khc vi SAX, DOM hay Document Object

    Modela ra cch nhn theo cy gn vi m hnh i tng nhng yu cu tiu tn nhiu

    b nh hn. Mt cy DOM c th d dng c duyt qua s dng mi lin h cha-con.

    5.2.2.2. Cc b phn tch XML cho KVM

    C nhiu loi b phn tch cho KVM. Cc b phn tch a ra y lm vic vi

    KVM. Ta s ch ni v tnh nng chnh ca cc b phn tch.

  • 7/30/2019 133_4357

    55/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    43

    o Pull parser: cc b phn tch ny, u tin d liu c c v n c phn

    tch t nh ngha. Vic phn tch c th hon thnh bng cc hm qui dch cu trc

    cy ca ti liu.o Push parser: Cc b phn tch ny x l nh ngha d liu trc khi x l ti

    liu. Cu trc cy hon chnh c to trong b nh trc khi tht s bt u x l ti liu

    XML. Trong trng hp ny, ton b cy DOM c sinh ra trong b nh ngay c khi

    khng cn thit phi nh vy.

    5.2.2.2.1. kXML

    y l b phn tch XML quan trng v ph bin nht cho KVM. N l kt hp ca

    pull parser v XML Writer, c dng vit XML. N cha mt WAP Binary XML(WBXML) c dng chuyn ti liu XML trn cc knh truyn thng v tuyn. Do

    , n h tr Wireless Markup Language. N cha mt kDOM c bit, l Document

    Object Model thay cho kXML. N n gin hn v qun l khng gian hiu qu hn

    Document Object Model. N bin dch v lm vic vi mi trng Thit b thng tin di

    ng (Mobile Information Device-MID) m khng cn phi hiu chnh. N nm trong gi

    de.kxml. Chc nng ca n c nh ngha trong lp Parser.

    5.2.2.2.2. Tiny XML

    y l mt push parser khng kim tra hp l, bin dch ton b cy DOM vo b

    nh v sau phn tch ton b ti liu XML. N cn phi hiu chnh m ngun chy

    trn MID. c im chnh ca TinyXML l n ch theo mt s b m xc nh: ASCII,

    UTF-16, UTF-16BE, v UTF-8. Kiu b m c xc nh trong XML Prolog. Nu kiu

    b m XML Prolog khng phi l b m ASCII, UTF-16, UTF-16EB v UTF-8, th

    TinyXML s khng phn tch ti liu XML v s nm ra mt ngoi l.

    5.2.2.2.3. Nano XML

    y l mt b phn tch khc cho KVM, n hot ng theo kiu push-parsing. Nc mt tnh nng ring cho vic hiu chnh ti liu v vit ti liu tr vo stream. Bi v

    tnh nng ny khng c ch lm cho MID, b phn tch ny khng c dng nhiu. Tuy

    nhin, mt khi tnh nng ny c chp nhn trong c t MID, n s l mt b phn tch

    quan trng cho truyn thng v tuyn.

  • 7/30/2019 133_4357

    56/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    44

    5.2.2.3. Lm vic vi kXML

    Ta chn s dng b phn tch kXML. Ta s kho st cch lm vic vi kXML.

    Cc lp v gi trong b phn tch kXML:

    Lp Attribute: Lp ny th hin thuc tnh ca th. Khi ta gi phng thc

    StartTag.getAttribute, n s tr v mt i tng c kiu l Attribute l thuc tnh ca th

    . Lp ny c bn phng thc. Phng thc getName() tr v tn ca thuc tnh, ta

    cng c th ly gi tr ca thuc tnh bng cch gi phng thc getValue() ca n.

    Phng thc toString() s tr v dng biu din chui ca i tng Attribute.

    Lp XML: Lp ny biu din d liu XML. Lp ny c dng bi b

    phn tch. Tt c cc phng thc trong lp ny u l tnh (static). N c mt s trng b phn tch s dng, v d nh START-TAG, TEXT, END-TAG,...

    Lp PrefixMap: Lp ny biu din PrefixMap ca th. Khi bn gi

    phng thc StartTag.getPrefixMap(), n s tr v mt i tng PrefixMap. Lp ny c

    ba phng thc: phng thc getNamespace(), tr v namespace ca prefix ny, phng

    thc getPrefix(), tr v chui biu din ca prefix, v phng thc PrefixEnumeration().

    5.2.2.4. Gi org.kxml

    Gi ny cha cc lp lin quan n vic phn tch d liu XML.AbstractXMLParser: y l mt lp tru tng (abstract class). Tt c cc lp phn

    tch XML u k tha lp ny. bt u phn tch d liu, ta phi gi phng thcread() ca lp ny. Phng thc ny pht sinh mt i tng ca lp ParseEvent. Tt ccc phng thc khc s c b phn tch s dng.

    XmlParser: Lp ny k tha lp AbstractXmlParser. Hm to ca lp ny

    cn mt i tng lp reader, t n bt u c d liu XML v trong khi phn tch d

    liu, ng thi n s pht sinh cc s kin phn tch (parse event). Lp ny k tha tt c

    cc phng thc ca lp AbstractXmlParser.

    Lp ParseEvent: y l mt lp tru tng, th hin cc s kin c

    pht sinh bi b phn tch trong lc phn tch d liu XML.

    Lp StartTag: Lp ny k tha lp ParseEvent. i tng ca lp ny

    c pht sinh khi b phn tch tm thy bt u ca mt th v d:

  • 7/30/2019 133_4357

    57/83

  • 7/30/2019 133_4357

    58/83

  • 7/30/2019 133_4357

    59/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    47

    Nhng module quan trng ca h thng c t trong mt th mc chnh, di y

    l cc module v th mc cha nhng module quan trng trong vic x l logic ca h

    thng:

    index.php: y l u vo khi u, v duy nht ca ng dng. y, cc

    bin h thng, bo mt c nh ngha, cng t y s triu gi n cc gi h tr cu

    hnh bin cn thit trong qu trnh h thng x l.

    ajax: y l th mc cha ton b cc module trong qu trnh x l ca h

    thng vi kiu lm vic ajax, trong th mc ny, c chia lm hai phn tch bit cho ng

    dng vi admin hoc bn ngoi cho ngi dng hoc khch.

    route.php: y l ni iu hng ca ng dng, t y s xc nh xem khu

    vc ng dng no c triu gi, ca admin hay bn ngoi trang.

    admin.layout.php: giao din chun ca ng dng cho admin.

    site.layout.php: giao din bn ngoi trang.

    config.php: nh ngha cc thng s chung c dng trong ton b ng

    dng.

    admin: th mc x l ring bit nu ngi dng mun truy xut vo phn

    ng dng dnh cho admin th phi qua bc kim tra hp l vi ti khon admin.

    help: th mc cha cc module tr gip trong qu trnh lm vic ca h

    thng.

    languages: th mc nh ngha ngn ng s dng trong h thng, v nu l

    h tr a ngn ng. Hoc khng s s dng ngn ng mc nh l Ting Anh.

    controller: th mc iu hng chnh trong qu trnh x l MVC, trong th

    mc ny c tch bit gia hai trng thi ngi s dng l admin v bn ngoi trang.

    model: th mc cha cc truy vn v c s d liu ni chung trong qu

    trnh h thng x l theo kiu MVC.

    class: nh ngha cc lp hay dng trong qu trnh x l ca h thng. js: th mc cha cc file javascript c dng trong h thng.

    template: th mc cha cc file css xy dng giao din dng trong h

    thng.

  • 7/30/2019 133_4357

    60/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    48

    6.1.2. Xy dng c s d liu cho h thng

    C s d liu dng trong h thng gm 8 bng:

    tbl_usertbl_user_

    grouptbl_

    layouttbl_

    languagetbl_

    component

    tbl_componen

    t_group

    tbl_category_content

    tbl_conten

    idusernamepasswordemail

    firstNamelastNamemiddleNamegenderdobjoinTimelastLoginTimelastLoginIp

    statusgroupId

    idgroupNa-medescriptio-

    n

    idnameversioncreatedTime

    descriptionauthorNameauthorEmailauthorOrgauthorUrlencodingmetaTitlemetaKeywordmetaDescription

    applied

    idnameversioncreatedTime

    descriptionauthorNameauthorEmailauthorUrlauthorOrgapplied

    idnameversioncreatedTime

    descriptionauthorNameauthorEmailauthorUrlauthorOrgeditableactiontaskcontrollerordering

    statusgroupId

    idnameorderingstatus

    idparent_idnamelink

    orderingseo_namewooden_legpublish

    idcreatedDteordering

    statustitledescriptncontentsourcecat_id

    V biu thc th lin kt:

  • 7/30/2019 133_4357

    61/83

  • 7/30/2019 133_4357

    62/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    50

    Hnh 21: Ngi qun tr ng nhp vo h thng.6.1.3.1.2. Khu vc chung

    Ngi qun tr c th lm mi ni dung a xung thit b di ng, mi danh mc

    s c h thng la chn 10 bn ghi mi nht.

    Hnh 22: Khu vc mc nh ca h thng

    6.1.3.1.3. Khu vc thao tc vi cc danh mc tin

    Ngi qun tr c th to mi, sa, xa cc danh mc tin. Cc danh mc c th to

    a cp, cp cao nht thuc cp con ca root

  • 7/30/2019 133_4357

    63/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    51

    Hnh 23: Khu vc hin th danh mc ca h thng.

    6.1.3.1.4. Khu vc qun l ni dungNgi qun tr c th thao tc vi cc bn ghi ca tng danh mc lin quan, cc

    quyn c bn nh to, sa, xa, chuyn trng thi (publish, unpublish)

    Hnh 24: Khu vc hin th ni dung bn tin.

    6.1.3.2. Phn dnh cho ngi qun tr

    Phn ny dnh cho ngi qun tr cp cao nht l super admin.

    6.1.3.2.1. Phn menu bn tri

    y l phn dng truy xut n tt c cc chc nng trong h thng, nh qun

    tr c th tng tc vi cc chc nng lin quan nh nhm ngi dng (users group),

    nhm thc n (menus group), thnh phn (components), ngn ng (languages).

  • 7/30/2019 133_4357

    64/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    52

    Hnh di minh ha phn ty chn bn tri:

    Hnh 25: Phn ty chn bn tri ca h thng.

    6.1.3.2.2. Phn qun l nhm ngi dng

    Ngi dng root (super administrator) c th to ra nhng ngi dng khc vi cc

    nhm nh: administrator, moderator, member ty vo tng ng cnh ca h thng v ng

    dng.

    Hnh 26: Phn qun l nhm ngi dng.

    6.1.3.2.3. Phn qun l nhm thc n

    Super administrator c th to ra cc thc n vi tn khc nhau dng gom nhm

    cc thnh phn vi nhau. V d: Category v Content di thc n l Content

    Manager.

    Hnh 27: Phn qun l nhm thc n.

  • 7/30/2019 133_4357

    65/83

  • 7/30/2019 133_4357

    66/83

  • 7/30/2019 133_4357

    67/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    55

    Hnh 31: Kt qu thu c vi trnh duyt Mozilla Firefox 3.5.

    6.2. Trn thit b di ng

    6.2.1. Quy trnh hot ngMn hnh khi ng ng dng

    Hnh 32: Mn hnh khi ng ca ng dng

  • 7/30/2019 133_4357

    68/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    56

    Tip ngi dng s vo phn ty chn ng dng

    Hnh 33: Mn hnh ty chn ng dng.

    Cu hi yu cu cho php kt ni vi dch v mng?

    Hnh 34: Yu cu cho php kt ni ti dch v.

  • 7/30/2019 133_4357

    69/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    57

    Sau l cc thng tin chi tit hn

    Hnh 35: Cc qu trnh khi xem tin tc vi ng dng.

    6.3. Cc module chnh trong ng dng

    6.3.1. Web Services

    C rt nhiu gi tin lin quan trong ng dng web services ny, trong khun kh ti

    liu ch gii thiu cc module in hnh:

    Default component: y l component mc nh ca h thng khi cc bin iu

    khin cha c xc lp. y cng l component bt buc phi c ci t h thng

    c th hot ng. Khu vc iu khin c t trong th mc /controller/site/default:

    default.index.php: file iu hng chnh ca component.

    template: th mc cha giao din html.

  • 7/30/2019 133_4357

    70/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    58

    display.tpl.php: file cha giao din html.

    view: th mc cha file x l d liu v xut bn ni dung.

    view.php: file x l.

    js: th mc cha file javascript ca component.default.site.js: file mc nh bt buc cha m javascipt ca component.

    tng tc vi c s d liu, chc nng model ca m hnh MVC trong componentc t th mc /model/site/default:

    defaultdefault.model.php: file tng tc vi c s d liu.

    default.index.php:

  • 7/30/2019 133_4357

    71/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    59

    (3). Dng lnh dng trnh truy cp trc tip file php.(4). Thit lp cc bin cc b ca h thng.

    (5). Gi module x l logic ca component.(6). Khi to i tng.(7). Thit lp Title ca trang HTML trn trnh duyt.(8)(22). X l iu hng ca component.

    view.php:(2). Khi to lp CDefault

    (15). Truyn gi tr ca bin xung template.(16). Gi module x l xut bn html.

    display.tpl.php:1.

  • 7/30/2019 133_4357

    72/83

  • 7/30/2019 133_4357

    73/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    61

    default.model.php:

    do logic ca component ny khng yu cu nn hai file ny khng cha ni dung x l.

    6.3.2. Trn thit b di ng

    Th mc /src cha cc module .java ca chng trnh:

    src

    com

    sun

    lwuit: th mc cha m ngun ca th vin lwuit dng tp tin.

    newsonline

    news: th mc cha cc gi .java hot ng chng trnh.

    util: th mc cha cc gi th vin h tr.NewsOnlineMIDlet.java: file gc ca chng trnh.

    Th mc /res cha cc ngun media:

    res

    images: cha cc nh .png.Th mc /lib cha cc gi th vin h tr:

    lib: cha cc gi h tr kxlm2.zip, LWUIT.jar.

    Cn nhng th mc khc l do trnh bin dch khi to project bn trong netbean.NewsOnlineMIDlet.java:

    1. package newsonline;2. import com.sun.lwuit.Command;3. import com.sun.lwuit.Display;

    4. import com.sun.lwuit.Form;5. import com.sun.lwuit.List;6. import com.sun.lwuit.animations.CommonTransitions;7. import com.sun.lwuit.animations.Transition;8. import com.sun.lwuit.events.ActionEvent;

  • 7/30/2019 133_4357

    74/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    62

    9. import com.sun.lwuit.events.ActionListener;10.import com.sun.lwuit.layouts.BorderLayout;

    11.import com.sun.lwuit.list.DefaultListCellRenderer;12.import com.sun.lwuit.list.DefaultListModel;13.import com.sun.lwuit.plaf.UIManager;14.import com.sun.lwuit.util.Resources;15.import java.io.IOException;16.import javax.microedition.midlet.*;17.import newsonline.news.ConfirmExit;18.import newsonline.news.HelpContact;19.import newsonline.news.News;

    20.public class NewsOnlineMIDlet extends MIDlet implements ActionListener {21.private static final Command selectCommand = new Command("Chn", 0);22.private static final Command exitCommand = new Command("Thot", 1);23.public static Form mainForm;24.private static List listMemu;25.public void startApp() {26.// VKBImplementationFactory.init();// Tao ban phim ao cho cac dong may

    cam ung27.Display.init(this);

    28.try {29.Resources res = Resources.open("/newsonlineresources.res");30.UIManager.getInstance().setThemeProps(res.getTheme(res.getThemeResourceNa

    mes()[0]));31.mainForm = new Form("Tin Tc");32.mainForm.setLayout(new BorderLayout());33.//disable the scroll on the Form.34.mainForm.setScrollable(false);35.String[] menu = {"Tin Tc","Tr Gip", "Lin H"};

    36.DefaultListModel dlModel = new DefaultListModel(menu);37.listMemu = new List(dlModel);38.//create a ListCellRenderer and install39.DefaultListCellRenderer dlcr = new DefaultListCellRenderer();40.listMemu.setListCellRenderer(dlcr);41.// dlcr.setShowNumbers(false);

  • 7/30/2019 133_4357

    75/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    63

    42.listMemu.setFixedSelection(List.FIXED_NONE_CYCLIC);// Cho phep selectvong tron

    43.listMemu.setSmoothScrolling(false);44.listMemu.getStyle().setBgTransparency(0);45.listMemu.addActionListener(new ActionListener() {46.public void actionPerformed(ActionEvent ae) {47.Transition out;48.out =

    CommonTransitions.createSlide(CommonTransitions.SLIDE_HORIZONTAL,false, 500);

    49.setTransition(null, out);

    50.switch (listMemu.getSelectedIndex()) {51.case 0:52.if (News.listNewsCategory != null) {53.News.newsForm.show();54.} else {55.new News(mainForm);56.}57.break;58.case 1:

    59.new HelpContact(mainForm, "Tr Gip", "Dng phm ln, xung v OK chn\nhoc c th dng phm select v cancel\n");//

    60.break;61.case 2:62.new HelpContact(mainForm, "Lin H", "Lin h 19001234 c gii p");63.break;64.}65.}66.});

    67.mainForm.addComponent(BorderLayout.CENTER, listMemu);68.mainForm.addCommand(selectCommand);69.mainForm.addCommand(exitCommand);70.mainForm.setCommandListener(this);71.mainForm.show();72.} catch (IOException ioex) {

  • 7/30/2019 133_4357

    76/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    64

    73.ioex.printStackTrace();74.}

    75.}76.public static void setTransition(Transition in, Transition out) {77.mainForm.setTransitionInAnimator(in);78.mainForm.setTransitionOutAnimator(out);79.}80.public static Resources getResource(String name) throws IOException {81.return Resources.open("/" + name + ".res");82.}83.public void pauseApp() {

    84.}85.public void destroyApp(boolean unconditional) {86.notifyDestroyed();87.}88.public void actionPerformed(ActionEvent ae) {89.Command cmd = ae.getCommand();90.switch (cmd.getId()) {91.case 0:92.Transition out;

    93.out =CommonTransitions.createSlide(CommonTransitions.SLIDE_HORIZONTAL,false, 500);

    94.setTransition(null, out);95.switch (listMemu.getSelectedIndex()) {96.case 0:97.if (News.listNewsCategory != null) {98.News.newsForm.show();99.} else {

    100. new News(mainForm);101. }102. break;103. case 1:104. new HelpContact(mainForm, "Tr Gip","Dng phm ln, xung v OK

    chn\nhoc c th dng phm select v cancel\n");//

  • 7/30/2019 133_4357

    77/83

  • 7/30/2019 133_4357

    78/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    66

    Chng 7. Ci t ng dng th nghim

    7.1. Web Services7.1.1. Ci t phn gi lp my ch Web trn my tnh c nhn

    gi lp my ch web trn PC c rt nhiu phn mm, tnh nng tng hp

    c ch cao nht cho cc phn mm ci t c 3 b tin ch l php, mySql v

    phpmyAdmin. Wamp l mt phn mm vi giao din n gin, d s dng v hi t

    cc iu kin trn. Tin hnh ci t gi Wamp 1.5 nh km trong a chng trnh, ci

    t theo thng s mc nh ca phn mm.

    Cui cng thu c cc cu hnh c bn:Hosting url: localhost

    User name: root

    Password:

    7.1.2. Cu hnh gi ng dng Web Services

    Sau khi ci t chng trnh gi lp, tin hnh ci t c s d liu, truy cp vo a

    ch: http://localhost/phpmyadmin/

    Hnh 36: To c s d liu trong phpmyadmin.

    Nhp tn c s d liu v to.

    Tip tin hnh import c s d liu c sn c nh km trong a chng trnh

    Hnh 37: Qu trnh nhp c s d liu.

  • 7/30/2019 133_4357

    79/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    67

    Sau copy ton b th mc /services c nh km trong a chng trnh vo

    th mc /www ca chng trnh wamp.

    Trong th mc /services, m file config.php ch edit (n gin c th dng

    notepad sa), thay vo cc tham s ph hp theo th t: dbHost, dbUser, dbPass,

    dbName:

    $ar = array( "localhost", "root", "", "services" );

    Nh vy l hon tt qu trnh ci t, truy cp ng dng web services ti a ch:

    http://localhost/services

    Ti khon administrator mc nh ban u l admin/abc123.

    7.2. Trn thit b di ng

    7.2.1. Ci t phn mm m phng

    o netbeans-6.7.1: y l IDE xy dng ng dng J2ME mc c bn.o sun_java_wireless_toolkit-2.5.2_01: y l trnh bin dch m java v to m hnh

    m phng thit b di ng trn my tnh.

    Hai gi ny u c nh km theo a chng trnh.

    7.2.2 . Cu hnh ng dng th nghimTrong netbean IDE to New Project hoc nhn Ctrl+Shift+N.

    Hnh 38: Bc u to Project mi.

    Chn Mobile Application, ri Next.

  • 7/30/2019 133_4357

    80/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    68

    Hnh 39: Cu hnh ban u.

    Project Name: la chn mt tn bt k, b chn Create Hello MIDlet, ri Next.

    Hnh 40: Cu hnh chi tit.

    ty chn Emulator Platform chn Sun Java( TM ) Wireless Toolkit 2.5.2_01 for

    CLDC ri Finish.

    Copy ton b th mc /News nh km theo a chng trnh vo th mc to

    project ca netbean, /My Documents/NetBeansProjects/News.

    Nh vy vic cu hnh ng dng hon tt, tip theo tin hnh Clean & Build v

    chy chng trnh m phng.

  • 7/30/2019 133_4357

    81/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    69

    Kt lun

    Kha lun c chia lm by chng mc v tp trung vo hai iu chnh, th nht,lm r l thuyt, tip cn cng ngh J2ME v cc cng ngh h tr mt cch tng qut,

    ng b nht. Th hai, nghin cu v th nghim ng dng vit trn J2ME v tng tc

    vi Web Services dng giao thc XML.

    Chng mt, cung cp mt ci nhn s b nht v cng ngh lp trnh trn di ng

    ni chung, v cc cng ngh ph bin nht hin nay ni ring. Cng trong chng ny, ta

    c ci nhn mang tnh xu hng v tng lai ca ngnh cng nghip lp trnh trn di

    ng.

    Chng hai, gii thiu cng ngh lp trnh trn thit b di ng vi ngn ng J2ME.

    Mt cch tng qut nht v ngn ng J2ME, cc c im ca ngn ng ny v s so

    snh mt s c im ca ngn ng J2ME v anh em ca n l J2SE.

    Chng ba, cung cp cho ngi c ci nhn r hn v bn cht ca cng ngh lp

    trnh vi ngn ng J2ME. Tuy vy, y l kin thc mang bn cht cng ngh, n khng

    phc v trong vic lp trnh nhiu lm m n gip nhng ngi pht trin hiu c bn

    cht mt cch cn k nht v nhng vic h lm khi thc hin cc project trong trin khai

    ng dng.

    Chng bn, i su vo mt s cng ngh trong lp trnh vi ngn ng J2ME. y

    l nhng cng ngh c th v chi tit trong ngn ng J2ME. Chng ny gip ngi

    lp trnh mt cch trc tip v mnh m nht.

    Chng nm, sau khi c ci nhn v hiu bit tng i v cng ngh lp trnh trn

    thit b di ng vi ngn ng lp trnh J2ME, chng ny s dn dt ngi c v ng

    dng th nghim c th. Ngoi ra, n cn gii thiu cc cng ngh lin quan dng trong

    chng trnh ng dng th nghim. y l nhng cng ngh ph bin bn ngoi, hinang c cng ng s dng v h tr mnh m.

    Chng 6, gii thiu ng dng th nghim. ng dng c chia thnh hai phn

    chnh nu xt v phng din chc nng v phn chia i tng s dng. Th nht, l

    phn Web Services, phn ny dng ring cho nhng ngi qun tr ni dung. N cung cp

  • 7/30/2019 133_4357

    82/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    70

    cc chc nng ngi qun tr thao tc qun l ni dung a xung thit b di ng

    ca ngi dng

    Chng by, y l chng cui cng, chng ny gip ngi c ci t v cu

    hnh thnh cng ng dng th nghim.

    Nh vy, kha lun tp trung lm r c cng ngh lp trnh J2ME v xy dng

    c ng dng th nghim. l thnh qu ca mt qu trnh n lc c gng trong vic

    nghin cu l thuyt cng nh lp trnh ng dng th nghim, n l kt qu ca mt qu

    trnh va hc va lm v va lm va hc. Tuy thnh tu t c l khng nh nhng

    do khun kh thi gian cng nh kh nng cn hn ch nn vn c nhng thiu st cha

    c khc phc Nu c thun li v thi gian v nhn lc th ng dng demo ny honton c th em ra phc v thc t. t nht phn Web Services cn c b xung chc

    nng Web Crawler gii phng sc ngi trong vic qun l v xut bn ni dung, bn

    cnh cng cn b sung cc chc nng cao cp hn trong phn qun tr ca super

    administrator.

    hon thnh ni dung ca kha lun ny c bit chng ba, chng bn th c

    phn ng gp khng nh ca nhng blogger v J2ME [9], [10] ngoi nhng c nhn

    nu phn u. Mt ln na xin chn thnh cm n nhng ngi v s pht trin chung

    ca cng ngh, v tnh yu i vi khoa hc, h ng gp rt ln cho nhng ngi isau trong vic tip cn tri thc mt cch nhanh chng v c h thng. Vic k tha v

    pht trin tip kin thc hn lm lm nn mt th gii mang tnh cng ng rt cao. Tt c

    bt ngun t tnh yu i vi T quc, tnh yu , s chia s v mong mun cng tin b

    trong khoa hc k thut.

  • 7/30/2019 133_4357

    83/83

    u cng ngh J2ME v th nghim lp trnh ng dng trn thit b di ng

    Ti liu tham kho

    Ti liu ting Anh:

    [1] Andi Gutmans, Stig Sther Bakken, and Derick Rethans, PHP 5 Power

    Programming, 2004

    [2] Anura Guruge, Corporate Portals Empowered with XML and Web Services,

    Publisher Digital Press, October 15, 2002

    [3] Biswajit Sarkar, Packt - LWUIT 1.1 for Java ME Developers, 2009

    [4] BrianPfaffenberger, StevenM.Schafer, CharlesWhite, BillKarow, HTML,XHTML, & CSS Bible, 3rd Edition, 2004

    [5] Ethan Cerami, Web Services Essentials, 2/2002

    [6] Kim Topley, J2ME in a Nutshell, Edition March 2002

    [7] Robert Hablutzel, Developing Web Services with Java APIs for XML, 2005

    Ti liu ting Vit:

    [8] Lp trnh J2ME c bn, Nguyn Ngc Minh, javavietnam.orgWebsite tham kho:

    [9] http://khanhlnq-blog.posterous.com/bai-1-khai-quat-cac-lop-j2me

    [10] http://www.javavietnam.org/