Xây dựng chương trình tra cứu tỷ giá hối đoái qua mobile

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

doc48 trang | Chia sẻ: huyen82 | Lượt xem: 1265 | Lượt tải: 0download
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à l­u 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 ch­a ®­î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 l­u 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, nh­ng (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, nh­ng 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) nh­ng 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, nh­ng 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 l­u tr÷ mét biÕn khëi t¹o tªn lµ textBox. Bëi vËy, textbox kh«ng cÇn thiÕt l­u 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µ l­u 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 ng­ng 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 ng­ng 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 nh­ng 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 ng­ng 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 l­u 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 l­u 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:

  • doc7942.doc
Tài liệu liên quan