You are on page 1of 43

Find best mobile with best price www.thongtinmobile.

com
Li gii thiu: Cng ngh Java cho cng nghip di ng (Java Technology Wireless Industry - JTWI) ngy cng pht trin v thu ht s quan tm ca nhiu ngi. Nhm p ng nhu cu ny, TinCNTT m chuyn mc J2ME Tutorial c gng cp y nhiu kha cnh ca cng ngh Java cho di ng. bt u lot bi, chng ta s cng kho st cc lp v khi nim quan trng ca J2ME.

Bi 1: Khi qut cc lp J2ME Mc tiu ca J2ME l cho php ngi lp trnh vit cc ng dng c lp vi thit b di ng, khng cn quan tm n phn cng tht s. t c mc tiu ny, J2ME c xy dng bng cc tng (layer) khc nhau giu i vic thc hin phn cng khi nh pht trin. Sau y l cc tng ca J2ME c xy dng trn CLDC:

Hnh 1. Cc tng ca CLDC J2ME Mi tng trn tng hardware l tng tru tng hn cung cp cho lp trnh vin nhiu giao din lp trnh ng dng (API-Application Program Interface) thn thin hn. T di ln trn: Tng phn cng thit b (Device Hardware Layer) y chnh l thit b di ng tht s vi cu hnh phn cng ca n v b nh v tc x l. D nhin tht ra n khng phi l mt phn ca J2ME nhng n l ni xut pht. Cc thit b di ng khc nhau c th c cc b vi x l khc nhau vi cc tp m lnh khc nhau. Mc tiu ca J2ME l cung cp mt chun cho tt c cc loi thit b di ng khc nhau. Tng my o Java (Java Virtual Machine Layer) Khi m ngun Java c bin dch n c chuyn i thnh m bytecode. M bytecode ny sau c chuyn thnh m ngn ng my ca thit b di ng. Tng my o Java bao gm KVM (K Virtual Machine) l b bin dch m bytecode c nhim v chuyn m bytecode ca chng trnh Java thnh ngn ng my chy trn thit b di ng. Tng 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. Lp trnh vin c th s dng cc lp v phng thc ca cc API ny tuy nhin tp cc API hu dng hn c cha trong tng hin trng (profile layer). Tng hin trng (Profile Layer) Tng hin trng hay MIDP (Hin trng thit b thng tin di ng-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 dng cho 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. 1 My o Java (hay KVM) Vai tr ca my o Java hay KVM l dch m bytecode c sinh ra t chng trnh Java 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 2 y biu din tin trnh xy dng ng dng MIDlet hon chnh v vai tr ca KVM.

Hnh 2. Tin trnh xy dng MIDlet Qu trnh pht trin ng dng MIDlet vi IDE (Mi trng pht trin tch hpIntergrated Development Environment): Lp trnh vin: To cc tp tin ngun Java 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 B bin dch Java s bin dch m ngun thnh m bytecode. M bytecode ny s c KVM dch thnh m my. M bytecode bin dch s c lu trong cc tp tin *.class v s c mt tp tin *.class sinh ra cho mi lp Java. Trn IDE: 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 phi c tin kim tra trc khi chng c th c download v thit b di ng. Vic tin kim tra c xem l mt phn ca mi trng pht trin lm cho KVM c th c thu nh hn. B tin kim tra s gn nhn lp bng mt thuc tnh (attribute) c bit ch rng lp c tin kim tra. Thuc tnh ny tng thm khong 5% kch thc ca lp v s c kim tra bi b kim tra trn thit b di ng. Trn IDE: To tp tin JAR IDE s to mt tp tin JAR cha: * Tt c cc tp tin *.class * Cc hnh nh ca ng dng. Hin ti ch h tr tp tin *.png * Cc tp tin d liu c th c yu cu bi ng dng * Mt tp tin k khai (manifest.mf) cung cp m t v ng dng cho b qun l ng dng (application manager) trn thit b di ng. * Tp tin JAR c bn hoc c phn phi n ngi dng u cui Sau khi g ri v kim tra m lnh trn trnh gi lp (simulator), m lnh sn sng c kim tra trn in thoi di ng v sau c phn phi cho ngi dng. Ngi dng: Download ng dng v thit b di ng Ngi dng sau download tp tin JAR cha ng dng v thit b di ng. Trong hu ht cc in thoi di ng, c ba cch download ng dng: * Kt ni cp d liu t PC sang cng d liu ca in thoi di ng: Vic ny yu cu ngi dng phi c tp tin JAR tht s v phn mm truyn thng download ng dng sang thit b thng qua cp d liu. * Cng hng ngoi IR (Infra Red) Port: Vic ny yu cu ngi dng phi c tp tin JAR tht s v phn mm truyn thng download ng dng sang thit b thng qua cng hng ngoi. * OTA (Over the Air): S dng phng thc ny, ngi dng phi bit a ch URL ch n tp tin JAR Trn thit b di ng: B tin kim tra: Kim tra m bytecode 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. 2 Tng CLDC (Connected Limited Device Configuration)

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. Cc CLDC API c nh ngha vi s hp tc vi 18 cng ty l b phn ca JCP (Java Community Process). Nhm ny gip bo m rng cc API c nh ngha s hu dng v thit thc cho c nh pht trin ln nh sn xut thit b di ng. Cc c t ca JCP c gn cc s JSR (Java Specification Request). Quy nh CLDC phin bn 1.0 c gn s JSR - 30. 2.a CLDC Connected Limited Device Configuration Phm vi: nh ngha cc th vin ti thiu v cc API. nh ngha: * * * * * * Tng thch ngn ng JVM Cc th vin li I/O Mng Bo mt Quc t ha

Khng nh ngha: * * * * Chu k sng ng dng Giao din ngi dng Qun l s kin 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. J2ME l mt phin bn thu nh ca J2SE, s dng t b nh hn n c th thch hp vi cc thit b di ng b gii hn b nh. Mc tiu ca J2ME l mt tp con 100% tng thch ca J2SE.

Hnh 3 biu din mi lin h gia J2SE v J2ME (CDC, v CLDC). 2.b S khc nhau gia J2ME v J2SE. Cc im khc nhau l do mt trong hai l do. Do lp Java b b i gim kch

thc ca J2ME hoc do lp b b bi v n nh hng n s an ton, bo mt ca thit b di ng hay ca cc ng dng khc trn thit b di ng (c th dn n pht trin virus). im khc bit chnh l khng c php ton s thc. Khng c JNI (JavaNative Interface Support) do bn khng th truy xut cc chng trnh khc c vit bng ngn ng ca thit b (nh C hay C++). Tuyn on (thread) c cho php nhng khng c cc nhm tuyn on (thread group) v cc daemon thread. CLDC nh ngha mt m hnh an ton, bo mt c thit k bo v thit b di ng, KVM, v cc ng dng khc khi cc m ph hoi. Hai b phn c nh ngha bi CLDC ny l b tin kim tra v m hnh sandbox.

Hnh 4 biu din cch m b tin kim tra v b kim tra lm vic vi nhau kim tra m chng trnh Java trc khi chuyn n cho KVM. Nh cp trc y, cc tp tin lp c gn nhn bng mt thuc tnh trn my trm ca nh pht trin. Thuc tnh ny sau c kim tra bi b tin 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 5 biu din khi nim m hnh sandbox Hnh trn cho thy ng dng J2ME t trong mt sandbox c ngha l n 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 (cc cng, m thanh, b rung, cc bo hiu,) ch khi nh sn xut in thoi di ng cung cp cc API tng ng. Tuy nhin, 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 (Next Generation). N s nhm n cc vn nh nng cao vic qun l li v c th php ton s thc. 3 MIDP (Mobile Information Device Profile) 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. Hin ti hin trng c cng b l MIDP (Mobile Information Profile) vi c t JSR 37. C 22 cng ty l thnh vin ca nhm chuyn gia to ra chun MIDP. MIDP cung cp cc API cho php thay i trng thi chu k sng ng dng, ha (mc cao v mc thp), tuyn on, timer, lu tr bn vng (persistent storage), v mng. N khng nh ngha cch m ng dng c np trong thit b di ng. l trch nhim ca nh sn xut. N cng khng nh ngha bt k loi m hnh bo mt end-to-end no, vn cn thit cho ng dng kinh doanh nhn s th tn dng ca ngi dng. N cng khng bt buc nh sn xut cch m lp MIDP c thc hin.
Tng bc lp trnh cho in thoi di ng J2ME - Phn 2

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

Hnh 1. MIDlet Thng bo import dng truy xut cc lp ca CLDC v MIDP. 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, trong trng hp c cuc gi n). 1.1 B khung MIDlet (MIDlet Skeleton) 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 2 biu din b khung yu cu ti thiu cho mt ng dng MIDlet 1) 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() 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. Ni chung, cc bin ton cc s c khi to li tr hm to bi v cc bin c gii phng trong hm pauseApp(). Nu khng th chng s khng c khi to li bi ng 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) Phng thc destroy() c gi. 1.2 Chu k sng ca MIDlet (MIDlet lifecycle)

