TRNG I HC KHOA HC T NHIÊN
KHOA CÔNG NGH THÔNG TIN
B MÔN MNG MÁY TÍNH – VIN THÔNG
NG NGUYN KIM ANH – ÀO ANH TUN
NGHIÊN CU JAVA MOBILE
VÀ XÂY DNG NG DNG
MINH HA
KHÓA LUN C NHÂN TIN HC
TP.HCM, 2005
TRNG I HC KHOA HC T NHIÊN
KHOA CÔNG NGH THÔNG TIN
B MÔN MNG MÁY TÍNH – VIN THÔNG
NG NGUYN KIM ANH – 0112424
ÀO ANH TUN – 0112451
NGHIÊN CU JAVA MOBILE
VÀ XÂY DNG NG DNG
MINH HA
KHÓA LUN C NHÂN TIN HC
GIÁO VIÊN HNG DN
Thy NGUYN MINH TUN
NIÊN KHÓA 2001-2005
Li Cm n!
Sau hn nm tháng tìm hiu và thc hin, lun vn “Nghiên cu công ngh
Java Mobile và xây dng ng dng minh ho” đã c bn hoàn thành. đt đc
kt qu này, chúng tôi đã n lc ht sc đng thi cng nhn đc rt nhiu s
quan tâm, giúp đ, ng h ca các thy cô, bn bè và gia đình.
Trc ht, chúng em xin gi li cm n chân thành đn B môn Mng máy
tính và Vin thông, Khoa Công ngh Thông tin, trng i hc Khoa hc T nhiên
và các thy cô đc bit là Thy Nguyn Minh Tun đã tn tình giúp đ, hng dn
chúng em hoàn thành lun vn này.
Chúng tôi rt cm n các bn bè trong khoa, các anh ch, các bn trong cng
đng Java Vit Nam đã bên cnh ng h, đóng góp ý kin cho chúng tôi trong quá
trình thc hin lun vn.
Và chúng con cng xin chân thành cm n gia đình đã luôn đng viên, to
điu kin tt nht cho chúng con hc tp và hoàn tt lun vn.
Lun vn đã hoàn thành vi mt s kt qu nht đnh, tuy nhiên vn không
tránh khi sai sót. Kính mong s cm thông và đóng góp ý kin t các thy cô và
các bn.
Thành ph H Chí Minh, tháng 7 nm 2005
ng Nguyn Kim Anh - ào Anh Tun
MC LC
Li Nói u 1
Phn 1: Kin thc nn tng J2ME 5
Chng 1: Tng quan v J2ME 5
1.1 Gii thiu J2ME (Java 2 Micro Edition) 5
1.2 Lý do chúng ta cn J2ME 6
1.3 Các thành phn ca J2ME: 7
1.3.1 Configuration: 7
1.3.2 Profile: 9
1.3.3 Máy o Java 10
Chng 2: Gii thiu CLDC và MIDP 13
2.1. CLDC 13
2.1.1. Yêu cu phn cng: 13
2.1.2. Yêu cu phn mm: 13
2.1.3. Máy o Java: 13
2.2. MIDP: 16
2.2.1. Yêu cu phn cng: 16
2.2.2. Yêu cu phn mm: 16
2.2.3. Cu trúc MID Profile: 16
2.2.4. MIDlet Suite: 18
2.2.5. Môi trng phát trin ng dng J2ME 22
Chng 3: Các vn đ c bn ca chng trình MIDlet 25
3.1. Cu trúc c bn: 25
3.2. Xây dng mt ng dng MIDlet: 25
3.3. Lp MIDlet: 26
3.4. Lp MIDletStateChangeException: 28
3.5. Display 28
3.6. Lp Displayable: 30
3.7. Qun lý các s kin (event) 32
3.7.1. Command & CommandListener 33
3.7.2. Item và ItemStateListener 38
Chng 4: Giao din đ ha cp cao 40
4.1. Screen: 42
4.2. Form: 43
4.3. Item: 45
4.3.1. DateField: 46
4.3.2. Gauge: 48
4.3.3. String Item: 51
4.3.4. TextField: 53
4.3.5. ChoiceGroup: 57
4.3.6. Image và ImageItem: 61
4.4. List: 64
4.5. TextBox: 69
4.6. Alert và AlertType: 72
4.6.1. Alert: 72
4.6.2. AlertType: 74
4.7. Ticker: 77
Chng 5: Giao din đ ha cp thp 78
5.1. Canvas: 78
5.1.1. H to đ: 79
5.1.2. V trên đi tng Canvas: 79
5.1.3. Bt s kin trong các đi tng Canvas: 82
5.1.4. Game action: 85
5.1.5. S kin con tr: 87
5.2. Graphics: 89
5.2.1. Màu sc: 90
5.2.2. Nét v: 93
5.2.3. Font ch: 98
5.2.4. V các đi tng hình nh (image): 101
5.2.5. Các phng thc tnh tin đi tng: 103
5.2.6. Vùng xén (Clipping regions): 105
Chng 6: Lu tr thông tin vi RMS 106
6.1. Gii thiu RMS 106
6.2. Duyt danh sách Record vi RecordEnumeration 115
6.3. Sp xp bng RecordComparator 117
6.4. Lc record vi RecordFilter 119
6.5. Nhn thông đip khi Record Store thay đi 121
6.6. X lý li khi thao tác vi Record Store 122
Chng 7: Kt ni mng vi Generic Connection Framework (GCF) 124
7.1. Gii thiu GFC 124
7.2. Lc đ lp 124
7.3. Kt ni HTTP: 127
7.3.1. Khi to kt ni: 127
7.3.2. Các đc đim ca kt ni HTTP bng J2ME: 130
7.3.3. Thông s kt ni: 137
7.4. Kt ni socket Datagram (UDP) 138
7.5. Kt ni TCP socket 141
7.6. Gi và nhn SMS 144
Phn 2 : Web Service và ng dng "ng Ký Hc Phn" 149
Chng 8: Gii thiu Web Service 149
8.1. ng dng phân tán (Distributed Application) 149
8.1.1. Gii thiu 149
8.1.2. Các vn đ ny sinh trong h thng ng dng phân tán 150
8.1.3. Hn ch ca nhng mô hình ng dng phân tán trc đây 151
8.2. Web Service 152
8.2.1. nh ngha 152
8.2.2. Thành phn c bn ca Web service: 152
8.2.3. Hot đng ca Web service 152
8.2.4. u đim ca web service 155
8.3. Các thành phn chính ca Web Service 157
8.3.1. SOAP (Simple Object Access Protocol) 157
8.3.2. WSDL (Web Service Definition Language) 162
Chng 9: ng dng đng ký hc phn 172
9.1 c t chng trình: 172
9.1.1 Tng quan: 172
9.1.2 Các chc nng chính: 172
9.2 Kin trúc chng trình: 174
9.2.1 Mô hình kt ni: 174
9.2.2 Mô hình bo mt (mã hoá password): 176
9.3 Phân tích - thit k: 177
9.3.1 Mô hình use case: 177
9.3.2 c t mt s use case chính: 178
9.4 Thit k mô hình d liu: 183
9.4.1 Mô hình thc th kt hp: 183
9.4.2 Các bng d liu: 183
9.4.3 Chi tit các bng d liu: 184
9.4.4 Ràng buc d liu: 188
9.4.5 Mô hình d liu: 190
9.4.6 Các chc nng store procedures: 190
9.4.7 Thit k lp: 191
9.5 Cài đt - th nghim: 192
9.5.1 Yêu cu phn cng: 192
9.5.2 Yêu cu phn mm: 193
9.5.3 Giao din chng trình: 193
Chng 10: Tng kt 205
10.1 Kt lun: 205
10.2 Hng phát trin: 207
Tài liu tham kho 210
Ph Lc A: Hng dn s dng công c Sun Wireless ToolKit 2.3 211
Ph Lc B: Xây dng và S dng Web Service 217
Ph Lc C: Gii thiu các th vin JSR 222
Danh Sách Các Hình
Hình 1.1 Các thit b J2ME h tr 6
Hình 1.2 Các thành phn ca J2ME 7
Hình 1.3 Configurations và các thit b 9
Hình 1.4 Cu trúc chng trình J2ME 11
Hình 1.5 Cu trúc chng trình MIDP 11
Hình 2.1 Cu trúc thit b MID 17
Hình 3.1 Command Exit 34
Hình 3.2 Command Label 36
Hình 3.3 Ánh x soft-button 36
Hình 4.1 S đ các lp giao din đ ho 40
Hình 4.2 Giao din đi tng DateField 46
Hình 4.3 Giao din đi tng Gauge ch đ tng tác 48
Hình 4.4 Giao din đi tng Gauge ch đ không tng tác 49
Hình 4.5 Giao din đi tng StringItem 52
Hình 4.6 Giao din đi tng TextField 56
Hình 4.7 Giao din đi tng ChoiceGroup ch đ mt la chn 59
Hình 4.8 Giao din đi tng ChoiceGroup ch đ nhiu la chn 60
Hình 4.9 Giao din đi tng List dng menu 67
Hình 4.10 Giao din đi tng List cho phép chn nhiu la chn 68
Hình 4.11 Giao din đi tng TextBox 71
Hình 4.12 Giao din đi tng Alert 76
Hình 4.13 Giao din Ticker 77
Hình 5.1 Các phng thc v đng cong 94
Hình 5.2 Các phng thc v hình ch nht 95
Hình 5.3 Các phng thc h tr v Text 97
Hình 5.4 Các đnh dng trong Text Graphic 97
Hình 5.5 Các phng thc to font 100
Hình 5.6 V bng đi tng Immutable Image 101
Hình 5.7 V bng đi tng Mutable Image 102
Hình 5.8 Các đnh dng v trí trong Graphics 103
Hình 7.1 Lc đ các lp trong th vin GCF 125
Hình 7.2 Kt ni UDP 138
Hình 7.3 Kt Ni TCP 141
Hình 7.4 Lc đ lp th vin WMA 145
Hình 8.1 Hot đng ca Web Service 152
Hình 8.2 Mt client truy xut đn nhiu web services cùng lúc 154
Hình 8.3 Mt web service có th triu tp đn các web services khác 155
Hình 8.4 Web Service Endpoint 162
Hình 9.1 Kin trúc chng trình ng dng 174
Hình 9.2 Mô hình mã hoá password 176
Hình 9.3 Lc đ use case 177
Hình 9.4 Mô hình thc th kt hp ER 183
Hình 9.5 Ràng buc chu trình 189
Hình 9.6 Mô hình c s d liu 190
Hình 9.7 Mô hình Lp 192
Hình 9.8 S đ các màn hình 194
Hình 9.9 Màn hình welcome 195
Hình 9.10 Màn hình đng nhp 196
Hình 9.11 Confirm 197
Hình 9.12 Menu chc nng 198
Hình 9.13 Màn hình đng ký hc phn lý thuyt 199
Hình 9.14 Màn hình đng ký hc phn thc hành 200
Hình 9.15 Màn hình xem thi khoá biu 201
Hình 9.16 Màn hình xem kt qu hc tp 202
Hình 9.17 Màn hình xem phiu đng ký 203
Hình 9.18 Màn hình xem thi khoá biu 204
Hình 10.1 Hng phát trin thc t 207
Hình A.1 Công c Sun WirelessToolkit 2.3 211
Hình A.2 Màn hình chính ca công c 212
Hình A.3 To project mi 212
Hình A.4 Các options cho project 213
Hình A.5 Chnh sa ni dung file Jad và Jar 214
Hình A.6 Biên dich project 215
Hình A.7 óng gói ng dng 216
Hình B.1 To project Web Service 217
Hình B.2 Khai báo lp và hàm 218
Hình B.3 Export nhiu hàm cùng lúc 219
Hình B.4 Màn hình thc thi Web Service ca IE 219
Hình B.5 File WSDL 220
Hình B.6 Công c Stub Generator 221
Hình B.7 Các options ca công c Stub Generator 221
Danh Sách Các Bng
Bng 2.1 Cu trúc file manifest 19
Bng 2.2 Cu trúc file JAD 20
Bng 3.1 Lp MIDlet 27
Bng 3.2 Lp Display 29
Bng 3.3 Lp Displayable 32
Bng 3.4 Các Command Type 37
Bng 3.5 Command và CommandListener 38
Bng 3.6 Item và ItemStateListener 39
Bng 4.1 Lp Screen 42
Bng 4.2 Lp Form 44
Bng 4.3 Lp Item 45
Bng 4.4 Lp DateField 46
Bng 4.5 Lp Gauge 49
Bng 4.6 Lp StringItem 51
Bng 4.7 Các Ràng Buc ca TextField 53
Bng 4.8 Lp TextField 55
Bng 4.9 Lp ChoiceGroup 58
Bng 4.10 Lp Image 62
Bng 4.11 nh dng ImageItem 62
Bng 4.12 Lp ImageItem 63
Bng 4.13 So sánh List và ChoiceGroup 65
Bng 4.14 Lp List 66
Bng 4.15 So sánh TextField và TextBox 69
Bng 4.16 Lp TextBox 70
Bng 4.17 Lp Alert 73
Bng 4.18 AlertType 75
Bng 4.19 Lp Ticker 77
Bng 5.1 Truy vn kích thc Canvas 79
Bng 5.2 Lp Canvas 81
Bng 5.3 Giao tip vi Application Manager 81
Bng 5.4 Mã Phím 83
Bng 5.5 S kin keyPressed 84
Bng 5.6 S kin Game Action 85
Bng 5.7 Bt s kin trong Game Action 86
Bng 5.8 S kin con tr 87
Bng 5.9 Lp Graphics 90
Bng 5.10 Các phng thc v 93
Bng 5.11 X lý Text 96
Bng 5.12 Giá tr Anchor 96
Bng 5.13 X lý Font ch 98
Bng 5.14 Các giá tr Font 99
Bng 5.15 V hình nh 101
Bng 5.16 Giá tr Image Anchor 103
Bng 5.17 Các phng thc tnh tin 103
Bng 5.18 Vùng xén 105
Bng 6.1 Mô hình Record Store 107
Bng 6.2 Lp RecordStore 109
Bng 6.3 Lp RecordEnumeration 117
Bng 6.4 Các giá tr hng đ sp xp record 118
Bng 6.5 Lp RecordListener 121
Bng 7.1 Lp Connector 128
Bng 7.2 Mode Kt Ni 128
Bng 7.3 Các Request Method chính 130
Bng 7.4 Các phng thc set/get Request Method 131
Bng 7.5 Các phng thc truy vn HTTP Header 134
Bng 7.6 Ly thông s kt ni 137
Bng 7.7 Lp DatagramConnection 139
Bng 7.8 Lp Datagram 140
Bng 7.9 Thuc tính ca SocketConnection 142
Bng 7.10 Lp SocketConnection 143
Bng 7.11 Các interfaces chính ca WMA 144
Bng 9.1 Danh sách các Use Case 178
Bng 9.2 Table ChuyenNganh 184
Bng 9.3 Table SV 184
Bng 9.4 Table MonHoc 185
Bng 9.5 Table GV 185
Bng 9.6 Table Lop 185
Bng 9.7 Table Lop_MonLT 186
Bng 9.8 Table Lop_MonTH 187
Bng 9.9 Table PhanCongTH 187
Bng 9.10 Table DangKyLT 187
Bng 9.11 Table DangKyTH 187
Bng 9.12 Table ThongBao 188
Các ch vit tt, thut ng đc s dng
API Application Program Interface
CDC Connected Device Configuration
CLDC Connected Limited Device Configuration
Configuration
c t qui đnh các th vin gc J2ME phi h tr cho mt dòng
phn cng.
DES Thut toán mã hóa khóa bí mt 64 bits
GCF General Connection Framework
IIS Internet Information Services-Web server chun trên Windows
J2EE Java 2 Enterpise Edition, phiên bn Java cho nhng d án ln.
J2ME Java 2 Micro Edition, phiên bn Java cho nhng thit b nh.
J2SE
Java 2 Standard Edition, phiên bn Java ra đi đu tiên, dành cho
PC thông thng.
JCP T chc Java Community Process
JDK Java Development Kits
JSR
Java Specification Requests, nhng yêu cu cn b sung cho các
phiên bn Java.
JSR-172 Th vin truy xut web service cho ngôn ng J2ME.
JSR-177 Th vin mã hóa và bo mt cho ngôn ng J2ME.
KVM Máy o Java cho môi trng CLDC.
MIDlet Tên gi chung cho các ng dng J2ME.
MIDP Mobile Information Device Profile.
MMS
Multimedia Message Service, tin nhn hình nh, âm thanh, video
cho di đng.
PDA Personal Digital Assistant.
Profile Các tp th vin cp cao đnh ngha trên nn Configuration.
RMS RecordStore Management System, c ch lu tr ca J2ME.
SMS
Short Message Service, tin nhn thông thng cho đin thoi di
đng.
SOAP
Simple Object Access Protocol, đnh dng thông đip ca Web
Service.
Symbian H điu hành cho đin thoi di đng ca hãng Symbian.
UDDI Universal Description, Discovery, and Integration
Web Service Giao thc gi hàm t xa da trên XML và HTTP.
WMA Wireless Message API
WSDL Web Service Definition Language
XML Extensible Markup Language
Java Mobile
Li Nói u
Mng đin thoi di đng xut hin ti Vit Nam t đu nhng nm 1990 và
theo thi gian, s lng các thuê bao cng nh các nhà cung cp dch v di đng ti
Vit Nam ngày càng tng. Cùng vi s phát trin ca s lng thuê bao di đng là
s đa dng hoá các dch v hng đn thit b di đng. Ngày nay đin thoi di đng
không ch còn mang chc nng gi đin hay nhn tin thông thng mà còn là mt
thit b gii trí, tra cu thông tin rt tin li. Do đó, xây dng các ng dng cho đin
thoi di đng đang là mt yêu cu tt yu trong xu th hin nay. Ngành công nghip
phn mm cho các thit b di đng đc xem nh mt mnh đt màu m và ha hn
đem li nhiu t đô la doanh thu.
Hai hng phát trin ng dng trên đin thoi di đng ph bin hin nay là
s dng ngôn ng C++ trên nn h điu hành Symbian và J2ME. Các ng dng vit
trên nn Symbian có các u th truy cp trc tip các tài nguyên ca đin thoi cng
nh h tr h thng tp tin, th mc… nh máy tính cá nhân vì đc h tr trc
tip bi h điu hành. Tuy nhiên h điu hành Symbian li có kích thc khá ln
nên ch có các th h đin thoi tng đi cao cp, và xây dng ng dng dùng
Symbian API cng phc tp hn.
i trng vi Symbian API là công ngh J2ME vi kích thc nh gn,
tin dng, đc h tr bi hu ht các th h đin thoi mi ra đi, k c các đin
thoi có h điu hành Symbian. J2ME không nhng là mt ngôn ng hng đn các
thit b di đng mà còn là ngôn ng chính đ lp trình trên các thit b gia dng, th
tín dng đin t và các thit b thông minh khác. Chúng ta có th nói đi tng ca
ngôn ng J2ME là rng hn rt nhiu so vi C++ trên nn Symbian. Ti thi đim
hin ti, ngôn ng J2ME không h tr đc nhiu tính nng nh C++ trên Symbian
nhng li có nhng u đim tri hn.
J2ME là mt ngôn ng nh, gn nhng rt cht ch và d nm bt, vi
nhng lp trình viên đã có kinh nghim vi Java vic lp trình vi J2ME tr nên rt
1
Java Mobile
d dàng. J2ME còn là mt ngôn ng đc các t chc mã ngun m ng h mnh
m và phát trin rt nhanh chóng, JCP (Java Community Process-
) là mt chng trình do Sun thành lp luôn tip thu các ý kin
và đa ra các đc t mi dành cho Java nói chung và J2ME nói riêng. Các đc t
này thng có tip đu ng JSR và là các tính nng b sung mi cho J2ME.
Nhng JSR quan trng có th đc nhc đn nh JSR-82 (Bluetooth), JSR
205 (Gi tin nhn SMS, MMS), JSR-172 (Web service), JSR-177 (Security and
Trust Services), JSR 184 (3D Game)… Các đc t này ngày càng phong phú và
phn nào phát trin nhanh hn c s phát trin ca phn cng.
Tht khó so sánh gia các dòng ngôn ng lp trình vi nhau vì mi loi đu
có u và khuyt đim riêng. Trong lun vn ca mình, chúng tôi chn nghiên cu
v J2ME vì nhng u đim khá rõ ràng đã nêu trên, mt khác chúng tôi cng mun
th sc mt lãnh vc khá mi m là tip cn vi phn mm mã ngun m.
V chng trình ng dng, tính kh thi và thc t ngày càng đc đ cao.
Chúng tôi nhn thy xu hng m rng các ng dng trên web sang đin thoi di
đng đang đc chú trng. Thng mi đin t (e-commerce) đang tin dn sang
thng mi di đng (m-commerce). Vi thc trng Vit Nam hin nay, s ngi s
hu máy vi tính cá nhân, đc bit là máy tính xách tay cha nhiu nhng t l s
ngi có đin thoi di đng li khá cao. Vic chuyn các ng dng thng mi t
môi trng web sang môi trng di đng s khin s tin dng tng cao, s ngi
s dng dch v trc tuyn chc chn s tng nhanh vì đi vi nhiu ngi chic
đin thoi di đng d s dng hn rt nhiu so vi chic máy tính "phc tp và khó
hiu".
ng dng chúng tôi chn thc hin đ bc chân vào lãnh vc khá mi m
này là ng dng "ng Ký Hc Phn" qua mng di đng. i vi sinh viên khoa
công ngh thông tin, h thng đng ký hc phn SMS qua môi trng web là mt
ng dng rt quen thuc. Chúng tôi mun phát trin ng dng ca mình nh mt
m rng ca h thng đng ký hc phn này trên đin thoi di đng nhm h tr các
bn sinh viên có th s dng các tin ích ca h thng mà không cn phi có máy
2
Java Mobile
tính kt ni mng. Vi ng dng này, tính tin dng ca h thng đng ký hc phn
SMS đã đc m rng. Ch cn có mt đin thoi di đng h tr GPRS các bn sinh
viên có th đng ký hc phn ngay c khi đang v quê n tt nhng vùng internet
cha ph bin nhng đã ph sóng di đng hay khi đang di chuyn trên tàu xe… Vì
mt s điu kin đc bit ca đin thoi, hin nay ng dng này ch chy trên
chng trình gi lp. Tuy nhiên, chúng tôi hi vng trong mt tng lai rt gn, khi
các th h đin thoi mi có giá thành va phi ra đi và h tr mt s công ngh
nh WebService, mã hoá… mà chúng tôi đang s dng đ xây dng phn mm thì
ng dng này có th đc áp dng rng rãi trong thc t cho sinh viên ca khoa.
Cn phi nói thêm, ng dng hin ti hoàn toàn có th s dng đc trong thc t
Vit Nam nhng có mt s đòi hi v thit b khá đt tin (xin xem thêm Chng
10, phn Kt Lun), ch không ch mi là lý thuyt trên giy t.
Vi vic xây dng thành công h thng đng ký hc phn qua mng đin
thoi di đng, chúng tôi rt t tin v vic xây dng các h thng thng mi di đng
ln hn. Trong tng lai gn, khách hàng có th ngi trên taxi mua vé máy bay, đt
ch khách sn, xem li tài khon ngân hàng… vi chic đin thoi di đng nh bé.
Chic đin thoi di đng s tr thành mt công c giao dch không th thiu trong
thi đi mi, thi đi ca thng mi đin t toàn cu.
Lun vn đc trình bày thành hai phn lp:
Phn 1:
Gii thiu v lý thuyt nn tng ca J2ME, các th vin, các k thut lp
trình, đóng gói ng dng di đng.
Chng 1.
Tng quan v J2ME : Gii thiu tng quan v J2ME, các đc đim và
các thành phn con.
Chng 2. Gii thiu CLDC và MIDP: Trình bày chi tit v hai thành phn quan
trng ca J2ME dành cho đin thoi di đng, môi trng phát trin ng dng J2ME.
Chng 3.
Các vn đ c bn ca chng trình MIDlet: Chng này s trình bày
nhng đc đim quan trng nht ca mt ng dng J2ME, các bc c bn đ xây
dng ng dng này.
3
Java Mobile
Chng 4. Giao din đ ha cp cao: Trình bày v th vin đ ha cp cao nh
Form, List, TextBox… trong J2ME.
Chng 5.
Giao din đ ha cp thp: Trình bày v lp trình đ ha cp thp, các
phng thc v, x lý font, game action … trong J2ME.
Chng 6.
Lu tr thông tin vi RMS: Trình bày v Record Management System,
mt c ch lu tr riêng ca J2ME.
Chng 7.
Lp trình mng vi GCF: Trình bày v kh nng lp trình mng trong
J2ME.
Phn 2:
Gii thiu v Web Service, mt công ngh rt mi đ xây dng các ng
dng thng mi đin t phân tán và gii thiu chi tit v ng dng cùng nhng
đánh giá, tng kt.
Chng 8.
Gii thiu v ng dng phân tán và web service
Chng 9.
Trình bày chi tit v ng dng "ng Ký Hc Phn"
Chng 10.
ánh giá, tng kt các kt qu đt đc và hng phát trin trong
tng lai.
Tuy đã đu t khá nhiu thì gi và công sc vào lun vn này nhng chc
chn chúng tôi cng không tránh khi nhng sai sót. Rt mong nhn đc ý kin
đóng góp và s thông cm ca quý thy cô và các bn! Xin chân thành cm n!
Kim Anh – Anh Tun
4
Java Mobile
Phn 1: Kin thc nn tng J2ME
Chng 1: Tng quan v J2ME
1.1 Gii thiu J2ME (Java 2 Micro Edition)
J2ME là mt nhánh ca ngôn ng lp trình JAVA đc phát trin nhm hng
ti vic lp trình cho các thit b “nh” (micro) có b nh, kh nng hin th và x
lý hn ch.
Ban đu Java đc xây dng ch gm mt phiên bn duy nht, ngày nay đc
bit đn vi tên J2SE (Java 2 Standard Edition), vi phng châm là “vit mt ln,
chy trên mi môi trng” (“Write once, run anywhere”). Java đc hình thành trên
ý tng xây dng mt ngôn ng mà lp trình viên ch cn vit mt ln duy nht
nhng ng dng có th chy trên bt c môi trng nào có h tr máy o Java (Java
Virtual Machine). làm đc vic này, Java s dng mt phng thc biên dch
mã ngun tng đi khác so vi các ngôn ng lp trình truyn thng. B biên dch
Java không biên dch mã ngun trc tip sang mã máy mà biên dch sang mt dng
mã trung gian mà máy o Java hiu đc (mã bytecode). Khi có nhu cu s dng
ng dng, máy o Java s đc mã trung gian này và dch ra mã máy và thc thi; nh
vào quá trình trung gian đó mt ng dng Java có th chy trên bt k môi trng
nào có cài đt máy o Java tng thích.
c gii thiu ln đu vào nm 1995, ngày nay mc tiêu Java nhm đn cng
đã thay đi khá nhiu. Java hin nay không ch nhm đn h máy tính đ bàn đn
thun; hai nm sau ngày đu đc ra mt, mt phiên bn Java mi là J2EE (Java 2
Enterprise Edition) đã đc gii thiu nhm ti vic phát trin các ng dng có qui
mô ln hn.
Phiên bn mi nht đc thêm vào dòng ngôn ng Java là J2ME (Java 2 Micro
Edition). J2ME nhm đn vic phát trin ng dng cho các ng dng có nng lc
hn ch nh đu gii mã k thut s TV set-top boxes, đin thoi di đng …
5
Java Mobile
1.2 Lý do chúng ta cn J2ME
Ngày nay ngành công nghip sn xut thit b di đng trên th gii đang phát
trin nhanh chóng. Các thit b di đng ngày càng hin đi hn, “thông minh” hn
và ngày càng có nhiu tính nng ni bt. n c nh chic đin thoi di đng, ngày
nay chúng không ch đn thun đm nhn chc nng hi thoi mà còn có thêm
nhiu chc nng nh chp nh, nghe nhc, xem phim … nh mt “trung tâm gii
trí”. Các thit b gia dng khác nh lò vi ba, TV… cng ngày càng đc trang b
nhng tính nng hin đi hn. Nhu cu phát trin phn mm cho các thit b di
đng, gia dng ngày càng tng cao và đc đánh giá là mt ngành công ngh có th
đem li nhiu t đô la doanh thu. Mt thc t đt ra cho các nhà phát trin phn
mm trên các thit b này là hin nay không có mt chun hóa nào dành cho các nhà
sn xut phn cng. Các thit b trên th trng hin nay rt đa dng và mang nhiu
đc đim cng nh cu hình khác nhau. Trc thc t đó, vic có th chy trên
nhiu môi trng là mt li th rt ln ca ngôn ng Java. Các nhà phát trin Java
đã cho ra đi ngôn ng J2ME hng đn vic phát trin phn mm cho các thit b
di đng. Ngôn ng J2ME thc s là mt ngôn ng nh gn, d nm bt, cht ch và
thích hp cho các thit b có kh nng hn ch. Các thit b di đng trên th trng
hin nay, đc bit là đin thoi di đng hu ht đu h tr rt tt ngôn ng J2ME và
J2ME thc s đã tr thành mt trong nhng ngôn ng ph bin nht trong lãnh vc
lp trình di đng.
Hình 1.1 Các thit b J2ME h tr
6
Java Mobile
1.3 Các thành phn ca J2ME:
Hình 1.2 Các thành phn ca J2ME
Khái nim thit b di đng là tng đi rng ln. Chúng bao hàm nhng thit b
có kích thc vt lý khác nhau nhiu ln và cho dù cùng kích thc nhng thit b
này vn có kh nng x lý cng nh hin th khác nhau ( nhng chic đin thoi
hin th 12,000 pixels cho đn nhng chic PDA 20,000 pixels). đáp ng đc
nhu cu khác nhau ca nhng thit b này, bn thân ngôn ng J2ME cng đc chia
thành nhng thành phn nh hn.
Chúng ta s tìm hiu hai khái nim mi là Configurations và Profiles.
1.3.1 Configuration:
đáp ng nhu cu cho nhiu chng loi thit b khác nhau, Sun đã đa ra khái
nim Configuration. Khái nim Configuration có mi liên h cht ch vi máy o
Java. Nói chính xác hn, mt Configuration qui đnh nhng thành phn và nhng
th vin gc ca ngôn ng Java mà máy o phi h tr cho configuration đó.
Vic phân chia thành nhng Configurations khác nhau ch yu da vào kh
nng b nh, nng lc hin th, nng lc x lý và kh nng kt ni mng ca các
thit b. Nh chúng ta đã bit, các thit b di đng rt khác nhau v ngun tài
nguyên, v kh nng phn cng. Vi nhng thit b có nng lc hn ch, nu ta đa
7
Java Mobile
quá nhiu th vin h tr vào máy o trên thit b đó s gây chm h thng và d
tha không cn thit. Vi nhng thit b có kh nng cao hn, chúng ta s đa thêm
nhiu th vin h tr vào máy o giúp ích cho công vic lp trình ca các nhà phát
trin. Do đó, nhu cu phân chia thành nhiu Configurations là vic cn thit.
Hin nay Sun đã đa ra hai loi Configurations khác nhau:
CDC (Connected Device Configuration):
• 512 kb (minimum) b nh đ chy Java
• 256 kb (minimum) b nh cp phát đng.
• Kt ni mng liên tc, bng thông rng.
CLDC(Connected Limited Device Configuration):
• 128 kb (minimum) b nh đ chy Java
• 32 kb (minimum) b nh cp phát đng.
• Giao din ngi dùng hn ch
• Nng lng tiêu tn ít (ch yu dùng pin)
• Kt ni mng Wireless, chm.
Vic phân chia này thc cht cng ch mang tính tng đi. Công ngh hin nay
đang phát trin khá nhanh, và vic phát trin này càng làm cho ranh gii gia các
loi Configuration này tr nên không rõ ràng.
8
Java Mobile
Hình 1.3 Configurations và các thit b
1.3.2 Profile:
Configuration thc ra ch cung cp mt s rt ít các lp và ngi phát trin ng
dng hu nh không th ch làm vic đn thun vi các configuration này. Ta có th
thy điu này qua mt ví d: các configuration không h tr các công c v giao
din (GUI), do đó nu ch dùng configuration thì lp trình viên phi xây dng tt c
các chc nng giao din t đu. Vì lý do này Sun đã linh hot và đa thêm mt khái
nim mi nm tng trên ca configuration, đó là Profiles.
Ta có th xem Profile là mt m rng ca khái nim Configuration. Profile đnh
ngha các th vin giúp lp trình viên phát trin phát trin ng dng cho mt dng
thit b nào đó. Ví d Mobile Information Device Profile (MIDP) đnh ngha các
hàm API cho các thành phn giao din, nhp liu và x lý s kin, lu tr, kt ni
mng và x lý thi gian,… phù hp vi màn hình hin th và kh nng x lý ca các
thit b di đng. Profile MIDP đc đnh ngha trên nn tng ca CLDC. Ngoài ra
chúng ta còn mt s Profile tiêu biu khác nh
– PDA Profile: tng t MIDP, nhng vi th trng là các máy PDA vi màn
hình và b nh ln hn
9
Java Mobile
– Foundation Profile: cho phép m rng các tính nng ca CDC vi phn ln
các th vin ca b Core Java2 1.3
– Ngoài ra còn có Personal Basis Profile, Personal Profile, RMI Profile, Game
Profile.
Lun vn ch yu ch đ cp đn Profile MIDP và các th vin liên quan đ
phc v cho vic vit ng dng trên đin thoi di đng.
1.3.3
Máy o Java
Nh chúng ta đã bit, mt chng trình Java s đc biên dch thành mã trung
gian sau đó chính máy o Java s biên dch phn mã này sang mã máy đ thc thi.
Máy o Java s chu trách nhim vic cung cp tính nng bo mt, cp phát và thu
hi b nh và qun lý vic điu phi các tin trình. Chúng ta có th nói chính máy
o Java làm cho chng trình ca chúng ta “chy”.
Vi CDC, máy o Java có cùng các đc tính nh J2SE. Tuy nhiên, vi CLDC,
Sun đã phát trin riêng mt dng máy o chuyên bit đc gi là K Virtual
Machine, gi tt là KVM. Chính nhng hn ch v tài nguyên ca các thit b di
đng đã đ ra nhu cu v s ra đi ca KVM. KVM không phi là mt máy o Java
“truyn thng”:
• Máy o ch cn 40-80 kb b nh
• Ch đòi hi 20-40 kb b nh đng (heap)
• Có th chy vi b vi x lý 16-bit và xung nhp 25 MHz.
n đây chúng ta có th hình dung phn nào cu trúc tng th ca mt chng
trình J2ME nh sau:
10
Java Mobile
Hình 1.4 Cu trúc chng trình J2ME
Nu chng trình đc biên dch vi CDC, chng trình s chy trên các máy
o “truyn thng” và mang các đc tính nh chng trình J2SE.
Nu chng trình đc biên dch vi CLDC, chng trình s chy vi máy o
chuyên bit KVM và nhng đc tính riêng do CLDC đòi hi.
Vi chng trình xây dng bi MIDP, chúng ta có cu trúc chuyên bit sau:
Hình 1.5 Cu trúc chng trình MIDP
Tng di cùng là h điu hành có h tr máy o Java (KVM), bên trên là
CLDC và trên cùng là MID Profile. Lúc này khái nim “Vit mt ln, chy bt c
11
Java Mobile
môi trng nào” ca Sun không còn đúng hoàn toàn vì đã xut hin máy o chuyên
bit KVM. Mt s chng trình vit bng MIDP s không chy trên môi trng
J2SE và ngc li. Tuy nhiên chúng ta phi cm kích các n lc ca Sun đã giúp
cho Java tr thành mt trong nhng ngôn ng có kh nng đc lp vi môi trng
bên di nht hin nay, điu này đúng vi c môi trng thit b di đng.
nhng phn tip theo chúng ta s tìm hiu k hn v hai thành phn c bn
ca J2ME là Configuration và Profile.
12
Java Mobile
Chng 2: Gii thiu CLDC và MIDP
2.1. CLDC
2.1.1. Yêu cu phn cng:
Khi đ ra yêu cu v phn cng vic xem xét các chi tit nh b x lý, b nh…
và các phn mm hin có trên các thit b di đng là vic vô cùng quan trng. Nhm
mc đích phc v ti đa các thit b hin có trên th trng, CLDC ch đ ra các yêu
cu v b nh và không đ ra yêu cu nào cho các thành phn khác. Yêu cu ti
thiu đ có th s dng CLDC nh sau:
• 128 kilobytes đ chy JVM và các th vin ca CLDC. Không phân bit loi
b nh s dng (Rom, Flash,…), b nh ca thit b phi bo lu đc ni
dung lâu dài, ngay c khi ngt đin. B nh này thng đc gi là
nonvolatile memory.
• 32 kilobytes b nh trng đ cp phát các đi tng (objects). B nh này
thng đc gi là volatile memory (hay là “heap”).
2.1.2.
Yêu cu phn mm:
CLDC có yêu cu ti thiu v mt phn mm. H điu hành phi tng thích vi
JVM và có chc nng qun lý các ng dng Java, bao gm:
• Cho phép chn và kích hot ng dng
• Cho phép g b ng dng khi thit b
2.1.3. Máy o Java:
Do các thit b di đng dùng CLDC thng có tài nguyên hn ch nên Sun đã đ
ra máy o Java KVM phc v riêng cho các thit b này. Máy o KVM thc cht là
mt b phn con ca các máy o trên môi trng J2SE và J2EE nên cng có nhiu
hn ch và khác bit so vi hai phiên bn trên.
13