Professional Documents
Culture Documents
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.
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:
*
*
*
*
*
*
Khng nh ngha:
*
*
*
*
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.
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().
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.
Bi 3 - ha trong J2ME
1 ha (Graphic)
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.
Ticker(String str)
public class Ticker extends Object
Tng bc lp trnh cho in thoi di ng J2ME - Phn 4
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
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) {
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 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
}
} 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.
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
* Mediation ca domain:
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