Hnh 3 biu din 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, phng thc notifyPaused() s c dng yu cu b qun l ng dng chuyn ng dng sang trng thi tm dng. 1.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. 1.4 Tp tin k khai (manifest) v tp tin 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 Manifest-Version // Phin bn tp tin Manifest MIDlet-Name // Tn b MIDlet (MIDlet suite) MIDlet-Version // Phin bn b MIDlet MIDlet-Vendor // Nh sn xut MIDlet MIDlet- for each MIDlet // Tn ca MIDlet MicroEdtion-Profile // Phin bn hin trng MicroEdtion-Configuration // Phin bn cu hnh 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 tin JAR. 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. 1.5 B MIDlet (MIDlet Suite) 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.

Hnh 4 biu din hai 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.
Tng bc lp trnh cho in thoi di ng J2ME - Phn 3

Bi 3 - ha trong J2ME 1 ha (Graphic)

1.1 ha mc thp (low level) v mc cao (high level) Cc 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. Hnh 1 biu din hai mc ha:

Hnh 1 . Hai mc ha C hai lp ha mc thp v mc cao u l lp con ca lp Displayble. Trong MIDP, ch c th c mt lp displayable trn mn hnh ti mt thi im. C th nh ngha nhiu mn hnh nhng mt ln ch hin th c mt mn hnh. 1.1.a ha mc cao (High Level Graphics) (Lp Screen) 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. 1.1.b ha mc thp (Lp Canvas) ha mc thp l lp con ca lp Canvas. Lp ny cung cp cc phng thc ha cho php v ln mn hnh hay vo mt b m hnh cng vi cc phng thc x l s kin bn phm. Lp ny dng cho cc ng dng tr chi cn iu khin nhiu v mn hnh. Hnh 2 biu din phn cp lp ha:

Hnh 2 . Phn cp lp ha Form c th l kiu ha hu dng nht ca cc lp Screen v n cho php cha nhiu item khc nhau. Nu s dng cc lp khc (TextBox, List) th ch c mt item c hin th bi v chng u l i tng Displayable v do ch c th c mt i tng Displayable c hin th ti mt thi im. Form cho php cha nhiu item khc nhau (DateField, TextField, Gauge, ImageItem, TextItem, ChoiceGroup). 1.2 ha mc cao L cc i tng ca lp Screen 1.2.a TextBox 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(). 1.2.b Form Form 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. 1.2.c 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. 1.2.d 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 th c gn cc kiu khc nhau (alarm, confirmation, error, info, warning), cc m thanh tng ng s c pht ra. 1.3 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. 1.3.a String Item Public class StringItem extends Item StringItem ch l mt chui hin th m ngi dng khng th hiu chnh. Tuy nhin, c nhn v ni dung caStringItem c th c hiu chnh bi ng dng. 1.3.b 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 . 1.3.c 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. 1.3.d Date Field public class DateField extends Item DateField 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. 1.3.e Choice Group public class ChoiceGroup extends Item Implements Choice ChoiceGroup cung cp mt nhm cc radio-button hay checkbox cho php la chn n hay la chn nhiu. 1.3.f Gauge public class Gauge extends Item Lp Gauge cung cp mt hin th thanh (bar display) ca mt gi tr s hc. Gauge c th c tnh tng tc hoc khng. Nu mt gauge l tng tc th ngi dng c th thay i gi tr ca tham s qua gauge. Gauge khng tng tc ch n thun l hin th. 1.4 Ticker Mt mn hnh c th c mt ticker l mt chui vn bn chy lin tc trn mn hnh. Hng v tc l do thc t qui nh. Nhiu mn hnh c th chia s cng mt ticker. V d: Ticker myTicker = new Ticker(Useful Information); MainScreen = new Form(Main Screen); MainScreen.setTicker(myTicker);

Ticker(String str) public class Ticker extends Object


Tng bc lp trnh cho in thoi di ng J2ME - Phn 4

1 Lu tr bn ghi (Record Store)

Lu tr bn ghi cho php lu d liu khi ng dng thot, khi ng li v khi thit b di ng tt hay thay pin. D liu lu tr bn ghi s tn ti trn thit b di ng cho n khi ng dng tht s c xa khi thit b di ng. Khi mt MIDlet b xa, tt c cc lu tr bn ghi ca n cng b xa. Hnh 1 minh ha d liu lu tr bn ghi vi MIDlet

Nh trong hnh, cc MIDlet c th c nhiu hn mt tp lu tr bn ghi, chng ch c th truy xut d liu lu tr bn ghi cha trong b MIDlet ca chng. Do , MIDlet 1 v MIDlet 2 c th truy xut d liu trong Record Store 1 v Record Store 2 nhng chng khng th truy xut d liu trong Record Store3. Ngc li, MIDlet 3 ch c th truy xut d liu trong Record Store 3 v khng th truy xut d liu d liu trong Record Store 1 v Record Store 2. Tn ca cc lu tr bn ghi phi l duy nht trong mt b MIDlet nhng cc b khc nhau c th dng trng tn. Cc bn ghi trong mt lu tr bn ghi c sp xp thnh cc mng byte. Cc mng byte khng c cng chiu di v mi mng byte c gn mt s ID bn ghi.

Cc bn ghi c nh danh bng mt s ID bn ghi (record ID) duy nht. Cc s ID bn ghi c gn theo th t bt u t 1. Cc s s khng c dng li khi mt bn ghi b xa do s tn ti cc khong trng trong cc ID bn ghi. c t MIDP khng nh ngha chuyn g xy ra khi t n s ID bn ghi ti a, iu ny ph thuc vo ng dng. 1.1 nh dng (Format), Thm (Add) v Xa (Delete) cc bn ghi Thm bn ghi gm hai bc. Bc u tin l nh dng bn ghi theo nh dng yu cu v bc tip theo l thm bn ghi nh dng vo lu tr bn ghi. S tun t ha (serialization) d liu lu tr bn ghi khng c h tr, do lp trnh vin phi nh nh dng cc mng byte xy dng d liu lu tr bn ghi Sau y l v d ca vic nh dng d liu bn ghi, m mt lu tr bn ghi v sau thm d liu bn ghi vo lu tr bn ghi ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream outputStream = new DataOutputStream(baos); outputStream.writeByte(T); // byte [0] Th ch loi bn ghi outputStream.writeInt(score); // byte [1] n [4] outputStream.writeUTF(name); // byte [5] n 2 + name.length byte[] theRecord = boas.toByteArray(); recordStore rs = null; rs = RecordStore.openRecordStore(RecordStoreName, CreateIfNoExist); int RecordID = rs.addRecord(theRecord, 0, theRecord.length); Hnh 2. Thm bn ghi

1.1.a nh dng d liu bn ghi Trong v d trn, hai dng u to mt lung xut gi d liu bn ghi. S dng i tng DataOutputStream (bc mng byte) cho php cc bn ghi d dng c nh dng theo cc kiu chun ca Java (long, int, string,) m khng phi quan tm n tch n thnh d liu byte. Phng thc writeByte(), writeInt(), v writeUTF() nh dng d liu nh trong hnh (tag, score, name). S dng th (tag) lm byte u tin c ch xc nh loi bn ghi sau ny. Phng thc toByteArray() chp d liu trong lung xut thnh mt mng byte cha bn ghi lu tr. Bin theRecord l tham chiu n d liu nh dng. 1.1.b Thm d bn ghi nh dng vo lu tr bn ghi Khi d liu c nh dng, n c th c thm vo lu tr bn ghi. Pht biu openRecordStore() to v m mt lu tr bn ghi vi tn l RecordStoreName. Pht biu addRecord() thm bn khi (bt u bng byte 0 ca theRecord) v tr v ID bn ghi gn vi record ny. 1.1.c Xa bn ghi

