Tài liệu Xây dựng chương trình tra cứu tỷ giá hối đoái qua mobile: ... Ebook Xây dựng chương trình tra cứu tỷ giá hối đoái qua mobile
48 trang |
Chia sẻ: huyen82 | Lượt xem: 1280 | Lượt tải: 0
Tóm tắt tài liệu Xây dựng chương trình tra cứu tỷ giá hối đoái qua mobile, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Lời nãi đÇu
HÇu hÕt c¸c c«ng nghÖ vÒ Internet ®Òu ®îc thiÕt kÕ cho lo¹i m¸y desktop hay c¸c server kinh doanh đang ch¹y trªn nh÷ng m¹ng tin cËy víi mét b¨ng th«ng t¬ng ®èi cao. ĐiÒu mÊu chèt ®èi víi c¸c thiÕt bÞ kh«ng d©y là chØ nhá gän trong lßng bàn tay nªn cã nhiÒu h¬n sù rµng buéc vÒ m«i trêng tÝnh to¸n. Chóng cã bé nhí nhá, tèc ®é xö lý cña CPU thÊp, c¸c thiÕt bÞ ®Çu vµo kh¸c nhau, vµ màn h×nh hiÓn thÞ nhá h¬n.
KÓ tõ gi÷a nh÷ng n¨m 1990, c¸c giao thøc và c¸c kiÕn tróc kh¸c nhau ®ã ®îc giíi thiÖu víi nh÷ng tháa thuËn ràng buéc. Giao thøc øng dông kh«ng d©y (WAP – Wireless Application Protocol) là mét ®Æc t¶ ®îc ph¸t triÓn bëi WAP Forum ( giao thøc này tËn dông nh÷ng kªnh d÷ liÖu cã s½n trong khi sö dông. Ph¸t triÓn nh÷ng øng dông kh«ng d©y sö dông c«ng nghÖ WAP là c¸ch thøc ®¬n gi¶n ®Ó ph¸t triÓn mét trang web víi mét ng«n ng÷ ®¸nh dÊu (vÝ dô HTML hay XML), bëi v× c¸c c«ng nghÖ WAP là tr×nh duyÖt c¬ së.
MÆt kh¸c, ®Ó tiÕn dÇn ®Õn viÖc ph¸t triÓn c¸c øng dông kh«ng d©y ta sö dông nÒn t¶ng Java 2, Micro Edition (J2METM). Ng«n ng÷ lËp tr×nh JavaTM ®óng mét vai trß quan träng trong lËp tr×nh hiÖn ®¹i. Víi WAP, b¹n cã thÓ sö dông Java Server PageTM và c¸c Servlet Java ®Ó sinh ra c¸c trang WML động (Wireless Markup Language). Tuy nhiªn, víi J2ME, giê ®©y b¹n cã thÓ viÕt c¸c øng dông trong Java và lu tr÷ trùc tiÕp trªn c¸c thiÕt bÞ nhá gän nh Mobile Phone, TabletPC, PDA, Palmtop, Notebook,…
Qua thêi gian häc tËp, nghiªn cøu m«n lËp tr×nh Java, nhãm 1 ®· ®îc giao ®Ò tµi:
“X©y dùng ch¬ng tr×nh tra cøu tû gi¸ hèi ®o¸i qua mobile”
Víi sù gi¶ng d¹y vµ híng dÉn cña ThÇy gi¸o: Ths. D¬ng Th¨ng Long, nhãm 1 ®· hoµn thµnh ch¬ng tr×nh. Song trong qu¸ tr×nh thùc hiÖn, v× yÕu tè thêi gian vµ tr×nh ®é cã thÓ cã nhiÒu ®iÒu cha ®îc thùc hiÖn, mong ThÇy vµ c¸c b¹n ®Ó ch¬ng tr×nh ®îc hoµn thiÖn h¬n.
Xin ch©n thµnh c¶m ¬n!
Sinh viªn
NguyÔn V¨n Minh
(trëng nhãm 1)
Môc lôc
Trang
PhÇn I: Thùc thi tham chiÕu MIDP vµ MIDlet 1
M« t¶ cÊu tróc 1
M«i trêng MIDlet 2
Vßng ®êi MIDlet 4
ThiÕt lËp vµ ch¹y MIDlet 5
Ph©n quyÒn 6
PhÇn II: T¹o MIDlet 8
ThiÕt lËp ban ®Çu 8
CÊu tróc ®èi tîng 9
KiÓm so¸t ®Çu vµo ngêi dïng .11
T¹o ph¬ng thøc vßng ®êi cho MIDlet .12
Th viÖn API (Application Programming Interface) vµ chÕ ®é b¶o mËt .13
PhÇn III: Biªn dÞch vµ kiÓm tra tríc mét MIDlet .15
Biªn dÞch tÖp nguån MIDlet .15
KiÓm tra c¸c tÖp ®· biªn dÞch .16
2.1. KiÓm tra tríc c¸c tÖp class.. … .17
2.2. KiÓm tra tríc vµ s¸t h¹ch l¹i c¸c tÖp class . .172. ríc c¸c tÖp class dÞchng Th¨ng Long
PhÇn Iv: §ãng gãi MIDlet .18
T¹o tÖp JAR .18
T¹o tÖp JAD .21
DÊu hiÖu x¸c nhËn tÖp JAR .22
PhÇn v: ph¸t hµnh MIDlet .25
B¶o ®¶m r»ng web server ®îc cÊu h×nh theo cam kÕt MIME
cho c¸c tÖp JAR vµ JAD .25
§Æt c¸c tÖp JAR vµ JAD vµo trong mét th môc mµ web server
cã thÓ truy xuÊt .. .25
T¹o mét tÖp HTML chøa liªn kÕt tíi tÖp JAD cña b¹n .25
§Æt tÖp HTML vµo trong th môc hiÓn thÞ cña web server .26
KiÓm tra liªn kÕt tõ trang HTML tíi tÖp JAD, vµ tõ tÖp JAD tíi tÖp JAR .26
PhÇn vi: x¸c ®Þnh vÞ trÝ vµ söa lçi .27
Gì lçi MIDlet .27
Têng tr×nh c¸c vÊn ®Ò gÆp ph¶i .28
PhÇn øng dông: x©y dùng ch¬ng tr×nh tra cøu tû gi¸ hèi ®o¸i .30
Giíi thiÖu .30
X©y dùng ch¬ng tr×nh .30
Phô lôc A .44
Tµi liÖu tham kh¶o
PhÇn I
Thùc thi tham chiÕu MIDP vµ MIDlet
Mét øng dông ch¹y trong mét m«i trêng MIDP ®îc gäi lµ mét MIDlet. PhÇn nµy giíi thiÖu sù thùc thi ®Çy ®ñ tham chiÕu MIDP vµ MIDlet.
M« t¶ cÊu tróc
MIDP (Mobile Information Device Profile) lµ mét phÇn cña Java™ 2 Platform, Micro Edition (J2ME™). MIDP ®Þnh nghÜa m«i trêng øng dông Java cho c¸c thiÕt bÞ th«ng tin di ®éng (MIDs) nh lµ ®iÖn tho¹i di ®éng vµ thiÕt bÞ hç trî kü thuËt sè c¸ nh©n (PDAs). Nã ®îc x©y dùng trªn tÇng Connected Limited Device Configuration (CLDC – CÊu h×nh thiÕt bÞ cã giíi h¹n kÕt nèi) vµ tu©n theo ®Æc t¶ tõ MIDP 2.0 [JSR-000118]. §Ó biÕt thªm th«ng tin vÒ ®Æc t¶ MIDP 2.0, b¹n cã thÓ vµo ®Þa chØ:
Mét øng dông ®îc viÕt theo ng«n ng÷ lËp tr×nh Java vµ ch¹y trong m«i trêng MIDP lµ mét MIDlet. Ngêi sö dông kh«ng t¶i vµ ch¹y c¸c MIDlet mµ t¶i vµ ch¹y c¸c bé MIDlet, cã thÓ cã mét hoÆc nhiÒu h¬n c¸c MIDlet ®îc ®ãng gãi khi ph©n phèi, sau ®ã ch¹y mét MIDlet tõ bé MIDlet nµy.
Bé MIDlet ®iÓn h×nh ®îc t¹o ra tõ c¸c MIDlet nh»m thùc thi mét chøc n¨ng t¬ng tù (nh lµ mét nhãm c¸c MIDlet trong mét bé game) hoÆc lµm viÖc cã tæ chøc (nh mét MIDlet cung cÊp c¸c th«ng tin vÒ nhµ hµng vµ mét MIDlet dµnh cho viÖc ®Æt chç tríc. C¸c MIDlet trong mét bé gièng nhau cã thÓ chia sÎ tµi nguyªn cho nhau, nh lµ giao diÖn ®å häa vµ d÷ liÖu. NÕu mét MIDlet lu tr÷ th«ng tin trªn mét thiÕt bÞ th× MIDlet kh¸c trong cïng bé MIDlet nµy cã thÓ truy cËp th«ng tin, vµ mét MIDlet kh¸c n÷a cã thÓ cÊp phÐp xem th«ng tin ®ã.
H×nh díi ®©y sÏ cho c¸c b¹n biÕt cÊu tróc nÒn t¶ng J2ME tõ phèi h×nh MIDP
H×nh 1: CÊu tróc nÒn t¶ng J2ME vµ c¸c øng dông MIDP
M«i trêng MIDlet
Môc nµy ®Ò cËp ®Õn m«i trêng MIDP theo viÔn c¶nh cña nhµ thiÕt kÕ MIDlet. Tõ viÔn c¶nh nµy, m«i trêng MIDlet ®îc xem lµ mµn h×nh c¬ së. §ã lµ sau khi x¸c ®Þnh ®îc c¸c t¸c vô mµ ngêi sö dông sÏ thùc thi víi mét MIDlet, mét nhµ thiÕt kÕ tæ chøc c¸c t¸c vô ®ã lªn trªn mµn h×nh. Ngêi sö dông lít qua c¸c mµn h×nh khi ch¹y MIDlet.
VÝ dô, trß ch¬i PushPuzzle cã thÓ cho phÐp mét ngêi sö dông t¹o mét dÞch chuyÓn trong trß ch¬i, trë l¹i bíc tríc, khëi ®éng l¹i c¸c møc, khëi ®éng l¹i trß ch¬i, thiÕt lËp møc cho trß ch¬i, hiÓn thÞ ®iÓm sè vµ lÊy th«ng tin vÒ trß ch¬i. C¸c t¸c vô ®ã cã thÓ ®îc tæ chøc trong:
Mét mµn h×nh dµnh ®Ó ch¬i trß ch¬i (t¹o vµ gi¶i phãng t¹o dÞch chuyÓn, khëi ®éng l¹i)
Mét mµn h×nh dµnh ®Ó thiÕt lËp møc cho trß ch¬i
Mét mµn h×nh dµnh ®Ó xem ®iÓm sè
Mét mµn h×nh dµnh ®Ó xem “About box” cña øng dông.
Díi ®©y lµ mét sè mµn h×nh cña øng dông PushPuzzle:
H×nh 2: Mét sè mµn h×nh cña trß ch¬i PushPuzzle.
MIDP cã 2 kiÓu mµn h×nh: cã cÊu tróc vµ kh«ng cã cÊu tróc. Mµn h×nh cã cÊu tróc linh ®éng h¬n, nhng (víi mét ngo¹i lÖ ®ã lµ líp CustomItem) kh«ng cho phÐp øng dông truy cËp theo c¬ chÕ ®Çu vµo møc thÊp hay ®iÒu khiÓn mµn h×nh. Mµn h×nh kh«ng cÊu tróc cung cÊp kh¶ n¨ng truy cËp vµo/ra møc thÊp, nhng cã thÓ Ýt linh ®éng h¬n. C¸c mµn h×nh ë h×nh 2 thÓ hiÖn hai kiÓu mµn h×nh: mµn h×nh ®Ó ch¬i trß ch¬i lµ mµn h×nh kh«ng cÊu tróc; mµn h×nh cßn l¹i lµ mµn h×nh cã cÊu tróc.
Mµn h×nh kh«ng cÊu tróc ®îc gäi lµ Canvas. Nã cho phÐp b¹n ®iÒu khiÓn mµn h×nh, cho phÐp b¹n vÏ h×nh vµ nh÷ng ®å häa ®¬n gi¶n (nh h×nh ch÷ nhËt vµ ®êng th¼ng). Nã còng cho phÐp b¹n truy cËp theo c¬ chÕ ®Çu vµo møc thÊp, nh viÖc nhÊn phÝm hoÆc vµo mµn h×nh nÕu thiÕt bÞ ®ã cã hç trî mµn h×nh c¶m øng. H¬n n÷a, mét Canvas th× rÊt h÷u Ých khi b¹n cÇn ®iÒu khiÓn mµn h×nh (nh ch¬i game hµnh ®éng) nhng lµ khã ®Ó t¹o ®é linh ®éng h¬n so víi mµn h×nh cã cÊu tróc.
Cã mét sè kiÓu mµn h×nh cã cÊu tróc. Mçi kiÓu phôc vô cho môc ®Ých riªng, nh dµnh cho viÖc nhËp v¨n b¶n, c¶nh b¸o ngêi sö dông ®èi víi nh÷ng sù kiÖn quan träng, hay cho phÐp ngêi sö dông chän lùa tõ danh s¸ch. Khi b¹n sö dông mét mµn h×nh cã cÊu tróc, b¹n cung cÊp chØ néi dung, nh lµ c¸c phÇn tö trong mét danh s¸ch. MIDP qu¶n lý bÒ ngoµi cña mµn h×nh cã cÊu tróc (nh s¾p xÕp, font, vµ mµu s¾c), nh c¸c t¬ng t¸c møc thÊp víi ngêi sö dông (nh thanh cuén). MIDP còng b¸o cho tr×nh øng dông cña b¹n biÕt khi ngêi sö dông t¹o ra mét hµnh ®éng, nh chän nót OK trªn mµn h×nh (nhËp møc cho trß ch¬i nh h×nh 2). Bëi v× c¸c thùc thi MIDP qu¶n lý giao diÖn cña ngêi sö dông vµ c¬ chÕ vµo/ra, mét MIDlet sö dông mµn h×nh cã cÊu tróc cã thÓ ch¹y trªn nhiÒu thiÕt bÞ vµ kh«ng cÇn ph¶i cËp nhËn m· (code) nh c¸c øng dông kh¸c.
Mét hµnh ®éng ®îc hç trî víi mét mµn h×nh, nh lÖnh OK trªn mµn h×nh nhËp møc cho trß ch¬i ë h×nh 2, ®îc gäi lµ mét lÖnh trõu tîng. Mét mµn h×nh cã thÓ cã mét sè c©u lÖnh trõu tîng; mçi mµn h×nh sÏ cã Ýt nhÊt lµ mét lÖnh. C¸c lÖnh trõu tîng cho phÐp b¹n ®Þnh nghÜa c¸c hµnh ®éng mµ kh«ng cÇn chØ râ giao diÖn ngêi sö dông. MIDP sÏ quyÕt ®Þnh biÓu diÔn chóng. §iÒu nµy t¹o ra c¸c c©u lÖnh trõu tîng mét c¸ch linh ®éng, gièng nh mµn h×nh cã cÊu tróc. C¸c MIDlet sö dông chóng cã thÓ xem xÐt vµ c xö mét c¸ch phï hîp trªn c¸c thiÕt bÞ kh¸c nhau mµ kh«ng cÇn thay m· (code).
Khi biÓu diÔn c¸c c©u lÖnh trõu tîng, MIDP t¬ng thÝch víi quy íc cña thiÕt bÞ (trong ph¹m vi rµng buéc cña §Æc t¶ MIDP 2.0). Mét vµi thùc thi cã thÓ sö dông c¸c nót lÖnh, c¸c thùc ®¬n, v.v… Thùc thi tham chiÕu MIDP sö dông c¸c nót lÖnh kh¸c nhau vµ nÕu cã nhiÒu c¸c lÖnh trõu tîng, sau khi t¹o ra c¸c ¸nh x¹ chuÈn th× sÏ t¹o ra mét thùc ®¬n cho chóng (mét tr×nh ®¬n hÖ thèng). H×nh díi ®©y sÏ chØ ra mét mµn h×nh ®îc quy ®Þnh bëi mét tr×nh ®¬n hÖ thèng, vµ tr×nh ®¬n hÖ thèng xuÊt hiÖn khi ngêi sö dông chän lÖnh Menu.
H×nh 3: Mµn h×nh vµ Menu hÖ thèng hç trî cho c¸c lÖnh trõu tîng.
Tãm l¹i, m«i trêng MIDP lµ mét mµn h×nh c¬ së. Khi b¹n thiÕt kÕ vµ thùc thi mét MIDlet, b¹n cÇn tæ chøc c¸c t¸c vô trong mét tËp c¸c mµn h×nh. C¸c mµn h×nh cã thÓ hoÆc lµ cã cÊu tróc (linh ®éng h¬n) hoÆc kh«ng cã cÊu tróc (nÕu b¹n cÇn cho nh÷ng ®iÒu khiÓn vµo/ra møc thÊp). Mçi mµn h×nh nªn cã mét hay nhiÒu h¬n c¸c ho¹t ®éng hç trî, gäi lµ c¸c lÖnh trõu tîng, nã cho phÐp mét ngêi sö dông thùc thi c¸c t¸c vô khi ch¹y MIDlet.
Vßng ®êi MIDlet
Vßng ®êi cña mét MIDlet bao gåm ba tr¹ng th¸i sau:
Paused – Kh«ng sö dông, nhng cã s½n ®Ó kÝch ho¹t khi cã yªu cÇu.
Mét MIDlet cô thÓ gÇn ®©y ë tr¹ng th¸i Paused hÇu nh n»m gi÷ Ýt tµi nguyªn h¬n so víi khi ho¹t ®éng.
Active - §ang ®îc sö dông, t¬ng t¸c víi ngêi sö dông qua mµn h×nh.
Destroyed – Kh«ng sö dông, còng kh«ng cã s½n.
Mét MIDlet bÞ gi¶i phãng cã thÓ ®îc chän ®Ó thu lîm nh÷ng d÷ liÖu v« nghÜa hoÆc kh«ng thÝch hîp.
Trong mét sè thêi ®iÓm, mét MIDlet cã thÓ dÞch chuyÓn gi÷a hai tr¹ng th¸i ngõng hay kÝch ho¹t. Nã kh«ng thÓ dÞch chuyÓn tõ tr¹ng th¸i gi¶i phãng.
H×nh díi ®©y thÓ hiÖn vßng ®êi cña mét MIDlet:
H×nh 4: Vßng ®êi cña mét MIDlet.
PhÇn sau sÏ m« t¶ c¸ch t¹o mét MIDlet, s¬ ®å tr¹ng th¸i MIDlet dùa trªn c¸c ph¬ng thøc cña MIDlet.
ThiÕt lËp vµ ch¹y MIDlet
Mét MIDlet cã thÓ ch¹y, nã ph¶i ®îc ®Æt lªn trªn thiÕt bÞ. Tõ mét bèi c¶nh cña ngêi sö dông cuèi, c¸c ph¬ng tiÖn t¶i xuèng vµ cµi ®Æt bé MIDlet ®· ®îc ®ãng gãi. (Xem Sö dông MIDP ®Ó biÕt thªm th«ng tin). §Ó cho phÐp nhiÒu ngêi sö dông nhËn mét bé MIDlet trªn thiÕt bÞ, c¸c nhµ thiÕt kÕ ®· ph¶i ®ãng gãi vµ ph¸t hµnh MIDlet (xem phÇn §ãng gãi mét MIDlet vµ Ph¸t hµnh mét MIDlet).
H×nh 5: ThiÕt lËp mét MIDlet - §ãng gãi ®Ó Cµi ®Æt.
Dï thiÕt bÞ cã chÊp nhËn MIDlet hay kh«ng th× ngêi sö dông vÉn cè g¾ng t¶i xuèng vµ cµi ®Æt, ®iÒu nµy ®îc quyÕt ®Þnh bëi chÝnh s¸ch b¶o mËt cña thiÕt bÞ. Mét chÝnh s¸ch b¶o mËt ®Þnh nghÜa c¸c ho¹t ®éng b¶o mËt nh¹y c¶m. C¸c bé MIDlet cã thÓ ®îc phÐp thùc hiÖn. NÕu bé MIDlet ®ã ph¶i thùc hiÖn mét ho¹t ®éng trªn mét thiÕt bÞ kh«ng cho phÐp, thiÕt bÞ ®ã sÏ kh«ng t¶i xuèng vµ cµi ®Æt ®îc.
C¸c chÝnh s¸ch b¶o mËt vµ kh¶ n¨ng h¹n chÕ truy cËp tíi c¸c th viÖn API b¶o mËt nh¹y c¶m lµ ®iÓm míi cña §Æc t¶ MIDP 2.0. §Æc t¶ nµy còng bao gåm kh¸i niÖm vÒ mét bé MIDlet tin cËy, ®ã lµ mét bé MIDlet b¾t nguån tõ mét nguån ®¸ng tin vµ kh«ng bÞ can thiÖp. Mét bé MIDlet tin cËy ®iÓn h×nh cã thÓ thùc hiÖn nhiÒu ho¹t ®éng h¬n mét bé kh«ng ®¸ng tin.
Thñ tôc ®Ó x¸c ®Þnh mét MIDlet cã ®¸ng tin hay kh«ng lµ sù ®éc lËp cña thiÕt bÞ. Thùc thi tham chiÕu MIDP kiÓm tra ch÷ ký ®iÖn tö cña bé MIDlet. (Xem Sö dông MIDP ®Ó biÕt thªm th«ng tin). Bëi v× viÖc kiÓm tra ch÷ ký ®iÖn tö lµ mét c¸ch ®Ó x¸c thùc ®é tin cËy cña mét bé MIDlet. Khi ®ãng gãi, nã sÏ c¶i thiÖn kh¶ n¨ng mµ c¸c thiÕt bÞ tr«ng mong ë bé MIDlet cña b¹n. C¸c chÝnh s¸ch b¶o mËt cña c¸c thiÕt bÞ riªng lÎ, bÊt kÓ nh thÕ nµo, sÏ x¸c ®Þnh cã hay kh«ng nh÷ng ngêi sö dông riªng biÖt cã thÓ t¶i xuèng vµ sö dông hiÖu qu¶ bé MIDlet cña b¹n.
Ph©n quyÒn
Khi mét thiÕt bÞ ®Þnh ra ®îc chÝnh s¸ch b¶o mËt cña nã, nã sö dông c¸c ®Æc quyÒn. Mçi ®Æc quyÒn lµ mét x©u biÓu diÔn mét líp b¶o mËt nh¹y c¶m, gãi, hay chøc n¨ng. Mét chÝnh s¸ch b¶o mËt hç trî c¸c ®Æc quyÒn víi mét chÕ ®é t¬ng t¸c (nh cho phÐp). Khi viÕt mét MIDlet, b¹n cÇn ph¶i quan t©m ®Õn tÝnh b¶o mËt nh¹y c¶m cña th viÖn API (xem môc API vµ chÝnh s¸ch b¶o mËt ë phÇn sau). Khi b¹n ®ãng gãi MIDlet cña b¹n vµo bé MIDlet, b¹n cÇn ph¶i lªn danh s¸ch ®Æc quyÒn cho MIDlet khi ®îc yªu cÇu (xem môc T¹o mét file Jar). Môc nµy sÏ gi¶i thÝch tªn cña c¸c ®Æc quyÒn.
Tªn cña c¸c ®Æc quyÒn chØ râ sù b¶o vÖ cña nã. NÕu mét ®Æc quyÒn ®ang b¶o vÖ mét gãi hay mét líp th× gãi ®ã hay líp ®ã sÏ cã tªn. VÝ dô, mét ®Æc quyÒn b¶o vÖ toµn bé gãi vµo/ra cã tªn lµ javax.microedition.io, trong khi mét ®Æc quyÒn b¶o vÖ líp PushRegistry ®îc gäi lµ javax.microedition.io.PushRegistry. NÕu mét ®Æc quyÒn ®ang b¶o vÖ mét sè chøc n¨ng cña mét gãi hay mét líp, th× gãi hay líp ®ã sÏ cã tªn lµ tiÒn tè, tiÕp theo lµ tªn chøc n¨ng. VÝ dô, mét ®Æc quyÒn b¶o vÖ chøc n¨ng HTTP t¹o s½n qua líp Connector ®îc gäi lµ javax.microedition.Connector.http.
§Æc t¶ MIDP 2.0 ®Þnh nghÜa tªn cña c¸c ®Æc quyÒn theo b¶ng sau:
B¶ng 1: C¸c gãi th viÖn cÊp phÐp ®îc ®Þnh nghÜa trong MIDP 2.0
Chøc n¨ng
Gãi Th viÖn cÊp phÐp
HTTP protocol
javax.microedition.io.Connector.http
HTTPS protocol
javax.microedition.io.Connector.https
Datagram protocol
javax.microedition.io.Connector.datagram
Datagram server protocol (kh«ng cã host)
javax.microedition.io.Connector.datagramreceiver
Socket protocol
javax.microedition.io.Connector.socket
Socket server protocol
(kh«ng cã host)
javax.microedition.io.Connector.serversocket
SSL protocol
javax.microedition.io.Connector.ssl
Comm protocol
javax.microedition.io.Connector.comm
Sö dông registry ®Ó kiÓm so¸t th«ng tin trªn c¸c MIDlet ®ã lµ chøc n¨ng push (MIDlet sÏ ch¹y vµ kiÓm so¸t c¸c th«ng ®iÖp ®Õn)
javax.microedition.io.PushRegistry
PhÇn II
T¹o MIDlet
PhÇn nµy bao hµm nh÷ng c¸ch thøc c¬ b¶n ®Ó viÕt mét MIDlet. VÝ dô MIDlet Hello ®îc hiÓn thÞ nh h×nh díi ®©y. MIDlet nµy cã mét mµn h×nh ®¬n ®Ó hiÖn dßng tiªu ®Ò Hello MIDlet. Mµn h×nh nµy lµ mét textbox ®¶m ®¬ng c«ng viÖc so¹n th¶o vµ hiÓn thÞ x©u “Test string”. Nã cã mét c©u lÖnh trõu tîng ®¬n víi tªn nh·n lµ Exit.
H×nh 6: MIDlet Hello World
ThiÕt lËp ban ®Çu
MIDlet ph¶i ®îc kÕ thõa tõ líp MIDlet. Chóng còng thêng thùc thi ®Çy ®ñ giao diÖn CommandListener. Giao diÖn CommandListener chøa ®ùng ph¬ng thøc thùc thi MIDP gäi ®Ó b¸o cho tr×nh øng dông cña b¹n biÕt ngêi sö dông ®· chon lÖnh trõu tîng.
Líp MIDlet n»m trong gãi javax.microedition.midlet. Giao diÖn CommandListener n»m trong gãi javax.microedition.lcdui, nh lµ mµn h×nh cã cÊu tróc, mµn h×nh kh«ng cã cÊu tróc vµ c¸c lÖnh trõu tîng.
VÝ dô 1: §Þnh nghÜa nhËp khÈu vµ khëi t¹o c¸c líp cho Hello MIDlet
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
/**
* Mét vÝ dô MIDlet víi v¨n b¶n “Hello” vµ lÖnh Exit.
*/
public class HelloMIDlet extends MIDlet implements CommandListener {
// MIDlet sÏ ®îc ®Þnh nghÜa ë ®©y.
}
CÊu tróc ®èi tîng
CÊu tróc mét MIDlet cã thÓ thùc hiÖn mét thiÕt lËp tríc chØ mét lÇn trong vßng ®êi MIDlet. CÊu tróc tiªu biÓu cña mét MIDlet nh sau:
C¸c mµn h×nh cña MIDlet vµ c¸c lÖnh trõu tîng. C¸c mµn h×nh cã thÓ kh«ng xuÊt hiÖn, nh c¸c c¶nh b¸o, kh«ng ®îc t¹o ®Æc thï MIDlet cô thÓ mµ thay vµo ®ã, chóng ®îc t¹o chØ khi chóng ®îc coi lµ cÇn thiÕt.
KÕt hîp víi c¸c mµn h×nh lµ c¸c lÖnh trõu tîng. TÊt c¶ mµn h×nh nªn cã Ýt nhÊt mét lÖnh trõu tîng. Mét c©u lÖnh trõu tîng ®¬n cã thÓ hç trî cho nhiÒu mµn h×nh.
G¸n mét ph¬ng thøc l¾ng nghe sù kiÖn cho mçi mµn h×nh. Ph¬ng thøc l¾ng nghe sù kiÖn lµ líp ®îc thùc thi tõ giao diÖn CommandListener.
ThiÕt lËp c¸c trêng tÜnh hay khëi t¹o. Mét líp MIDlet ®iÓn h×nh cã c¸c trêng ®Ó kiÓm so¸t mµn h×nh vµ c¸c c©u lÖnh trõu tîng.
Ngêi x©y dùng MIDlet còng cã thÓ thiÕt lËp viÖc hiÓn thÞ ban ®Çu cña MIDlet. T¸c vô nµy còng cã thÓ ®îc thùc hiÖn trong ph¬ng thøc startApp (xem T¹o c¸c ph¬ng thøc vßng ®êi ®Ó biÕt thªm th«ng tin).
MIDlet Hello sö dông mét mµn h×nh cã cÊu tróc gäi lµ textbox, MIDlet nµy lu tr÷ mét biÕn khëi t¹o tªn lµ textBox. Bëi vËy, textbox kh«ng cÇn thiÕt lu tr÷ thªm bÊt cø d÷ liÖu nµo hoÆc thùc hiÖn thªm mét chøc n¨ng, nã cã thÓ lµ mét líp cµi ®Æt TextBox. (nÕu nã yªu cÇu thªm chøc n¨ng, nh kh¶ n¨ng truy vÊn mét c¬ së d÷ liÖu ®Ó nhËn x©u khëi t¹o cña nã, b¹n nªn t¹o mét líp con cña líp TextBox).
B¹n cã thÓ t¹o textbox víi tiªu ®Ò, v¨n b¶n khëi t¹o, sè lîng ký tù lín nhÊt mµ textbox cã thÓ chiÕm gi÷, vµ mét gi¸ trÞ biÓu diÔn cho mét sè rµng buéc vµ nh÷ng chØnh söa. Mét rµng buéc lµ mét yªu cÇu mµ thùc thi MIDP sö dông ®Ó giíi h¹n ®Çu vµo cña ngêi sö dông. Mét chØnh söa lµ mét yªu cÇu mµ thùc thi MIDP sö dông ®Ó thay ®æi c¸ch thøc thÓ hiÖn cña v¨n b¶n nhËp vµo vµ hiÓn thÞ.
TextBox cña MIDlet Hello cã tiªu ®Ò lµ “Hello MIDlet” vµ v¨n b¶n khëi ®Çu “Test string”. Nã cã thÓ n¾m gi÷ tíi 256 ký tù. Nã cã rµng buéc TextField.ANY, ®iÒu nµy cã nghÜa lµ textbox cã thÓ chøa ®ùng v¨n b¶n; vÝ dô, nã kh«ng ®îc giíi h¹n ®Ó kiÓm so¸t kh«ng chØ c¸c con sè. Nã còng cã chØnh söa TextField.UNEDITABLE, cã nghÜa lµ ngêi sö dông kh«ng ®îc phÐp thay ®æi nh÷ng g× trong textbox.
MIDlet Hello còng cã mét c©u lÖnh trõu tîng ®¬n, cho phÐp ngêi sö dông tho¸t khái øng dông. Khi t¹o mét lÖnh trõu tîng, b¹n cÇn 3 m¶ng th«ng tin sau:
Label – Mét x©u ®Ó MIDP cã thÓ hiÓn thÞ tªn nh·n cña c©u lÖnh.
Type – Mét h»ng sè th«ng b¸o cho MIDP biÕt lo¹i hµnh ®éng mµ ngêi sö dông sÏ thùc hiÖn víi c©u lÖnh, bëi v× MIDP cã thÓ cung cÊp giao diÖn ngêi sö dông chÝnh x¸c.
VÝ dô: vµi thiÕt bÞ cã mét kiÓu phÝm ®iÓn h×nh sö dông ®Ó quay vÒ tr¹ng th¸i tríc ®ã. Thùc thi MIDP cã thÓ lu«n cè g¾ng g¾n mét lÖnh kiÓu Command.BACK cho phÝm nµy.
Priority – Mét sè nguyªn ®Ó nhËn d¹ng tÇm quan träng khi ®em so s¸nh lÖnh nµy víi lÖnh kh¸c cã kiÓu gièng nhau trªn mµn h×nh; nh÷ng sè nguyªn thÊp h¬n th× cã møc quan träng h¬n.
LÖnh cña MIDlet Hello ®Ó hç trî cho textbox. LÖnh nµy cã nh·n lµ Quit, kiÓu Command.EXIT, vµ møc u tiªn lµ 1.
VÝ dô 2: CÊu tróc c©u lÖnh trong MIDlet Hello
/**
* CÊu tróc HelloMIDlet, mµn h×nh vµ lÖnh cña nã.
* Nã hç trî mµn h×nh vµ lÖnh vµ lu tr÷ viÖc hiÓn thÞ cña MIDlet.
*/
public HelloMIDlet() {
// T¹o mét lÖnh trõu tîng
exitCommand = new Command("Exit", Command.EXIT, 1);
// T¹o mµn h×nh vµ ®a ra mét c©u lÖnh vµ mét ph¬ng thøc l¾ng nghe sù kiÖn
textBox = new TextBox("Hello MIDlet", "Test string",
256, TextField.ANY | TextField.UNEDITABLE);
textBox.addCommand(exitCommand);
textBox.setCommandListener(this);
// ThiÕt lËp hiÓn thÞ ban ®Çu cho mµn h×nh MIDlet
display = Display.getDisplay(this);
display.setCurrent(textBox);
}
C¸c biÕn textBox, exitCommand, vµ display ®îc khai b¸o tríc khi ®Þnh nghÜa líp. §o¹n m· (code) sau chØ ra c¸c trêng trong MIDlet Hello:
VÝ dô 3: C¸c trêng cña MIDlet Hello
// C¸c trêng dµnh cho c¸c mµn h×nh, c¸c lÖnh vµ hiÓn thÞ MIDlet
private TextBox textBox;
private Command exitCommand;
private Display display;
KiÓm so¸t ®Çu vµo ngêi dïng
Sù thùc thi ®Çy ®ñ MIDP sÏ th«ng b¸o cho tr×nh øng dông cña b¹n bÊt cø khi nµo ngêi sö dông ®a ra mét hµnh ®éng (mét lÖnh trõu tîng) ®îc hç trî víi mét mµn h×nh. §Ó thùc hiÖn viÖc nµy nã sÏ gäi ph¬ng thøc commandAction cña giao diÖn CommandListener trªn bé l¾ng nghe sù kiÖn mµn h×nh.
Ph¬ng thøc commandAction sÏ ®a ra c¸c ®èi sè cho hµnh ®éng ®Ó ngêi sö dông lùa chän trªn mµn h×nh hiÓn thÞ (cÇn ph¶i nhËn biÕt mµn h×nh v× b¹n cã thÓ kÕt hîp nh÷ng lÖnh trõu tîng t¬ng tù víi nhiÒu nhiÒu mµn h×nh).
C¸c MIDlet ®îc thiÕt lËp gièng nh trong vÝ dô, víi mét líp l¾ng nghe c¸c lÖnh, ph¬ng thøc commandAction tiªu biÓu lu«n cã mét c©u lÖnh If. VÝ dô, trong ng«n ng÷ tù nhiªn, “NÕu ngêi sö dông chän Quit ®Ó tho¸t MIDlet. NÕu ngêi sö dông chän Go Back th× nÕu nh hiÖn thêi ®ang ë mµn h×nh B sÏ chuyÓn vÒ mµn h×nh tríc ®ã lµ A, nÕu mµn h×nh lµ C sÏ chuyÓn vÒ mµn h×nh B, v.v…”. §o¹n m· (code) díi ®©y chØ ra ph¬ng thøc commandAction cña MIDlet Hello.
VÝ dô 4: Ph¬ng thøc commandAction cña HelloMIDlet
/*
* Ph¶n håi khi ngêi sö dông chän c¸c lÖnh trõu tîng.
* MIDlet nµy chØ cã mét lÖnh tho¸t, ph¬ng thøc nµy ph¶n håi
* b»ng viÖc xãa bá vµ th«ng b¸o cho hÖ thèng r»ng MIDlet
* ®· ®îc gi¶i phãng.
*
* @Tham sè command – c©u lÖnh ®Ó ngêi sö dông chän lùa
* @Tham sè screen – hiÓn thÞ lªn mµn h×nh khi ngêi sö dông chän lÖnh */
public void commandAction(Command command, Displayable screen) {
if (command == exitCommand) {
// Lu«n t¹o ra 2 lêi gäi khi thùc hiÖn tho¸t MIDlet.
destroyApp(false);
notifyDestroyed();
}
}
T¹o ph¬ng thøc vßng ®êi cho MIDlet
Cã 3 ph¬ng thøc vßng ®êi trong mét líp MIDlet. C¸c ph¬ng thøc t¬ng øng víi c¸c tr¹ng th¸i trong vßng ®êi MIDlet, ®îc th¶o luËn trong môc “Vßng ®êi MIDlet”. C¸c ph¬ng thøc ®ã lµ:
startApp – Th«ng b¸o cho MIDlet r»ng võa míi chuyÓn tõ tr¹ng th¸i ngng vÒ tr¹ng th¸i kÝch ho¹t. NÕu MIDlet cña b¹n yªu cÇu chia sÎ mét sè tµi nguyªn khi ch¹y, ph¬ng thøc nµy sÏ triÖu gäi chóng. Khi ®ã nÕu cÊu tróc MIDlet kh«ng thùc thi ®îc th× nã sÏ tr¶ vÒ mµn h×nh ban ®Çu mµ sÏ kh«ng xuÊt hiÖn nh÷ng mµn h×nh tiÕp theo.
pauseApp – Th«ng b¸o cho MIDlet r»ng võa míi chuyÓn tõ tr¹ng th¸i ®îc kÝch ho¹t vÒ tr¹ng th¸i ngng ho¹t ®éng. NÕu MIDlet ®ang kiÓm so¸t tµi nguyªn chia sÎ, ph¬ng thøc nµy sÏ gi¶i phãng chóng (ph¬ng thøc startApp sÏ triÖu gäi chóng khi MIDlet ®îc kÝch ho¹t trë l¹i). NÕu MIDlet ®îc khëi ®éng l¹i víi mét mµn h×nh riªng, ph¬ng thøc nµy sÏ thiÕt lËp b»ng c¸ch gäi ph¬ng thøc setCurrent.
destroyApp – Th«ng b¸o cho MIDlet r»ng chuÈn bÞ ®¨ng ký tr¹ng th¸i Destroyed b»ng c¸ch gi¶i phãng tµi nguyªn cña nã vµ ghi l¹i tr¹ng th¸i. Kh«ng gièng nh c¸c ph¬ng thøc vßng ®êi kh¸c, ph¬ng thøc nµy ®a ra mét ®èi sè ®Ó chØ ®Þnh khi nµo MIDlet ph¶i ®îc gi¶i phãng. NÕu ®èi sè nµy lµ false (viÖc gi¶i phãng ®îc yªu cÇu nhng kh«ng b¾t buéc), b¹n cã thÓ cã yªu cÇu MIDlet ®îc gi¶i phãng chËm h¬n b»ng ph¬ng thøc nÐm ra mét MIDletStateChangeException.
C¸c ph¬ng thøc vßng ®êi ®îc khai b¸o abstract (trõu tîng); b¹n ph¶i thùc thi ®Çy ®ñ chóng trong líp con MIDlet hîp lÖ thuyÕt minh cho MIDlet cña b¹n. §o¹n m· sau cho biÕt vßng ®êi cña MIDlet Hello. Bëi v× MIDlet kh«ng sö dông tµi nguyªn chia sÎ, c¸c ph¬ng thøc trèng.
VÝ dô 5: C¸c ph¬ng thøc vßng ®êi cña HelloMIDlet
/**
* Khëi ®éng MIDlet; ph¬ng thøc nµy kh«ng lµm g× c¶ bëi v×
* MIDlet kh«ng ®ßi hái tµi nguyªn chia sÎ.
*/
public void startApp() {
}
/**
* T¹m ngng MIDlet; ph¬ng thøc nµy kh«ng lµm g× c¶ bëi v×
* kh«ng cã c¸c ho¹t ®éng nÒn hay tµi nguyªn chia sÎ
* ®îc ®ãng..
*/
public void pauseApp() {
}
/**
* Gi¶i phãng MIDlet; ph¬ng thøc nµy kh«ng lµm g× c¶ bëi v×
* kh«ng cã thø g× ®Ó dän dÑp – tøc lµ kh«ng ®îc kiÓm so¸t bëi
* bé thu gom r¸c.
*
* @Tham sè unconditional – MIDlet ph¶i ®îc gi¶i phãng.
* NÕu lµ true, MIDlet ph¶i dän dÑp vµ gi¶i phãng tÊt c¶ tµi nguyªn.
* NÕu lµ false, MIDlet cã thÓ nÐm ra ngo¹i lÖ MIDletStateChangeException ®Ó
* chØ ®Þnh lµ MIDlet sÏ kh«ng ®îc gi¶i phãng vµo thêi ®iÓm nµy.
*/
public void destroyApp(boolean unconditional) {
}
Th viÖn API (Application Programming Interface) vµ chÕ ®é b¶o mËt
ChÕ ®é b¶o mËt MIDP 2.0 sÏ b¶o vÖ th viÖn c¸c gãi trong th viÖn API. C¸c gãi API trong b¶ng díi ®©y lµ b¶o mËt thËt träng. NÕu sö dông chóng trong MIDlet cña m×nh, b¹n ph¶i cã kiÕn thøc khi ®ãng gãi nã vµo trong bé MIDlet.
B¶ng 2: C¸c API dïng ®Ó ph©n quyÒn
API
M« t¶
javax.microedition.io.HttpConnection
API dµnh cho viÖc t¹o c¸c yªu cÇu HTTP
javax.microedition.io.HttpsConnection
API dµnh cho viÖc t¹o c¸c yªu cÇu HTTP b¶o mËt (https://)
javax.microedition.io.Connector
API dµnh cho viÖc t¹o c¸c kÕt nèi cho c¸c giao thøc
HTTP
HTTPS
Datagram
Datagramreceiver
Socket
Serversocket
SSL
Comm
javax.microedition.io.PushRegistry
API dµnh cho viÖc thiÕt lËp MIDlet ®Ó sö dông chøc n¨ng push (®ã lµ, thiÕt lËp MIDlet ®Ó thiÕt bÞ ch¹y vµ kiÓm so¸t ®îc th«ng ®iÖp ®Õn
Kh«ng ph¶i tÊt c¶ c¸c API ®Òu ®îc b¶o mËt. B¶ng díi ®©y chØ ra c¸c API ®îc sö dông réng r·i:
B¶ng 3: C¸c API kh«ng ®ßi hái cÊp phÐp
API
M« t¶
javax.microedition.rms
API dµnh cho viÖc sö dông vËt lu d÷ liÖu l©u dµi trªn thiÕt bÞ
javax.microedition.midlet
Líp MIDlet vµ c¸c API vßng ®êi MIDlet
javax.microedition.lcdui
API giao diÖn ngêi sö dông
javax.microedition.lcdui.game
API dµnh cho c¸c MIDlet lµ c¸c trß ch¬i (game)
javax.microedition.media vµ javax.microedition.media.controls
API dµnh cho viÖc ch¬i c¸c file ©m thanh trªn thiÕt bÞ
PhÇn III
Biªn dÞch vµ kiÓm tra tríc mét MIDlet
Gièng nh tÊt c¶ c¸c øng dông ®îc viÕt b»ng ng«n ng÷ lËp tr×nh JavaTM, b¹n ph¶i biªn dÞch mét MIDlet tríc khi ch¹y nã. Ngoµi ra b¹n cßn ph¶i kiÓm tra tríc MIDlet ®ã. Mçi bíc kiÓm tra tríc sÏ thªm th«ng tin vµo c¸c tÖp .class ®Ó chóng cã thÓ ch¹y trong m«i trêng MIDlet (c¸c tÖp .class nµy vÉn cã thÓ ch¹y b»ng Java 2 Platform, Standard Edition).
Khi ch¹y MIDlet, b¹n sÏ sö dông c¸c tÖp .class ®· ®îc kiÓm tra. Do ®ã, khi biªn dÞch MIDlet, b¹n ®Æt c¸c tÖp ®· ®îc biªn dÞch vµo trong mét th môc t¹m ®Ó kiÓm tra tríc. §Æt ®Çu xuÊt cho viÖc kiÓm tra trong mét vÞ trÝ cè ®Þnh h¬n, tõ ®ã b¹n cã thÓ ®ãng gãi hay thùc thi MIDlet. H×nh sau ®©y sÏ gi¶i thÝch cho qu¸ tr×nh nµy:
H×nh 7: Qu¸ tr×nh x©y dùng mét MIDlet
Biªn dÞch tÖp nguån MIDlet
§Ó biªn dÞch mét MIDlet ta sö dông tr×nh biªn dÞch thêng lÖ javac. Sö dông tïy chän –d ®Ó javac tÊt c¶ c¸c tÖp .class lµ ®Æt vµo trong mét th môc ®¬n t¹m. §iÒu nµy t¹o cho nh÷ng bíc tiÕp theo cña qu¸ tr×nh x©y dùng MIDlet ®îc dÔ dµng h¬n.
VÝ dô, ®Ó t¹o mét th môc ®Çu xuÊt C:\MyMIDlet\tmpclasses, vµ biªn dÞch MIDlet trong th môc ®ã, b¹n nhËp lÖnh tiÕp theo:
C:\cd MyMIDlet
C:\MyMIDlet> mkdir tmpclasses
C:\MyMIDlet> javac –classpath classes -d tmpclasses src/example/HelloMIDlet.java
Cã mét tïy chän cho javac mµ b¹n sö dông nÕu MIDlet cña b¹n ®ang dïng chøc n¨ng push ®îc ®Þnh nghÜa trong §Æc t¶ MIDP 2.0, tïy chän nµy lµ -bootclasspath. (Chøc n¨ng push cho phÐp MIDP thùc thi mét MIDlet ®Ó qu¶n lý mét th«ng ®iÖp ®îc göi ®Õn nã. VÝ dô, nÕu b¹n ®ang viÕt mét MIDlet ®Ó mét ngêi sö dông cã thÓ nhËn c¸c b¸o c¸o vÒ giao th«ng, b¹n cã thÓ cã MIDlet sö dông chøc n¨ng push ®Ó nhËn nh÷ng c¶nh b¸o ®Ò phßng cho tuyÕn ®êng cña ngêi sö dông).
Tïy chän –bootclasspath ph¶i chØ ®Þnh vÞ trÝ cña c¸c tÖp MIDP class (MyMIDlet/classes) bëi v× trËn tù cña c¸c líp trong J2SE vµ J2ME lµ kh¸c nhau. VÝ dô, líp FilterInputStream cña J2SE kh«ng ph¶i lµ phÇn trong J2ME. NÕu MIDlet ®îc biªn dÞch víi c¸c líp J2SE, nã sÏ kiÓm tra lçi tríc (bíc tiÕp theo trong qu¸ tr×nh x©y dùng MIDlet). Víi lùa chän –bootclasspath, javac sö dông c¸c tÖp class trong J2ME.
VÝ dô tiÕp theo sÏ chØ ra c©u lÖnh javac vµ tïy chän –bootclasspath ®îc sö dông ®Ó biªn dÞch MIDlet PushExample:
C:\MyMIDlet> javac –bootclasspath c:/MyMIDlet/classes –classpath
C:/MyMIDlet/classes PushExample.java
Chó ý: C©u lÖnh sö dông c¶ hai tïy chän – bootclasspath vµ -classpath. Tïy chän –classpath cung cÊp n¬i lu gi÷ lÖnh javac ®Ó t×m kiÕm c¸c líp kh«ng cã trong J2SE, nh c¸c líp trong gãi javax.microedition. §iÒu nµy kh«ng ¶nh hëng ®èi víi nÒn t¶ng ®îc sö dông (J2SE hoÆc J2ME). Tïy chän –bootclasspath chØ ®Þnh vÞ trÝ cña c¸c tÖp nÒn t¶ng Java.
KiÓm tra c¸c tÖp ®· biªn dÞch
Tr×nh kiÓm tra tríc t¹o ra c¸c tÖp .class míi chøa th«ng tin thªm vµo trong thùc thi tham chiÕu b¾t buéc. NÕu mét líp kh«ng ®îc kiÓm tra tríc, MIDP sÏ kh«ng cho phÐp sö dông nã (c¸c líp ®· ®îc kiÓm tra tríc vÉn cã thÓ ®îc sö dông víi mét JRE (Java 2 Runtime Environment). Tr×nh kiÓm tra tríc còng cã thÓ kiÓm tra c¸c tÖp class ®Ó ch¾c ch¾n lµ chóng kh«ng sö dông c¸c ®Æc ®iÓm cña ng«n ng÷ lËp tr×nh Java mµ bÞ chÆn bëi ®Æc t¶ CLDC (®Ó biÕt thªm th«ng tin vÒ ®Æc t¶ CLCD, b¹n vµo:
Tr×nh kiÓm tra tríc n»m trong th môc \bin; chøa tÖp thùc thi preverify. Sö dông lÖnh kh«ng cã c¸c tïy chän trî gióp. VÝ dô, b¹n cã thÓ nhËn trî gióp víi c©u lÖnh:
C:\MyMIDlet\bin> preverify
2.1 KiÓm tra tríc c¸c tÖp class
C¸ch ®¬n gi¶n nhÊt ®Ó ch¹y tr×nh kiÓm tra tríc lµ ph¶i t¹o c¸c tÖp .class mµ kh«ng cÇn kiÓm tra c¸c ®Æc ®iÓm ng¨n cÊm.
Víi c¸ch nµy, cã thÓ b¹n muèn sö dông tr×nh kiÓm tra tríc nÕu b¹n biªn dÞch l¹i sau khi ®· Ên ®Þnh ®îc nh÷ng lçi ®¬n gi¶n.
Theo c¸c nµy, ®Ó ch¹y tr×nh kiÓm tra tríc, b¹n ph¶i cung cÊp c¸c líp vµ c¸c tÖp ®Çu vµo ®Ó ®îc kiÓm tra. C¸c tÖp ®Çu vµo cã thÓ lµ th môc chøa c¸c tÖp .class, hoÆc JAR, hay ZIP. NÕu b¹n cung cÊp mét th môc, tr×nh kiÓm tra tríc còng kiÓm tra c¸c th môc con cña nã. VÝ dô sau ®©y sÏ chØ ra c©u lÖnh preverify ®îc sö dông ®Ó kiÓm tra .class trong th môc tmpclasses vµ trong c¸c th môc con cña nã:
C:\MyMIDlet> bin\preverify -classpath classes; tmpclasses tmpclasses
Theo mÆc ®Þnh, tr×nh kiÓm tra tríc sÏ ghi c¸c tÖp class míi vµo th môc ./output. B¹n cã thÓ thay ®æi th môc nµy nh trong vÝ dô sau b»ng c¸ch kiÓm tra tríc mét tÖp class vµ ®a nã vµo th môc classes:
C:\MyMIDlet> bin\preverify -classpath classes; tmpclasses -d classes HelloMIDlet
Sau khi b¹n ch¹y tr×nh kiÓm tra tríc, nh÷ng néi dung cña th môc ®Çu ra sÏ t¬ng øng víi kiÓutÊt c¶ c¸c tÖp cña c¸c tÖp ®Çu vµo mµ b¹n cung cÊp. Th môc nµy sÏ chøa mét tÖp .class, mét c©y th môc t¬ng øng víi mçi th môc ®Çu vµo, vµ mét tÖp JAR t¬ng øng víi mçi tÖp JAR ®Çu vµo.
KiÓm tra tríc vµ s¸t h¹ch l¹i c¸c tÖp class
Trong ng«n ng÷ lËp tr×nh Java, ®Ó sö dông c¶ 2 ®Æc ®iÓm nµy kh«ng n»m trong ®Æc t¶ CLDC, b¹n cÇn ph¶i sö dông mét hoÆc nhiÒu h¬n c¸c tham sè cho c©u lÖnh preverify. C¸c tham sè kÌm theo cã thÓ kiÓm tra tÝnh hiÖn h÷u cña c¸c ®iÓm ho¹t ®éng ®éng, sö dông tr×nh hoµn thiÖn vµ triÖu gäi ph¬ng thøc nguyªn thñy tõ c¸c líp øng dông. VÝ dô sau kiÓm tra c¸c vÊn ®Ò ®îc ®Ò cËp ë trªn:
C:\MyMIDlet> bin\preverify -nofp -nofinalize -nonative -classpath classes; tmpclasses -d classes HelloMIDlet
VÝ dô tiÕp theo lµ mét phiªn b¶n ®¬n gi¶n h¬n phiªn b¶n tríc ®ã. Nã sö dông mét chuyÓn ®æi ®¬n t¬ng ®¬ng víi c¸ch sö dông cïng lóc c¸c tham sè -nofp, -nofinalize, vµ nonative:
C:\MyMIDlet> bin\preverify -cldc -classpath classes; tmpclasses -d classes HelloMIDlet
PhÇn IV
§ãng gãi MIDlet
§Ó ngêi sö dông cã thÓ t¶i vÒ vµ ch¹y mét MIDlet b¹n ph¶i tiÕn hµnh ®ãng gãi MIDlet ®ã vµo trong mét bé MIDlet. Mét bé MIDlet gåm 2 tÖp: tÖp JAR – dïng ®Ó qu¶n lý c¸c líp MIDlet vµ tµi nguyªn (nh ®å häa), vµ tÖp JAD (JavaTM Application Description) –._.
Các file đính kèm theo tài liệu này:
- 7942.doc