Bn ghi c xa bng cch chuyn s ID bn ghi cho phng thc deleteRecord() ca i tng RecordStore. V d, bn ghi 7 b xa bng phng thc deleteRecord(), nu mt bn ghi khc c thm vo th s ID bn ghi s l 8 v ID bn ghi 7 s khng c dng li. 1.2 Lc cc bn ghi (Filtering Records) Giao din RecordFilter cung cp mt cch thun tin lc cc bn ghi theo tiu chun ca lp trnh vin. RecordEnumeration c th c dng duyt qua cc bn ghi v ch tr v cc record ph hp vi tiu chun xc nh. Giao din RecordFilter c phng thc matches() dng xc nh tiu chun ph hp. Phng thc matches() c mt tham s u vo l mng byte biu din mt bn ghi. Phng thc phi tr v true nu bn ghi ny ph hp vi tiu chun nh ngha. Hnh 3 minh ha v d cch s dng giao din RecordFilter

Hnh 3. Lc bn ghi class IntegerFilter implements RecordFilter { public boolean matches(byte[] candidate) throws IlleegalArgumentException { return(candidate[0] == T); } Trong v d trn, lp IntegerFilter c dng lc ra tt c cc bn ghi c T byte u tin. Nh rng cc bn ghi khng phi c cng nh dng. Do c byte u tin lm th (tag) rt c ch. Phng thc matches() ch tr v true nu byte u tin l T. 1.3 Sp xp cc bn ghi Cc bn ghi trong mt lu tr bn ghi c th c sp xp theo th t do lp trnh vin nh ngha. Vic sp xp c thc hin thng qua giao din RecordComparator. Duyt k qua cc bn ghi s tr v cc bn ghi theo th t sp xp nh ngha. Giao din RecordComparator c phng thc compare() phi c implement nh ngha cch hai bn ghi so snh theo th t. Cc tham s u vo l hai mng byte biu din hai bn ghi. Phng thc compare() phi tr v mt trong ba gi tr: EQUIVALENT: Hai bn khi c xem l ging nhau FOLLOWS: Bn ghi u tin c th t theo sau bn khi th hai. PRECEDES: Bn ghi u tin c th t ng trc bn ghi th hai. V d sp xp cc bn ghi s dng giao din RecordComparator class IntegerCompare implements RecordComparator { public int compare(byte[] b1, byte[] b2) {

DataInputStream is1 = new DataInputStream(new ByteArrayInputStream(b1)); DataInputStream is2 = new DataInputStream(new ByteArrayInputStream(b2)); is1.skip(1); is2.skip(2); int i1 = is1.readInt(); int i2 = is2.readInt(); if (i1 > i2) return RecordComparator.FOLLOWS; if (i1 < i2) return RecordComparator.PRECEDES; return RecordComparator.EQUIVALENT; } } Trong v d trn, cc bn ghi c sp xp da trn gi tr s nguyn cha trong 4 byte sau byte th u tin. Tham s b1 v b2 biu din hai bn ghi c chuyn cho phng thc compare(). S dng phng thc DataInputStream() cho php s dng cc kiu d liu chnh ca Java (int, long, String) thay v phi thao tc trc tip vi d liu byte. Phng thc skip() b qua byte th u tin trong mi lung. Phng thc readInt() c s nguyn trc tip t lung nhp. Dng cui cng so snh cc s nguyn v tr v gi tr (FOLLOWS, PRECEDES, v EQUIVALENT). Nh vy th t sp xp ca ton b bn ghi s c xc nh bi gi tr ca cc s nguyn. 1.4 Lit k (Enumerate) cc bn ghi Lit k qua cc bn ghi trong lu tr bn ghi c thc hin bng cch dng giao din RecordEnumeration kt hp vi cc lp RecordFilter v RecordComparator. Lp RecordEnumerator gi th t lun l ca cc bn ghi. Lp RecordFilter nh ngha tp con ca cc bn ghi t lu tr bn ghi s c sp xp. RecordComparator nh ngha th t sp xp ca cc bn ghi. Nu RecordFilter khng c dng th tt c cc bn ghi trong lu tr bn ghi s c dng. Nu RecordComparator khng c dng th cc bn ghi s c tr v theo th t ngu nhin. B lit k c th c thit lp cp nht khi cc bn ghi thay i hoc n c th c thit lp b qua cc thay i v c cp nht th cng sau. Nu s lit k c cp nht t ng mi khi thm hoc xa bn ghi, th n c th lm chm hiu sut ca ng dng. Tuy nhin, nu cc bn ghi b xa th b lit k c th tr v cc bn ghi khng hp l nu n cha c cp nht. Gii php l t c cc bn ghi ang c thay i v sau gi phng thc rebuilt() xy dng li b lit k mt cch th cng. Cc bn ghi duyt bng cch dng phng thc nextRecord(). Ln u tin c gi n s tr v bn ghi u tin trong tp lit k. Ln gi k tip n s tr v bn ghi k tip theo th t sp xp lun l. V d biu din qu trnh lit k bn ghi IntegerFilter iFilt = new IntegerFilter(); IntegerCompare iCompare = new IntegerCompare(); RecordEnumeration intRecEnum = null; intRecEnum = recordStore.enumerateRecords((RecordFilter)iFilt, (RecordComparator)iCompare, false); while (intRecEnum.hasNextElement()) { byte b[] = intRecEnum.nextRecord(); }

// intRecEnum = recordStore(null, null, false); Trong v d trn, mt i tng IntegerFilter v IntegerCompare c to ra. IntegerFilter s ch tr v cc bn ghi cha trng s nguyn. IntegerCompare s sp xp cc bn ghi theo th t s hc. B lit k bn ghi c nh ngha v c khi to bng output ca phng thc enumerateRecords() ca lp RecordStore. Phng thc enumerateRecords() c ba tham s. Tham s u tin l tham chiu i tng lc (iFilt). Tham s th hai l tham chiu n i tng sp xp (iCompare). Tham s cui cng l mt gi tr boolean xc nh b lit k c c cp nht khi cc bn ghi thay i, thm, xa hay khng. Vng lp while() ch cch duyt cc bn ghi theo th t yu cu. Vng lp while() s tip tc min l b lit k cn cha mt bn ghi. Dng cui cng biu din v d cch duyt tt c bn ghi theo th t ngu nhin. Nh ta thy, cc hai tham s lc v so snh u c t l null.
Tng bc lp trnh cho in thoi di ng J2ME - Phn 5

1 Lp trnh mng 1.1 Khung mng CLDC tng qut (Generic CLDC Networking Framework) Mng cho php client di ng gi v nhn d liu n server. N cho php thit b di ng s dng cc ng dng nh tm kim c s d liu, tr chi trc tuyn Trong J2ME, mng c chia lm hai phn. Phn u tin l khung c cung cp bi CLDC v phn hai l cc giao thc tht s c nh ngha trong cc hin trng. CLDC cung cp mt khung tng qut thit lp kt ni mng. tng l n l a ra mt khung m cc hin trng khc nhau s s dng. Khung CLDC khng nh ngha giao thc tht s. Cc giao thc s c nh ngha trong cc hin trng. Hnh 1 biu din cch m khung CLDC lm vic:

Hnh 1. 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 tng Connector. 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); 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. 1.2 Cc lp giao din kt ni (Connection Interface Class) 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 2 . Cc lp kt ni Sau y l m t cc giao din kt ni c nh ngha trong CLDC StreamConnectionNotifier Giao dinStreamConnectionNotifier 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 client c = 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 StreamConnection Giao 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 phng thc thit lp mt kt ni HTTP. 1.3 Kt ni HTTP Hin trng MIDP h tr kt ni HTTP phin bn 1.1 thng qua giao din HttpConnection. H tr GET, POST, HEAD ca HTTP. Yu cu GET (GET request) c dng ly d liu t server v y l phng thc mc nh. Yu cu POST dng gi d liu n server. Yu cu HEAD tng t nh GET nhng khng c d liu tr v t server. N c th dng kim tra tnh hp l ca mt a ch URL. Phng thc open() ca lp Connector dng m kt ni. Phng thc open() tr v mt i tng Connection sau c th ng vai tr l mt HttpConnection cho

php dng tt c cc phng thc ca HttpConnection. Mt kt ni HTTP c th mt trong ba trng thi khc nhau: Thit lp (Setup), Kt ni (Connectd), hay ng (Close). Trong trng thi Thit lp, kt ni cha c to. Phng thc setRequestMethod() v setRequestProperty() ch c th c dng trong trng thi thit lp. Chng c dng thit lp phng thc yu cu (GET, POST, HEAD) v thit lp thuc tnh HTTP (v d. User-Agent). Khi s dng mt phng thc yu cu gi d liu n hay nhn d liu v t server s lm cho kt ni chuyn sang trng thi Kt ni. Gi phng thc close() s lm cho kt ni chuyn sang trng thi ng. Hnh 3 minh ha cc trng thi kt ni khc nhau:

Hnh 3 . Cc trng thi kt ni HTTP Lu rng gi bt k phng thc no lit k trn (v d. openInputStream(), getLenght()) cng s lm cho kt ni chuyn sang trng thi Kt ni. 1.4 V d HTTP GET Phng thc HTTP GET cho php ly d liu t server v l phng thc mc nh nu khng xc nh phng thc trong trng thi Thit lp. V d thc hin mt kt ni HTTP GET c bn: void getViaHttpConnection(String url) throws IOException { HttpConnection c = null; InputStream is = null; try { c = (HttpConnection)Connector.open(url); // M kt ni HTTP is = c.openInputStream(); // M Input Stream, mc nh GET type = c.getType(); int len = (int)c.getLength(); if (len > 0) { byte[] data = new byte[len]; int numBytes = is.read[data]; // Nu bit chiu di processData(data); } else { int ch; while ((ch = is.read()) != -1) { // c n khi no gp -1 stringBuffer.append((char)ch); } processBuffer(stringBuffer);

} } finally { if (is != null) is.close(); if (c != null) c.close(); } } getViaHttpConnection() nhn mt chui l tham s u vo, l a ch a ch URL chuyn cho phng thc open() ca lp Connection. Phng thc open() tr v mt i tng Connection ng vai tr l mt lp HttpConnection. Phng thc openInputStream() 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. Nu khng th len s cha gi tr -1 v d liu phi c c tng k t mt cho n khi gp nh du cui file (-1). Phng thc processData() v processBuffer() x l d liu n t server. Khi lnh cui cng s ng tt c cc kt ni khng quan tm n c li t khi lnh try trc hay khng. 1.5 V d HTTP POST HTTP POST cho php gi d liu n server. D liu gi n server qua phng thc 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 getViaHttpConnection(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 lp c.setRequestMethod(HttpConnection.POST); // M lung output stream v chuyn sang trng thi Kt ni os = 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 status if (status != HttpConnection.HTTP_OK) throw new IOException(not OK); int len = (int)c.getLength(); // Ging nh v d HTTP GET: // Kim tra length v x l tng ng } finally { // ng kt ni ging nh v d HTTP GET } } Nh v d trc, phng thc postViaHttpConnection() nhn tham s u vo l mt chui l a ch URL c chuyn n phng thc open() ca lp Connection. Phng thc open() tr v mt i tng Connection ng vai tr l mt lp HttpConnection.

Kt ni by gi trong trng thi thit lp v phng thc yu cu c t l POST bng phng thc setRequestMethod(). Tt c cc thuc tnh khc phi c thit lp trong trng thi ny. Phng thc openOutputStream() s lm cho kt ni chuyn sang trng thi Kt ni. Phng thc write() v flush() s gi d liu n server. on m cn li ging nh phng thc GET. Lung input c m, chiu di ca d liu c kim tra, v d liu c c ton b khi hay tng k t mt ty vo chiu di c tr v. Khi lnh cui cng s ng kt ni. 1.6 Triu gi CGI script C hai phng thc GET v POST c th c dng triu gi CGI script (Common Gateway Interface script) v cung cp d liu nhp. V d, mt MIDlet c mt form cho ngi dng in d liu, sau c th gi d liu kt qu cho server CGI script x l. CGI script c th c triu gi ging nh phng thc GET v POST. Tn ca CGI script v d liu tham s nhp c th chuyn trong a ch URL. Nu cn gi thm d liu cho server, th c th dng phng thc POST. V d cc tham s c gi l mt phn ca URL: url = http://www.asite.com/cgi-bin/getloca...=abc&zip=12345 Trong v d trn, a ch URL c th c chuyn nh l mt tham s ging nh phng thc getViaHttpConnection() v d trc. 1.7 HTTP Request Header Nh ta ni trc, 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. 2 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 thc java.microedition.io.Connector.open() ch nh giao thc s dng (SMS hoc CBS), v s in thoi ch, cng, hoc c hai. V d, y l nhng URL hp l: sms://+417034967891 sms://+417034967891:5678 sms://:5678 cbs://:5678 URL trong hai dng u tin m kt ni client, ng dng kt ni n mt server vi a ch thit b v cng ch nh. Nu cng khng ch nh, s dng cng nhn tin mc nh ca ng dng. Dng URL th ba m mt kt ni server trn thit b, cho php ng dng i v hi p tin nhn n t cc thit b khc. Dng cui cng cho php ng dng lng nghi tin nhn broadcast t ngi iu hnh mng. Sau y l mt v d n gin to mt kt ni SMS client: import java.microedition.io.*; import java.wireless.messaging.*; ..... MessageConnection conn = null; String url = "sms://+417034967891"; try { conn = (MessageConnection) Connector.open( url ); // thc hin cng vic g } catch( Exception e ){ // x l li } finally { if( conn != null ){ try { conn.close(); } catch( Exception e ){} } } gi tin nhn, s dng phng thc MessageConnection.newMessage() to mt tin nhn rng, thit lp payload ca n (d liu vn bn hoc nh phn gi), v triu gi phng thc MessageConnection.send(): 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 tin nhn, 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(); // blocks if( msg instanceof BinaryMessage ){ byte[] data =((BinaryMessage) msg).getPayloadData(); // thc hin cng vic g } else { String text =((TextMessage) msg).getPayloadText(); //thc hin cng vic g } } } catch( Exception e ){ //x l li } finally { if( conn != null ){ try { conn.close(); } catch( Exception e ){} } } bo m tnh n nh ca chng trnh, vic gi v nhn thng ip nn giao cho mt thread ring m nhn.
Tng bc lp trnh cho in thoi di ng J2ME - Phn 6

Lnh vc ng dng khng dy vi cng ngh Java Khi qut Cc ng dng Java cho cc thit b khng dy nh (MIDlet) s ng mt vai tr c th l nh, cng c th l ln trong cc h thng phn mm phn tn. Khi ,

n s sinh ra mt dng phn mm client mi. Chng rt thch hp vi khi nim thin-client, nhng do chng qu nh, yu cu phi c thm s phi hp lm vic hiu qu vi cc thng tin c cung cp bi cc servlet v JSP, v c th l EJB ng sau. Ta s xem xt cc cng ngh Java ch cht pht trin ng dng khng dy trong h thng doanh nghip. Ta cng s xt n cc kin trc h tr client khng dy trong cc h thng doanh nghip. Trong lc ny, dch v Web (Web service), c th s tr thnh mt phng tin vt tri h tr cho phn mm client khng dy trong mt vi nm ti. Cc phin bn Java 2 Nn tng Java 2 c chia thnh ba phin bn, mi phin bn h tr mt dng phn mm trn cc h thng khc nhau. Phin bn chun, hay J2SE (Java 2 platform, Standard Edition), l phin bn c nht v thng dng nht. N h tr cc ng dng Java, applet, lp trnh desktop v cc h thng ln hn ch yu l cho PC - c th c ni mng hoc khng ni mng. Ngi ta thng thng s dng J2SE cho cc ng dng GUI n v console, cc thnh phn middleware v cc dch v RMI. Phin bn doanh nghip, hay J2EE (Java 2 platform, Enterprise Edition), m rng phin bn chun vi cc API c cc tnh nng doanh nghip (enterprise features). J2EE h tr Web service thng qua cc servlet v JSP, d liu bng JDBC, v cc h thng giao tc ln thng qua EJB y l mt vi cng ngh chnh ca J2EE. Cc thnh phn J2EE gn cht vi pha server ca cc h thng ln: kh nng x l mnh, b nh v khng gian lu tr ln v c kh nng m rng. Phin bn mi nht trong ba phin bn l phin bn thu nh, hay J2ME (Java 2 platform, Micro Edition). N h tr cc thit b micro a dng, m J2ME gi l cc hin trng (profile) nhng tt c chng u km kh nng hn so vi my tnh c nhn. Trong J2ME, sc mnh CPU, b nh, lu tr v kh nng kt ni u b hn ch, c th l rt nghim ngt. S cn thit ca J2ME Th gii ca cc thit b di ng v cc thit b sub-PC khng c cc c tnh ging nh trong lnh vc PC v server. Ngoi ra, khng phi mi thit b trong lnh vc ny u cng lm mt vic. S khc nhau v thit k v mc ch gia PDA, in thoi, v my nhn tin l rt ng k. Bt k n mang li s i mi g cho th trng, th tnh a dng ca cc thit b ny l mt c mng i vi cc lp trnh vin. Nu ti mun xy dng mt ng dng cho in thoi di ng, ti c phi vit m li, xy dng li, v kim tra li cho mi thit b hay khng? Nu ti mun xy dng mt client c kt ni mng, ti phi xt n cc cng ngh kt ni no? v.v... J2ME ra i nhm mc ch chnh l thit lp mt chun n m thng qua cc nh pht trin c th to nn cc phn mm c tnh kh chuyn (portable) cho cc thit b micro. Ngn ng Java l s la chn ng nhin cho lnh vc ny, bi v v

c bn n hng nhiu v tnh kh chuyn. Bng cch ny, Sun m nhn bi ton ln v tnh a dng ca thit b mt mc tng qut, do cc nh pht trin khng phi quan tm n vn ny na. Nu mi nh cung cp PDA, in thoi v my nhn tin u thc hin J2ME cho thit b ca h, th chng ta c kh nng vit chng trnh vit mt ln, chy mi ni (write once, run anywhere) trong lnh vc micro, cng ging nh ta quen vi khi nim ny cc h thng my ln. Hin trng thit b thng tin di ng (Mobile Information Device Profile) Mc d khng phi ch c mt hng kin trc J2ME, nhng cc thit b di ng khng dy dng nh dn dn cng quan tm n J2ME. Bao gm: * * * * * in thoi di ng Tr t c nhn s (Personal Digital Assistant-PDA) My nhn tin Thit b c sch in t Cc thit b point-of-sale

J2ME c t chc thnh cc mc, mi mc xc nh mt nh ngha tng dn ca cc thit b ch. C nhiu la chn kin trc tn ti mi mc, v rng buc ty chn cc mc cao hn. Lp trnh vin ch cn quan tm n hin trng (profile), nh ngha cc API; cc nh thc hin J2ME cho thit b cn tp trung n mc VM (Virtual Machine). Hnh 1. Cc mc t chc J2ME

Cc c t cho cc thit b khng dy l Connected Limited Device Configuration hay CLDC, v Mobile Information Device Profile hay MIDP. MIDP nh ngha cc c tnh ti thiu ca thit b nh sau: * B nh khng bay hi c dung lng 128K (ngha l, b nh c trng thi c gi li khi thit b tt) dnh cho cc thnh phn MIDP, bao gm KVM, Core API v chng trnh MIDP. * 8K b nh khng bay hi dnh cho d liu bn vng ca ng dng. * 32K b nh bay hi cho b nh ca chng trnh. * Mn hnh hin th t nht l 96x54 pixel, c th ch l mt bit mu hay h tr nhiu mu hoc mu mc xm. * C ch nhp liu h tr t nht mt b phm s, hoc mt mn hnh cm ng c kh nng cu hnh h tr nhp liu s. * Kh nng kt ni mng khng dy hai chiu, vi bng thng hn ch v thng thng l khng lin tc. Nh vy cc thit b h tr MIDP cung cp mt nn tng chun cho cc phn mm Java:

Hnh 2. Trin khai h thng J2ME

Cc kiu ng dng MIDP Cc ng dng MIDP c gi l cc MIDlet. Hu ht cc MIDlet u mt trong hai dng sau: 1. ng dng n (standalone application) c np hon ton vo thit b v c th chy bt k lc no thit b c m, khng yu cu ti nguyn bn ngoi. Loi ny bao gm: * Cc ng dng PDA v ng dng organizer nh s a ch, danh sch cng vic v lch hn. * Cc cng c n gin nh my lm tnh (calculator) * Tr chi 2. ng dng ni mng (networked application) c chia thnh t nht hai thnh phn, mt thnh phn l client c trin khai trn thit b di ng. Thnh phn ny s t c dng nu khng c kt ni n t nht mt server trn h thng. Server thng l c t trong mi trng J2EE, v phc v bng Web hoc cc giao thc Internet khc. y, ta hy xt k thut ng client. Ta khng gi mt MIDlet l mt client ch n gin l v n s dng kt ni mng MIDP v lin lc n cc thnh phn khc. Cu hi l phn lun l li ca ng dng t u? MIDlet c m nhn hu ht vic suy ngh v ch quan tm n mng hay khng? khng phi l client, tht vy t nht l khng theo ng ngha trong ng cnh ca h thng enterprise. Mt client l mt MIDlet da vo mt server suy ngh, lu tr, ti, x l, hay ni cch khc l lm vic thay cho n. Java 2 Enterprise Edition Cc MIDlet client khng yu cu phi kt ni n cc server chy Java. Mt MIDlet c th c vit to HTTP request n mt trang web c t trc, v n khng cn quan tm l trang web c h tr bi ASP trn IIS, hay servlet trn Apache/Tomcat,... Tuy nhin, trn thc t, khi ton b h thng phn tn c pht trin mi, th Java nn c dng mi mc. Phin bn Java doanh nghip, Java 2 Enterprise Edition, hay J2EE l mt tp cc chun p dng cng ngh Java cho cc hot ng loi doanh nghip (enterpriseclass), v d nh: * * * * * * Dch v HTTP, bao gm ng dng Web v dch v Web (Web service) Lu tr v ly d liu t c s d liu quan h X l giao tc trc tuyn Thc hin i tng phn tn (bng CORBA) Truyn thng ip tin cy gia server v cc tin trnh X l ti liu XML

Ta xt thut ng Enterprise software (phn mm doanh nghip). y l mt thut ng c nh ngha khng cht. Ni chung, ta nh ngha cc h thng mc doanh nghip bng cc yu cu v nhu cu khi thc thi. * Trong bt k lnh vc v mc no, cc h thng doanh nghip thng phi chu p lc rt cao: x l hay lu tr nhiu d liu, x l nhiu yu cu, thng l thng xuyn, nhiu cng vic phi lm cho client. H thng phi c kh nng nng cp, v phi hot ng c hiu qu di p lc cao. * H thng phi c tnh sn sng (available). * Qun l d liu ng dng phi tha mn tt c tnh cht ca giao tc ACID: atomicity (tnh nguyn t), consistency (tnh ton vn), isolation (tnh tch bit), v durability (tnh bn vng). Ni chung, iu ny c ngha l server phi h tr mt chun tin cy rt cao trong vic x l d liu. * Cc chc nng d liu v ng dng phi an ton (secure): iu ny bao gm cn phi c xc thc, v chnh sch cp quyn. * Truyn thng ip gia cc thnh phn phi ng tin cy (reliable) iu ny cng ging nh tnh ACID ca giao tc, nhng y ta p dng cho cc thng ip ca ng dng. Kin trc Ba-tng (Three-tier) Mt ng dng J2EE nn thc hin theo kin trc ba tng (three-tier architecture), bi v n s phn chia r rng trch nhim cho tng tng khc nhau trong m hnh ng dng.

Hnh 3. Kin trc three-tier * Tng trnh din (presentation tier) ch m nhn phn biu din thng tin n server v thu thp d liu nhp ca ngi dng. N khng bit hoc khng quan tm n cch m thng tin c pht sinh, mc d n bit mt s iu v hnh dng (shape) ca thng tin. * Tng lun l nghip v (business logic tier) (hay i khi cn gi l domain, hay n gin l tng gia (middle tier) m nhn chc nng li ca ng dng: cc tnh nng v cc hm bin dch hay thay i d liu, cc lut phi c p dng cho d liu khi n thay i. Tng ny cung cp cho tng trnh din trc n, v cng l phng tin cho vic lu tr v nhn d liu ca tng sau n. * Tng persistent qun l lu tr bn vng v ly d liu ng dng. Tng ny c th bao gm m chng trnh cng vi h qun tr c s d liu quan h. M hnh mu c th biu din nh Hnh 4:

Hnh 4. M hnh mu kin trc three-tier * JavaServer page v servlet, qun l bi mt Web server J2EE, xc nh tng trnh din y l giao din do server qun l. * Mt lp xc nh ca Enterprise JavaBean c gi l session bean thc hin logic nghip v. * JDBC l mt loi khc ca EJB, entity bean, qun l d liu trn cc RDBMS. Tuy nhin client khng dy (wireless client) l mt dng client c bit. N cn phi c server phc v c bit: d liu phi c x l c bit cho loi client ny. H tr cc thit b MIDP thng qua tng mi gii (Mediation) Vic chun b c bit d liu t tng gia cho mt dng trnh din c bit c gi l s mi gii (mediation). Tng mi gii (mediator tier) l mt tnh nng thng thng ca cc h thng N-tng, thng c trin khai h tr vic dng nhiu khung (framework) trnh din khc nhau cho cng mt tng domain.

Hnh 5. V tr ca tng mi gii i vi cc MIDP client, s mi gii thng l dng mt gateway, bin dch ni dung mc PC sang ni dung mc micro, v c th x l chuyn i giao thc, v d nh: * Ni dung HTML c th c bin dch thnh Wireless Markup Language, hay WML * Giao thc c bn c th chuyn t HTTP sang Wireless Application Protocol hay WAP * Cc datagram s khng c cung cp bng User Datagram Protocol (UDP) m bng Wireless Datagram Protocol hay WDP. Kin trc cui cng s l mt trong hai bin th ca kin trc N-tng ca kin trc J2EE m ta thy trn.

* Mediation ca domain:

Hnh 6. Mi gii ca tng domain * Mediation/Translation ca tng trnh din:

Hnh 7. Mi gii ca tng trnh din MIDP client s da nhiu vo phn mm J2EE v cc gateway hay tng mi gii n gin ha hay nh dng ni dung cho vic trnh din v x l ngi dng di ng. Cc dch v Web (Web service) ng dng Web dn dn ang chia s vi dch v Web, l mt thnh phn cung cp truy xut programmatic trc tip n tng business/domain, nhng vn s dng cc giao thc Web chp nhn v phc v yu cu.

Hnh 8. Dch v Web Cc MIDlet c th l cc client ca cc dch v Web, nhng vn cn phi c s mi gii. C hai n lc h tr MIDP truy xut cc dch v Web: * Mt tp con ca Java API for XML Processing ang c a vo MIDP 2.0 API * Mt c t mt Web-service gateway ang c pht trin, s trnh vic x l XML trong MIDlet.

Tng bc lp trnh cho in thoi di ng J2ME - Phn 7

Lp trnh Web Service vi MIDP Lp trnh mng MIDP trn HTTP client Khi qut c t MIDP 1.0 pht biu rng cc trin khai ca MIDP trn thit b di ng bt buc phi h tr t nht l kt ni HTTP 1.1 s dng khung kt ni chung (GCF Generic Connection Framework). S dng kt ni client HTTP 1.1 ngha l thit b gi mt yu cu (request) v server gi v mt hi p (response) tng ng.

Hnh 1. HTTP client request-response Bng cch ch dng kt ni HTTP client ngha l server khng th thit lp lin lc vi thit b ngoi tr bng cch hi p mt request. Mt MIDlet HTTP client thng thng s dng c hai phng thc HTTP GET v POST. c t MIDP 2.0 pht biu rng c HTTP v HTTPS bt buc phi c h tr. Thn ca thng ip HTTP Thng tin gi trong thn thng ip HTTP request v response n gin l mt lung byte. MIDlet v servlet chn kiu nh dng thng tin m ha cc byte ny. Thn ca thng ip SOAP/HTTP Cc im cui dch v Web da trn SOAP trao i cc thng ip SOAP vi nhau. HTTP l mt c ch mc nh dng truyn thng ip SOAP. Thng ip SOAP cha d liu theo nh dng XML. Thng ip XML c th dng c UTF-8 hay UTF-16 lm bng m v m ha. Khi qut v dch v Web (Web service), SOAP v WSDL Thut ng Dch v Web (Web service) ni n truyn thng ng dng-n-ng dng (application-to-application). Mt dch v Web n gin l mt dch v trn Internet c kh nng c truy xut thng qua giao din theo khun dng s dng cc giao thc Internet chun nh HTTP. World Wide Web Consortium (W3C) nh ngha dch v Web nh sau: Mt dch v Web l mt h thng phn mm c nhn dng bng mt URI (Uniform Resource Identifier), m cc giao din chung v s gn kt ca n c nh ngha v m t bng XML. nh ngha ca n c th c nhn ra bng cc h thng phn mm khc. Cc h thng ny sau c th tng tc vi dch v Web theo phng cch c m t trong nh ngha ca n, s dng cc thng ip theo XML c chuyn bng cc giao thc Internet. Hai c t quan trng v dch v Web l Ngn ng m t dch v Web (Web Services Description Language WSDL) v Giao thc truy xut i tng n gin (Simple Object Access Protocol SOAP). WSDL c dng m t mt dch v Web c trin khai. SOAP c dng nh ngha nh dng ca thng ip c trao i gia cc im cui (th d nh client v server) ca dch v Web trong sut qu trnh hot ng ca dch v Web . Mt dch v Web c th t ng k mt ni ng k thch hp (v d bng cch cung cp m t WSDL ca n) client c th nhn ra n. Cc tin trnh ny c gi l qu trnh ng k v nhn bit dch v. Java, Web service v SOAP Lnh vc dch v Web ang pht trin nhanh chng. Ti thi im ny y ban cng

ngh Java (Java Techonology Community) xy dng phin bn u tin ca Java API cho RPC da trn XML (Java API for XML-based RPC JAXRPC) cho J2SE. Mt gi ty chn cho dch v Web trn J2ME cng ang c xy dng. c t MIDP 1.0 v MIDP 2.0 khng xc nh bt k h tr no cho XML hay SOAP. Cc nh pht trin MIDP mun s dng XML hay SOAP thng phi s dng cc th vin bn ngoi. iu ny rt bt li v mi MIDlet phi cha cc th vin ny. Cc th vin nh vy thng khong 25 n 50 KB (kch thc file .class). iu ny c kh nng s lm gim khng gian cho ng dng MIDlet. Lun n ny c pht trin bng cc th vin m KXML v KSOAP. Mt vi th vin XML v SOAP khc nhm n thit b J2ME cng c th d dng c tm thy, v c th c s dng theo phng cch tng t. Ti u ha truyn thng Client/Server cho cc ng dng di ng ng dng di ng client/server Ngoi cc ng dng chy n trn thit b di ng khng cn tng tc vi ti nguyn bn ngoi, cn c nhu cu mt mi trng phn tn vi client c nhu cu lin lc vi server s dng kt ni IP. Ta s xt mt s vn in hnh v lin lc client/server c th pht sinh trong qu trnh kt ni gia Java 2 Platform, Enterprise Edition (J2EE), nn tng server v MIDlet. Tip theo s so snh cc giao thc khc nhau, c th c dng pht trin cc loi ng dng phn tn ny. Ngoi ra, lp trnh vin c th s dng thm cc tng tru tng gia giao thc chuyn vn, da trn HTTP, v chnh ng dng xy dng mt kin trc linh ng c th c ti u ha. Vi cch tip cn ny, giao thc chuyn vn c chn c th c chuyn i tng i d dng m khng cn phi hiu chnh logic ca ng dng. y ta s dng mt proxy servlet c th nng cao hiu qu ca cc ng dng di ng client/server. Trn thc t, v s ng dng Mobile Information Device Profile (MIDP) khng ch chy trn cc thit b di ng, m cng c truy xut n server, v do th hin mt ng dng phn tn. Nhiu ng dng di ng ch tht s hot ng khi kt ni n server. Kt ni c th lun lun m (always on) hay ch m khi ng dng cn lin lc vi server. S dng cch tip cn phn tn, ng dng di ng c th truy xut n cc c s d liu ngoi, v nhng cng vic qu phc tp i vi kh nng hn ch ca thit b MIDP c th c chuyn n cho mt server mnh hn. Do , li gii cho ng dng di ng doanh nghip ch c th thc hin thng qua tng tc gia J2EE v Java 2 Platform, Micro Edition (J2ME). Tuy nhin, trong qu trnh trao i d liu gia server v client di ng, cn phi quan tm n cc vn lin quan, c bit l cc vn lin quan n hiu sut truyn ti v x l d liu trn thit b. i vi gii php doanh nghip da trn cng ngh J2ME, cn phi quan tm n s hn ch ca c kt ni mng v ti nguyn ca thit b, khng ging nh mi trng thng thng ca my tnh c nhn vi kt ni mng c nh. iu ny c ngha l nh pht trin nn lng trc c cc khong thi gian tr di trn bng thng hn ch. Hn na, bt k trong tnh hung no cng khng nn cho rng thit b di ng lun lun c kt ni. V ti nguyn, ta phi i mt vi vn kh nng tnh ton hn ch cng vi kh nng lu tr tng i ca thit b. Do , trc khi pht trin mt ng dng phn tn cho client di ng, ta cn phi xem xt k cc yu t trc khi chn giao thc, bi v quyt nh ny c th c nh hng ln n hiu sut ca ng dng. HTTP l mt giao thc lin lc client/server l tng cho ng dng Java di ng. i vi mi c t, thit b tng thch MIDP 1.0 phi h tr HTTP. Cc giao thc khc nh TCP hay UDP l ty chn. Bi v khng phi tt c thit b MIDP u h tr truyn thng socket hay datagram, do trin khai HTTP trn thit b di ng cho php ti u kh nng chuyn i gia cc thit b t cc nh sn xut khc nhau.

Mc d mt s thit b, nh Nokia 6800 h tr kt ni socket, nhng tng thch ti a, nn s dng HTTP lm giao thc trao i gia client v server. Mt li im khc na l giao thc HTTP c hng truy xut khng li (troublefree access) thng qua tng la. Bi v server v client di ng hu nh c tch bit bng firewall, HTTP khng cn phi cu hnh thm. Mc d vy, ta cng nn qua tm n cc ri ro bo mt c th c khi m kt ni HTTP ra th gii bn ngoi. Java cung cp API lp trnh mng, h tr giao thc HTTP 1.1. Ta d dng to ra cc request GET, POST, v HEAD trong ng dng Java. Cc loi giao thc khc nhau By gi ta chn HTTP lm giao thc chuyn vn, vai tr ca ngi pht trin l phi quyt nh nh dng thng ip trao i d liu gia server v client. Nn tng J2ME khng a ra cc c ch c chun ha nh Java Remote Method Invocation (RMI) v Java API for XML-based Remote Procedure Call (JAX-RPC) (vn rt tn ti nguyn), ngi pht trin phi t mnh nh ngha nh dng v lp truyn thng trn lp chuyn vn HTTP. C nhiu s la chn, ta s xem xt chi tit di y. Ch yu c hai cch nh ngha nh dng thng ip: Mt l nh dng thun nh phn, c ti u ha bo m hiu sut cao nht. Hai l nh dng phc tp da trn XML, v d nh SOAP, cung cp kh nng c v kh chuyn cao, nhng hiu sut rt km, c bit l vi cc thit b di ng vi bng thng v tc x l hn ch. Ngi pht trin phi i mt vi th thch l phi la chn gii php tt nht cho ng dng. V c bn, kch thc ca giao thc tng tng ng vi kh nng t m t, do lm gim hiu qu truyn thng trn mng in thoi di ng bng thng hp. Tng kh nng human-readability, th ng thi cng gia tng cc nh dng da trn XML, cng nh hiu sut tnh ton pht sinh v phn tch cc thng ip n.

Hnh 2. Biu so snh cc giao thc lin lc khc nhau nh dng nh phn c quyn (Proprietary Binary Format) nh dng ny c kh nng linh ng cao v c th c pht sinh mt cch d dng
Tng bc lp trnh cho DTDD J2ME - Phn 8

Cc vn thit k ng dng Enterprise khng dy p dng cng ngh Java M hnh lp trnh c bn Hnh 1 biu din cu trc tng qut ca mt ng dng enterprise khng dy in hnh, bao gm mt thit b J2ME v mt server J2EE.

Find best mobile with best price www.thongtinmobile.com

Hnh 1. Kin trc mc cao ca mt ng dng enterprise Java khng dy. Kin trc ca mt ng dng enterprise phc v cc client khng dy cng tng t nh ca mt ng dng J2EE chun: Mt client ng dng s dng MIDP hay c gi l MIDlet client, cung cp giao din ngi dng trn thit b di ng. MIDlet giao tip vi mt Java servlet, thng l thng qua HTTP, v trn mt knh truyn bo mt khi cn thit. Servlet dch yu cu t MIDlet, v ti lt n, gi yu cu n cc thnh phn EJB. Khi cc yu cu c tha mn, servlet pht sinh mt hi p cho MIDlet. Cc thnh phn EJB, hay cc enterprise beans, bao bc logic nghip v ca ng dng. Mt trnh cha EJB cung cp cc dch v chun nh giao tc, bo mt, v qun l ti nguyn cc nh pht trin c th tp trung vo vic thc hin logic nghip

v. Cc thnh phn servlet v EJB c th s dng cc API b sung truy xut d liu v dch v. V d, chng c th s dng JDBC API truy xut c s d liu quan h, hay JavaMail API gi e-mail cho ngi dng. H tr nhiu loi client Nn tng J2EE nhn mnh vo cc thnh phn c th ti s dng. ng dng c th dng cc thnh phn ny h tr nhiu loi client m khng (hay t) nh hng n logic nghip v chnh ca ng dng. Hnh 2 biu din kin trc ca mt ng dng vi client J2ME v client trnh duyt.

Hnh 2. Kin trc mc cao ca mt ng dng J2EE h tr client J2ME v client trnh duyt

Find best mobile with best price www.thongtinmobile.com


Cc vn khi thit k v thc hin Ta xem xt mt s vn khi thit k v thc hin cc ng dng enterprise khng dy. Xy dng ng dng khng dy c nhng rng buc c th. V khi thit k cc ng dng khng dy, ta s gp phi ba vn sau: rng buc thit k (design

constraint), thng ip (messaging), v trnh din (presentation). Rng buc thit k (Design Constraint) Hn ch ca cc thit b di ng dn n nhiu rng buc khi thit k cc ng dng khng dy. Cc ng dng ny phi cung cp cc giao din c ch v tin li trong khi phi i mt vi kch thc mn hnh, kh nng nhp liu, sc mnh x l, b nh, lu tr, v thi gian s dng ngun pin b hn ch. Nht l cc ng dng enterprise khng dy cng b rng buc, bi v chng da vo mng. Cc hn ch do mng di ng nh hng n ng dng di ng nhiu hn so vi trnh duyt Web thng thng. Ni chung, cc thit b di ng s gp phi cc vn sau: tr cao Bng thng hn ch Kt ni khng lin tc gii quyt cc rng buc ny, client MIDP c th s dng cc cch sau: Ch kt ni vo mng khi cn thit. Ch s dng d liu ng mc cn thit. Phi c kh nng s dng khi ngt kt ni. Truyn thng ip Mc d MIDP khng c cc c ch truyn thng client/server phc tp, nh Java Remote Method Invocation (RMI) hay Java API for XML-based Remote Procedure Calls (JAX-RPC), cc nh pht trin vn c th thit k mt giao thc truyn thng ip s dng nh dng v cch trao i theo mnh. i vi hu ht cc ng dng, HTTP xng ng l mt giao thc truyn thng ip c bn, v n c a chung hn so vi cc phng thc truyn thng khc (v d nh da trn socket hay datagram) v cc l do sau y: Tt c cc thit b MIDP phi h tr lp trnh mng MIDP. Do , cc ng dng ch da vo HTTP s c tnh kh chuyn trn cc thit b khc nhau. Mt khc, khng phi tt c cc thit b MIDP u h tr truyn thng da trn packet hay datagram, do cc ng dng s dng cc phng thc ny khng bo m tnh kh chuyn. HTTP c kh nng bo mt tng la (firewall). Hu ht server c tch bit khi client di ng bng firewall, v HTTP l mt trong s t cc giao thc m hu ht cc firewall u cho php i qua. Cc API lp trnh mng ca Java lm cho lp trnh HTTP d dng hn. MIDP h tr HTTP 1.1 v cc API pht sinh cc GET, POST v HEAD request, cc thao tc header c bn, v c ch lung cho thng ip. Trong khi , API cho Java servlet, cung cp kh nng x l HTTP request v sinh cc HTTP response kh mnh. Khi mt MIDP client lin lc vi mt Java servlet th cc s vic sau xy ra:

Client m ha application request v ng gi n vo mt HTTP request. Cc Content-Type v Content-Length header phi c thit lp bo m cc gateway trung gian x l request ng n. Servlet nhn HTTP request v gii m application request. Server hay mt thnh phn khc (v d nh enterprise bean) thc hin cng vic xc nh bi application request. Servlet m ha application response v ng gi n vo mt HTTP response. Content-Type v Content-Length header cng phi c thit lp ng bo m cc gateway trung gian x l response ng n. Client nhn HTTP response v gii m application response cha trong . Client c th thit lp mt hoc nhiu i tng v thc hin mt s cng vic trn cc i tng cc b ny. Thit k nh dng thng ip (Message Format) Cch nh dng application request v response l ty thuc vo lp trnh vin. Cc la chn ri vo hai cch sau: Mt cch l dng nh dng nh phn. Cc thng ip nh phn c th c c v ghi s dng cc lp DataInputStream v DataOutputStream trong gi java.io. Trn thc t, s dng cc thng ip ny t c hiu qu trao i bi v ti c rt gn. Ch rng tit kim khng gian, cc thng ip phi tha mn tnh t miu t (self-descriptive). Do , nh dng ca thng ip phi c bit c client v server, v do chng gn cht vi nhau. Cch khc l s dng Extensible Markup Language (XML). Trong khi nn tng J2EE cung cp rt nhiu h tr cho XML (c bit l trong Web service), th c t MIDP khng yu cu h tr XML, mc d cc nh pht trin c th thm h tr XML vo ng dng MIDP bng cch kt hp cc th vin b sung. phn tch v x l ti liu XML, cc nh pht trin c th la chn nhiu cch thc hin, bao gm hai m hnh x l ph bin, Document Object Model (DOM) v Simple API for XML (SAX). (SAX v cc b phn tch da trn s kin khc thch hp hn DOM khi p dng cho cc thit b di ng vi b nh v tc x l b hn ch). Cc th vin RPC da trn XML cng c cung cp, bao gm cc b phn tch da trn c t Simple Access Object Protocol (SOAP). Tuy nhin khi s dng nh dng XML, ngoi vic chi ph cho kch thc v bng thng, cn c chi ph khng nh v b nh, x l v lu tr. Lin quan n truyn thng ip, ta c cc vn sau: Lin lc an ton (Communicating Securely) Cc client MIDP c th da vo mt s c ch ging cc c ch dng h tr lin lc an ton gia cc ng dng J2EE v cc client trnh duyt Web. Server ng dng J2EE v nhiu thit b MIDP h tr HTTP trn Secure Sockets Layer (SSL). Cc thit b MIDP s dng secure HTTP xc thc vi server v tin hnh trao i an ton vi server . Khung kt ni tng qut (Generic Connection Framework) trong MIDP cho php ngi lp trnh m kt ni secure HTTP ch n

gin bng cch gi phng thc Connector.open() vi URL bt u bng https. xc thc pha client, cc MIDP client da vo vic xc nhn do ng dng qun l, c th da vo c ch t ng k. Ni cch khc, MIDP client gi thng tin y nhim (v d nh tn ng nhp v mt khu) n ng dng J2EE, v ng dng s xc nhn cc thng tin ny, c th bng cch s dng c s d liu. Qun l giao tc Nn tng J2EE h tr giao tc theo nhiu cch. Cc nh pht trin c th qun l giao tc mt cch th cng s dng Java Transaction API, hoc da vo server J2EE qun l cc giao tc mt cch t ng. Enterprise bean thng thng c thc hin giao tc, nhng cc thnh phn nghip v trong tng Web cng c th thc hin giao tc. Khi thit k mt MIDP client, nh pht trin nn quan tm n vic giao tc khng th tri qua nhiu HTTP request (Cc client trnh duyt cng b nh hng bi gii hn ny). Nu mt request xc nh bt k hot ng no yu cu mt giao tc, th cc hot ng c x l nh mt n v nguyn t; trc khi tr v response, tt c cc hot ng u c thc hin, hoc khng c hot ng no c thc hin. Do , nu mt MIDP client mun hon li mt request, th n khng th a ra mt rollback trong request k tip, bi v request k tip s nm trong mt ng cnh giao tc khc. Thay vo , ng dng phi s dng mt giao tc b (compensating transaction) hon li request . Qun l li Khi server J2EE khng th thc hin request cho MIDP client, n cn phi thng bo iu ny cho client. Mc d chng trnh ca server c th s dng c ch qun l ngoi l ca Java x l li cc b, n khng th s dng c ch ny thng bo li cho MIDP client khi lin lc trn mng. Ni cch khc, lp trnh vin khng th ci t mt khi try-catch trong m client bt trc tip ngoi l c nm ra t server. Thay vo , h phi t chc mt c ch thng bo li vo giao thc truyn thng ip ca h. Mt cch l dnh mt phn c nh trong mi response ca ng dng cho mt m trng thi th hin l request ca ng dng c thnh cng hay khng. V d, khi s dng truyn thng ip nh phn, hai byte u tin c th dnh cho m trng thi s nguyn. Khi s dng HTTP, cc nh pht trin ng dng c th dng m trng thi ca HTTP response th hin thnh cng hay tht bi mc truyn thng. V d, m trng thi ca 200 (OK) c th dng ch thnh cng, trong khi m trng thi 500 (Internal Server Error) c th dng ch tht bi. Cc chin lc v trnh din (presentation) Ngi dng tng tc vi ng dng cng tp trung v trc tip, th ngi dng cng c d dng s dng. iu ny c ngha c bit quyt nh cho cc ng dng khng dy do mn hnh hin th v kh nng nhp liu ca cc thit b di ng b hn ch. Cc nh pht trin c th s dng mt vi chin lc lm cho cc ng dng khng dy c kt ni mng tng tnh hu dng hn: thc hin kim tra pha client, cung cp biu th din tin, cho php ngt cc hot ng, v c nhn ha ng dng. Ta s nghing cu cc chin lc ny.

Thc hin kim tra pha client Vic kim tra nhp liu pha client l mt phng thc tt gim vic gi n server. Xt mt form t hng, c cc trng thng tin th tn dng. Mt MIDlet c th khng th kim tra thng tin ny mt mnh n c, nhng chc chn n c th p t mt s phng cch kim tra n gin xc nh thng tin c hp l hay khng. V d, n c th kim tra tn ch th khng th l null, hoc ch s th phi c cc con s. Nu d liu nhp c qua cc bc ny, client s chuyn chng n server. Server c th x l cc cng vic phc tp hn, v d nh kim tra s th tn dng c tht s thuc v ch th hay khng hoc ch th cn tin hay khng. Bng cch thc hin vic kim tra nhp liu pha client, cc MIDlet c th trnh vic lin lc khng cn thit n server. Cc MIDlet c th ch ng hn trnh vic nhp liu khng hp l. V d c th gii hn vic nhp s in thoi bng cch s dng trng nhp rng buc s, do cc s in thoi khng phi l s s khng th c gi n server. Cung cp biu th din tin (process indicator) Bi v cc hot ng kt ni mng tn nhiu thi gian, ng dng nn cung cp cho ngi dng mt thng tin phn hi v din tin ca hot ng . V d c th a ra mt hot hnh hoc gauge biu th din tin. Biu th din tin ny dng cho cc hot ng ko di, v d nh khi download danh sch cc trng trn mng. Cho php ngt hot ng Cho php ngi dng c kh nng ngt cc hot ng ko di gip h gi vic iu khin ng dng. Cc biu th din tin c th c thm mt nt nhn ngng. Biu th ny s lng nghe s kin ca nt nhn ngng, v khi nhn nt ngng mn hnh hin th s ngay lp tc chuyn sang mn hnh trc y. Cn ch rng, khng phi tt c cc hot ng u c th dng. V d, khng nn dng vic to mt ti khon ngi dng trn server v lu li trn client. Hai cng vic ny nn thc hin nh l mt hot ng chung hoc l khng thc hin c hai. Nu hot ng b ngt, s c th dn n s khng thng nht gia d liu ca client v server. C nhn ha ng dng Khi nim c nhn ha (personalization) ch kh nng mt dch v thch ng vi thng tin m n bit v ngi dng. Thng thng, nhiu thng tin ca ngi dng, chng hn nh a ch, m ZIP, hay mu sc a thch, s khng thay i t phin lm vic ny sang phin lm vic khc. Bi v cc d liu ny l n nh, ng dng c th dng n c nhn ha vic s dng ca ngi dng. Vic c nhn ha mt dch v l c li v hai l do sau: N gim vic yu cu nhp liu. Ngi dng s chn nu phi nhp i nhp li cc thng tin ny mi ln s dng dch v. N s rt ngn dng chy cng vic (workflow). Ngi dng c th nhp thng tin ti khon vo ln u, v client s gi li thng tin ng nhp ca h. Trong cc ln s dng sau , ngi dng c th la chn t ng ng nhp m khng phi qua mn hnh ng nhp. Trong khi trng thi phin lm vic c th xem l thng tin tm thi, th d liu c

nhn ha s c tnh bn vng. Lu d liu bn vng ny u l ty vo ngi pht trin ng dng. Khi quyt nh lu tr d liu c nhn ha, cc nh pht trin phi xem xt cc cu hi sau: D liu c nhn ha c thng xuyn nh hng n client request khng? V d, ng dng t v s lit k cc rp da vo m vng ca ngi dng. Server lu tr m vng ny, do client khng cn phi gi li m vng mi ln n gi yu cu. Tuy nhin cng nn cho php ngi dng c th b qua m vng ny, v d khi h sang thm mt vng khc. Thng tin c nhn ha c kh nng s dng gia nhiu loi client hay khng? V d, ngi dng s dng ng dng t v trn in thoi di ng c th mun truy xut cng ng dng qua Web. Khi , h c th mun d liu c nhn s c sn trnh vic nhp li n qua Web. Quyt nh ni lu d liu c nhn ha khng phi lun lun l mt quyt nh la chn mt trong hai. D liu c nhn ha c th c lu chng c client v server. Khi d liu c nhn ha c lu chng trn c client v server, ng dng c th cn phi c thm mt s tnh nng ng b ha d liu ny. Cc nh pht trin c khuyn l nn cn nhc n chi ph ca vic thc hin cc tnh nng ny.

Find best mobile with best price www.thongtinmobile.com

You might also like