1. Trang chủ
  2. » Công Nghệ Thông Tin

Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa

234 440 4
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa
Tác giả Dang Nguyen Kim Anh, Dao Anh Tuan
Người hướng dẫn Thầy Nguyễn Minh Tuấn
Trường học Trường Đại Học Khoa Học Tự Nhiên
Chuyên ngành Tin học
Thể loại Khóa luận
Năm xuất bản 2005
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 234
Dung lượng 2,68 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa.

Trang 1

BỘ MÔN MẠNG MÁY TÍNH - VIÊN THÔNG

DANG NGUYEN KIM ANH - ĐÀO ANH TUẦN

NGHIEN CUU JAVA MOBILE

VA XAY DUNG UNG DUNG

MINH HOA

KHOA LUAN CU NHAN TIN HOC

TP.HCM, 2005

Trang 2

BỘ MÔN MẠNG MÁY TÍNH - VIÊN THÔNG

DANG NGUYEN KIM ANH _ 0112424 ĐÀO ANH TUẦN - 0112451

NGHIÊN CỨU JAVA MOBILE

VÀ XÂY DỰNG ỨNG DỤNG

MINH HỌA

KHÓA LUẬN CỬ NHÂN TIN HỌC

GIÁO VIÊN HƯỚNG DẪN

Thay NGUYEN MINH TUAN

NIEN KHOA 2001-2005

Trang 3

Sau hơn năm tháng tìm hiểu và thực hiện, luận văn “Nghiên cứu công nghệ Java Mobile và xây dựng ứng dụng minh hoạ” đã cơ bản hoàn thành Đề đạt được kết quả này, chúng tôi đã nỗ lực hết sức đồng thời cũng nhận được rất nhiều sự

quan tâm, giúp đỡ, ủng hộ của các thầy cô, bạn bè và gia đình

Trước hết, chúng em xin gởi lời cảm ơn chân thành đến Bộ môn Mạng máy

tính và Viễn thông, Khoa Công nghệ Thông tin, trường Đại học Khoa học Tự nhiên

và các thầy cô đặc biệt là Thầy Nguyễn Minh Tuấn đã tận tình giúp đỡ, hướng dan chúng em hoàn thành luận văn này

Chúng tôi rất cảm ơn các bạn bè trong khoa; các anh chị, các bạn trong cộng

đồng Java Việt Nam đã bên cạnh ủng hộ, đóng góp ý kiến cho chúng tôi trong quá

trình thực hiện luận văn

Và chúng con cũng xin chân thành cảm ơn gia đình đã luôn động viên, tạo

điều kiện tốt nhất cho chúng con học tập và hoàn tất luận văn

Luận văn đã hoàn thành với một số kết quả nhất định, tuy nhiên vẫn không

tránh khỏi sai sót Kính mông sự cảm thông và đóng góp ý kiến từ các thầy cô và

các bạn

Thành phô H6 Chi Minh, thang 7 nam 2005

Dang Nguyén Kim Anh - Dao Anh Tuan

Trang 4

P0081) 0077 1

Phan 1: Kién thie nén tang J2ME .ccccscscssssssssssssssssssssessssssssssssssesssssssesens 5

Chuong 1: Tong quan về J2ME - 5-5 5< << SsxEsEseseEeessseseseseseeeree 5 1.1 Giới thiệu J2ME (Java 2 Micro EdIfion) << «<< sseeesessssssss 5 1.2 Lý do chúng ta cần J2ME - G6311 EE9E9 5E xxx cvccnt ng gerreg 6 1.3 Các thành phần của J2lME: - 6 SE kkSEEEEE9ESESEEE SE ctct cv gvrerree 7 IESNR6Ua vai 0 11 7 IESZu(0i 112.31 9 1.3.3 May 0.5 10 Chương 2: Giới thiệu CLDC và MIIDÏP 00G 5G G539 5565555656 13

“9° ?0Ô® ố.ố.ố 13 2.1.1 Yéu cau phan CỨTĐ:: cành HH HH 13 2.1.2 Yêu cầu phần mỀm:: =2 KẾ se HN xxx 13 2.1.3 May 0à 1 13

“X00 11 ¬ ố.ố 16 2.2.1 Yéu cau phan CỨTĐ:: cành KH HH re 16

"4:80 0u 8n .a 16 2.2.3.Cau tric MID Profile: .c.c.cdlcctesessbesessscsesscssessesesscssetsesesssavetsesesseaeens 16

“5/0001 20 18 2.2.5.Môi trường phát triển ứng dụng J2ME - - + + sex sEcxceexevced 22

Chương 3: Các van đề cơ bản của chương trình MIDIet 25 3.1 Cấu trúc cơ bản: :isx: à.cc 2t 2t t2 E2 12112211211211211111.11.11 xe 25

3.2 Xây dựng một ứng dụng MIDÏÌet: << < << c5 11113 SSSSSSSSssska 25 3.3 ru 00 26 3.4 Lớp MIDlIetStateChangeEXC€pfIOI: << <5 551 S13 Sa 28

SH aaaaáidđiiđiittaầầồỶỒỒ Ô 28

SN v09.) - -: 30 3.7 Quan ly cde sur kién (2,0 n na aố.ố 32 3.7.1:Command & CommandLLISf€nI€T << << << 5553 *++++sssssssssseessa 33 3.7.2 Item va ItemSfatelLISf€TI€T 1133333111111 11 111188111111 ng vn 38 Chương 4: Giao diện đồ họa cấp €ao << 5 5 5c scseeeeecscscseseseeee 40 4.] SCT€€N: QQ SH TT và 42 4.2 FOTI: cv 43

AB THOM .c‹3 45

"Ăn? ¡lan 46

“SUAC 0 48 AB.3 String [tems 1n ae 51 ABA TextField: oo cccccccccccccsssssscccecessessneceecceseeseeeeeceseeneeeeeesseesnaeeeesessessaeeseseees 53

A 3.5 CHOICCGLOUP:! o eeeceeeescssessssscceeeeecceeeeeeeseesssnneeaeeeeeecceeeseeeeeesnsaeaeeeeseeeeeeees 57

“SN Ni (00/80 14302 0n 61

4.4 UISẨ: Q0 nu 1 1 1 1 1x56 64

Trang 5

5.1.3 Bắt sự kiện trong các đối tượng TVAS: cv 82

co on na - 85

=5 5i 17a e 4a.a 87 5.2 Graphics: esecceeeessscesssssssceesscccccessssssessssssscecssccccccssesssessg@MMeccessccccccssessesessssseeees 89 5.2.1 Mau on G3 90 5.2.2 NẾT VỀ ng ng HT TH kh 93 0U na 98 5.2.4 Vẽ các đối tượng hình 200)00)0/72/202)0000//4 eens teateneeateneneees 101 5.2.5.Cac phuong thức tịnh tiến đối tượng: c6 x+k+x‡EeEeEsrsrerererees 105 5.2.6 Vùng xén (C]ipping T€Ø1OTNS): -c c1 61111201111 1n 311111 xk2 105

Chương 6: Lưu trữ thông tin với RÌMS 00G SG 35355555 653 106

6.1 toà 089/15 ố 106 6.2 Duyệt danh sách Record với ReeordEnumerafion - - - -<<< 115 6.3 Sắp xếp bang RecordComparator ccccccscscsssssssssssesssessssvecsesesesesesscncnees 117

6.4 Lọc record với RecordIÏ{€T -:: eeesceccccceessscccccceeessesccssseeesseseses 119

6.5 Nhận thông điệp khi Record Store thay đỔi + sex sxsxsxexd 121 6.6 Xử lý lỗi khi thao tác với Record Store sscscesesesessscesseseevesseeeeees 122 Chương 7: Kết nỗi mạng voi Generic Connection Framework (GCF) 124

TL Gi) thiGu GRC eee ccccccccssccccessssceceseneeeeesesseeecseeseeeesesseeeeseeeeseeseaeeees 124

7.2 Lược đỒ Ớp S111 51 1111111 10111111111 1111111 111111 cerkrkd 124

7.3 Kết nỗi HTTTP: -:-©5+ +22 221221121121122112111112112111111211 1 e0 127

7.3.1:Khởi tạo kẾt nối: . -¿-5c: 2tr2 22211221121 127

7.3.2.Các đặc điểm của kết nỗi HTTP bằng J2ME: . - +: 130 7.3.3 Thông số kết nói: - tk kSE 139191919 3 11111 1 111 1111111515113 137 7.4 Kết nối socket Datagram (UP) ¿6k k+E#E#E#E+EeEeEeEEkrkrkreeeeeeed 138 7.5 Kết nỗi TCP sOCkef - - + St x11 E111 111111115 11111111111 141 7.6 Gti va nhAn SMS woo ằe 144 Phân 2 : Web Serviee và Ứng dụng "Đăng Ký Học Phân"' 149

8.1 Ứng dụng phân tán (Distributed Application) << sssececxcxsxeed 149 8.1.1 GiGi thi 149 8.1.2.Cac van dé nay sinh trong hệ thông ứng dụng phân tán 150 8.1.3.Hạn chế của những mô hình ứng dụng phân tán trước đây 151

8.2 Web Service .ccccscccsecccsccceccccscccscccscccesccuscccesccesccescesccescesssecesscnssceencees 152

Trang 6

6.2.3 Hoạt động của Web S€TVICC - 0000011 v1 1 TH ng 00215111 kg 152

8.2.4.ƯUu điểm của web S€TVỈC - 5 s52 E111 11111111111 E xe 155

8.3 Các thành phần chính của Web Se€FViC€ - - -ccctsesEsEEEkrkrkrkeeeeeed 157

§.3.1.SOAP (Simple ObJect Access ProtocolÌ)) -cccccc++ssssssssssss2 157

§.3.2.WSDL (Web Service Definitlon LanØuàØ©) . -<<<<<<<<ss+2 162 Chương 9: Ứng dụng đăng ký học phân - 2-55 s-seseseeeses 172

VI N?, ái Noi 0ï 07 172

"vi 172 9.1.2 Các chức năng chính: . - 5-5 2221111111111 1111111111588 xx5 172 9.2 Kiến trúc chương trình: . - «+ sSsSxStSSk SE EEEEEESESEEkEkrkrkrkreeeeed 174

9.2.1 Mơ hình kết nối: ¿52 55c 2x2 174

9.2.2 Mơ hình bảo mật (mã hố pasSWOTCÌ): <<2-<s-cccsSss s55 x%2 176

9.3 Phân tích - thiẾt kế: .+ccc+rtHẾẾt tt v28 111 177

9.3.1 Mơ hình uS€ CaS€: TS HH TT ng nen 177

9.3.2 Đặc tả một số use case chính: c¿- is ca HỆ te te EeEvEreEerrerersrrres 178

9.4 Thiết kế mơ hình dữ liệu: - -22+c©5¿+5+2EEvEx+2EveExerrterkerrrrrkerrere 183

9.4.7 Thiết kế ÏỚp): stẾT- sex v31 11919191 3111111101111 H1 1101111111 xe 191

9.5 _ Cài đặt - thử nghiỆm: GG G10 000001111111199331 111111111 kg vv 192

9.5.1 Yêu cầu phần CỨng: -¿- - kkkx#E9E9E SE vcv cv E115 ereei 192 9.5.2 Yêu cầu phần mmÈïm: ⁄ - - kEE9E#E9EEEE SE eEEEEEeEeEeEerrerees 195 9.5.3 Giao điện chương trÌnh: 5 2 2 3222211111111 1111111111118 xx2 195 Chương 10: Tổng 0 205

HN a ên.::tỪ 205

10.2 Hướng phát triỀN: - «<< S31 E1119E5111 111111 11v ng greg 207

Tài liệu tham khảo << << <5 5 3 59 6 8 00 9 956968888889899999999956 210

Phụ Lục A: Hướng dẫn sử dụng cơng cụ Sun Wireless ToolKit 2.3 211

Phụ Lục C: Giới thiệu các thư viện JSIR . - 55555 s5SSSSs2 222

Trang 7

Hình 1.1 Các thiết bị J2ME hỗ trợy ¿52222 22t2ExtEESESEEtErrrkrrrrrrrerrrre 6

Hình 1.2 Các thành phần của J2ME - - + 2S E+E#ESEEEE+EEESEEEEEEEEEEEEEEErkrkrrrreri 7

Hình 1.3 Configurations và các thiẾt bị, ¿+ k+x+ESEESk+kEESEEEEEEkEEEEErkrkrkrrrreee 9 Hình 1.4 Câu trúc chương trình J2ME ¿2 - + +EE+E+E£E+ESEEEEEEEESEeEErkrkrrereee II Hình 1.5 Cấu trúc chương trình MIIDP - - 6 E9E+E+ESESESEEEEEEEEeEeEekeereeeeree 11

Hình 2.1 Cau tritc thiết bị IMITD -5¿5+5++2++2Y+2EEtEESEESEEEEErrrkerkrrrrrkervres 17

li: 08 N0 0ì)ii:ii053 7777 a 34 Hình 3.2 Commaand LabeÏ - 1111111118 8883113119898895311 1111111111118 x.2 36

Hình 3.3 Ánh xạ sof†-buffon - 5 tt Sa S 113211811 E5151115118 1151111511111 E111 Erred 36

Hình 4.1 Sơ đồ các lớp giao diện đồ hoạ, ¿- - Sa HẾT tt tk Erkrkrrereee 40

Hình 4.2 Giao diện đối tượng DateField - - <Ế sỆks sac ekekeeeree 46

Hình 4.3 Giao diện đối tượng Gauge chế độ tương tác ‹z vs 555cc sesesescee 48 Hình 4.4 Giao diện đối tượng Gauge chế độ không tương tác . - +: 49 Hình 4.5 Giao diện đối tượng Stringlfem -c Ềkss EEEEckcekekekekeeeeeree 52

Hình 4.6 Giao dién d6i tuong TextField 2 cu esescscstdesscsssssssscsescscsescscscssesseevevens 56

Hình 4.7 Giao diện đối tượng ChoIceGroup chế độ một lựa chọn - 59 Hình 4.8 Giao diện đối tượng ChoIceGroup chế độ nhiều lựa chọn - 60

Hình 4.9 Giao diện đối tượng List dạng menu - - - + + + Sex £k+kexeeeeeesree 67

Hình 4.10 Giao diện đối tuong List cho phép chọn nhiều lựa chọn - 68

Hình 4.11 Giao diện đối tượng TextOx - - 6 E133 SESEEEExSkckckekekekrererree 71

Hình 4.12 Giao diện đối tượng Á Ï€FẨ .:s¿ - c3 3 SE SE SEEEEx ket gkrerree 76

Hinh 4.13 Giao diện TIICK@Y::::: c5 << E331 181113030 11111 3 1v ve ree 77

Hình 5.I Các phương thức vẽ đường cong . - << 111 ereeeesesssssss 94 Hình 5.2 Các phương thức vẽ hình chữ nhật .- <5 5S + **++SSsssrrssssss 95

Hình 5.3 Các phương thức hỗ trợ vẽ 'Tex( + - + - E13 xxx EErreree 97

Hình 5.4 Các định dạng trong Text Graphic << +11 seeeeeeesesssssss 97 Hình Š.5 Các phương thức tạo ÍOI G1 12211 111119111111 111111 ng, 100 Hình 5.6 Vẽ bằng đối tượng Immutable Image . 2-2-6 + +E+E+EsEsEeEerereei 101 Hình 5.7 Vẽ bằng đôi tượng Mutable Image .- ¿6 6 k+k‡E‡EvEeEsEererrerees 102

Hình 5.8 Các định dạng vị trí trong GraphiCS 55 c++**55eeeeesss 103

Hình 7.1 Lược đồ các lớp trong thư viện GCF 2 6k k+k£E#EeEeEeEererererees 125

Hình 7.2 Kết nối UP - ¿+ 22222+‡E+SEE221221211211271211211711211211111211 1c 138 Hình 7.3 Kết Nối TCP - ¿6-52 222 1221221121122121121117121121111121121111.11 1 c0 141

Hình 7.4 Lược đồ lớp thư viện WIMA - 5+ 2S SE+E‡E+ESEEEEEEEEEEEErkrkrkerererkrkd 145

Hình 8.I Hoạt động của Web S€TVIC€ c1 HH HS SH HH9 20011111 nen 152 Hình 8.2 Một client truy xuất đến nhiều web services cùng lúc -. «- 154

Hình 8.3 Một web service có thê triệu tập đến các web services khác 155

Hình 8.4 Web Service EndpOITIT - - - - - - - << << 10000111 111111 1111198825111 11111 re reg 162 Hình 9.1 Kiến trúc chương trình ứng dụng 6xx k+E#E#EeEeEeEererererees 174 Hình 9.2 Mô hình mã hoá paSSWOT( < << <5 5511 11333333111153555555555555Exeree 176

Trang 8

Hình 9.6 M6 hinh co sO dif 1i@u we ee eecccccccceesssccccseeeesesccsseeessescsssseeeesesseess 190

Hinh 9.7 M6 hinh LOp cee -+ 192

Hinh 9.8 So d6 cdc man hin oo cecceecseessesssessseeseeesecseecseeseceneeseeeneeseeeseeeneesneeneeesees 194

Hình 9.9 Màn hình weÏCOImG 1101133332211 111 111181111111 1 ng 11 nen 195 Hình 9.10 Màn hình đăng nhập - - (<< << << 551111113313 331311338855555155551xexee 196 0n ¡0886000 - a 197 Hình 9.12 Menu chức năng - 111311310111 1111 1111111198523 1 11111 re rre 198

Hình 9.13 Màn hình đăng ký học phần lý thuyẾt - ¿6 s+s+EsE+EsEsrerererees 199 Hình 9.14 Màn hình đăng ký học phần thực hành 2-5-5 2 2+s+E+s+£s£erezxd 200

Hình 9.15 Màn hình xem thời khoá biỂu - c22⁄6%25+cccc+rxesrvsrresrxrrrrree 201

Hình 9.16 Màn hình xem kết quả học tập « sếẤ tk k+k‡k‡EeEsEsEsrerererees 202

Hình 9.17 Màn hình xem phiếu đăng ký - <Ê% se SÖ‡%xk‡xeEeEeEsEererererees 203

Hình 9.18 Màn hình xem thời khoá biỂu é«c¿ .-c65cccc+2EEsrxesrvsrresrxesrrree 204

Hình 10.1 Hướng phát triển thực tẾ s- 5 + +2 SÖ#x Sex +keEeEeErkrkrkerererered 207

Hình A.I Công cụ Sun Wireless Toolklf 2.3 .- c2 rreees 211 Hình A.2 Man hình chính của công CỤ - -c 2226552555511 1 1111113113335 1xsrrrree 212 Hình A.3 Tạo prOJ€Cf TỚI .- 6 1 2112222239851 11 1111111111111 111111 ke rrg 212 Hình A.4 Các options cho DrOJ€CẨ - cZ c0 0001111111111 1191233111111 1 re 213 Hình A.5 Chỉnh sửa nội dung file Jad và ÌÏar . << << ssseeeesss 214 Hình A.6 Biên dich DFOJ€CẨ 22 2022221113101 1 1111111111111 1880235111111 kg 215 Hình A.7 Đóng gói Ứng dỤụng ¿ 00111111111 1 000 01111 1 kh rrg 216 Hình B.I Tạo proJect Web S€TVIC© ‹ 11H 1 ng khen 217 Hình B.2 Khai báo lớp và hàm - - - - - c5 11322210111 11111318811 1111 1188111111 re 218 Hình B.3 Export nhiều hàm cùng lÚc - + 2 2E k+E+E£EE+E+E+EeEeEeEEzErkerererered 219

Hình B.4 Màn hình thực thị Web Service của ÏIE -cc c2 219

80005 n8 À)á4190 16a ae 220 Hinh B.6 Cong cu Stub CienerafOT - - - -< << c 11113 1111111111588535351 111111 errrree 221 Hình B.7 Các options của công cụ Stub CenerafOr << << << ssseessss 221

Trang 9

Bảng 2.2 Cấu trúc file JAA D -¿- - 11113919 5E E191 1111151511111 xxx 20

Bang 3.1 Lop MIDIet i —- dda ốc 27

Bang 3.2 Lop Display ga 29

Bảng 3.3 Lớp DisplayabÌ€ 5 1 1212212111111 111111111111 10003511 1 kg ng 0v 32 Bảng 3.4 Các Command ÏÌYpe - - - - - - - - << << 111111131311131119993311 111111111 ng v2 37 Bảng 3.5 Command và CommandL,1Sf€n€r - << << 1+ #seeeeeeesesssssss 38 Bảng 3.6 Item và ItemSfateL,IS†€TI€T -GGG Q13 000301131119993111 1111111111 kg ng xu 39 0g 8E vi 42

0g 003800 0 44

05g 860i 01 45

015g 8.0003 i0 46

0g Pu a 49

Bảng 4.6 Lớp StringÏfem 1010 Ấn t1 TT ng ngờ 51 Bang 4.7 Cac Rang Buc cua TextField ooo ccccccceessstaccecccceeeeessessssnceeeeeeeeeeeeees 53 Bang 4.8 Lop TextField oo - ` 55

Bảng 4.9 Lớp ChoIceTrOUpD T666 k ng g0 1 ng ng và 58 0g 0080030022117 62

Bảng 4.11 Định dạng [mageÏfem c2 25555 5 2222222313391 1 111EESsssesrsse 62 0g 900380430051 0117 63

Bảng 4.13 So sánh List và CholceOTOUD - c5 5522222202221 1111 11 EESsesesrsse 65 Bang 4.14 LÓP LLISẮ - 26565 0 102000061111191111111 10111111 1111111000311 1k kg v4 66 Bang 4.15 So sánh TextF1eld và TextOX - 111 se 69 0g 080300154 2a aố cá e 79

05g ưu on a.': ằ a 73

05g 6020 5xiJA, na sa 75 05g 68000810 ‹511 218 77

Bang 5.1 Truy van kich thur6c Canvas .c.cccscscsscscscscsscssesssessssssvecsescstsesecscscasasasavevens 79 l0 5m 000i 81

Bảng 5.3 Giao tiếp với Application Manager .ccccccccccscsssssssssesesesesesescececesssevevens 81 in 8n 0 83

0 nha vii0 s0 (6i a ằe Ả 84

0n i0 s06 11 .Ả 85 Bang 5.7 Bat su kién trong Game Action .cccscscccsscscscssssssssescsesessscscscscesasasevevens 86 Bảng 5.8 Sự kiện COIN ẨFỎ G5 2200002222211 1 1111111111111 111111 0 v4 87 Bang 5.9 LOp Graphics 5 i34 90

Bang 5.10 Cac phurong thure V6.0 ccccccccccceeeesssessssnsaeeeeeecceceeesseesessnaaeeeeeeeeeeeeees 93 0i n8 990011 a a 96

ồn 6.82 0 20 .ố.ố a.Ả 96 Bang 5.13 Xu ly Font Chữ 000000 00111111 1111118803111 111kg ng và 98 Bang 5.14 Cac gia tri FOTI{ - 2001010010110 1011311111111 11 11111 ng ng và 99 Bang 5.IŠ Vẽ hình ảnh - 2101011110111 111111 11111180230 6111111 ng ng v2 101

Trang 10

Bang 5.18 Vung 017 105 Bang 6.1 M6 hinh Record Store ccccssssssccccccccceeseseesessnsccceeeeeccceeeeseeesesssnaeeeeees 107 l?0158 0928 Pu csviih3i 0777 ^ 109 Bang 6.3 Lop RecordEnumeration . << c5 c s3 3333333333 %%3355555555555sxrres 117 Bảng 6.4 Các giá trị hằng để sắp xẾp r€€OTC cv EEEESEsEererererees 118 Bảng 6.5 Lớp RecordListenes .cccccessssccceccccceeeesseessssnscceceeeccceeeeeseeeessssaeaaeeees 121 Bang 7.1 LOp Comme ctor .cccccccccccccccccceeeeeeeeeeeeeeeeeeceeeeeeeeeeeeeeeeceseeeeeeeeeeseeeseeeeeeeeess 128

Bang 7.2 Mode Kết Nối - - G1111 1191915151311 1111101 1 1101110111101 re 128

Bảng 7.3 Các Request Method chính << 5-5 2 3323333333333 xxxxes 130 Bang 7.4 Các phương thức set/get Request Method -«-<<<<<<++++2 131 Bang 7.5 Các phương thire truy van HTTP Header cccccesdeecssssessssseseseeeeseeeeee 134 Bang 7.6 Lay thong s6 két n6i ccc ccccecccccsccssssssssseescscscesdbensscecscsssssssvevsretevseeeeees 137 Bang 7.7 Lop DatagramConnection .cccccccccccccceesessnsbbecsccceestbecceeeeesseessssnaaeeeees 139 Bang 7.8 Lop Datagram .ccccccccccccccceeeeeeeeeeeeeeeeeecadeeaneceecccccececesececeeeeseeeeeeeeeeeeass 140 Bảng 7.9 Thuộc tính của SocketConnecCfIOT ¿ - s65 5522333 *++*35555555555exeess 142 Bảng 7.10 Lớp SocketConn€CfIOTi 955cc 11130111111 111118553531 1111111 re ree 143 Bang 7.11 Các interfaces chính của WÌMA c 2216641 c0 0001 H HH 11111 re reg 144 Bảng 9.1 Danh sách các se ae .z¿ - c2 2c cc c0 0111311111111 1118333311111 1 11 rrrrree 178 Bảng 9.2 Table ChuyenNganh c0 11H SH ng 000111 1 khe 184 Bảng 9.3 Table SV HN HT HH ng g0 T000 6 1 ke 184 Bang 9.4 Table MonH0e a 185 015g T58; 560.1 ae 185 lồn 50 NJN;1 400 nnnndạ acc 185 Bảng 9.7 Table Lop_ Mon L/T” - - c1 011 1111111111111188823311 1111111 re ree 186 Bảng 9.8 Table Lop_MonÏTÌH - c1 11 1113111111111188853311 1111111 rrrree 187 Bảng 9.9 Table PhanCongTÌH-‹‹ - ( ( -c02010101011111111111111115858343511 111111 rrrre 187 Bảng 9.10 Table DangKyT - 0111011111111 13111 1111111885551 111111 errrree 187 Bảng 9.11 Table DangKy TH - - (<< <11011111111111 1111115588535 erree 187 Bang 9.12-Table ThongBao . 0030010101 11111 1111111118002 11 11k khe 188

Trang 11

API Application Program Interface

CDC Connected Device Configuration

CLDC Connected Limited Device Configuration

Đặc tả qui định cõc thư viện gốc J2ME phải hỗ trợ cho một dúng Configuration `

phón cứng

DES Thuật toõn mọ hụa khụa bợ mật 64 bits

GCF General Connection Framework

IIS Internet Information Services-Web server chuan trờn Windows J2EE Java 2 EnterpIse Edition, phiởn bản Java cho những dự õn lớn

J2ME Java 2 Micro Edition, phiờn ban Java cho những thiết bị nhỏ

Java 2 Standard Edition, phiđờn ban Java ra doi dau tiờn, danh cho

xẻ PC thừng thường

JCP Tổ chức Java Community Prựcess

JDK Java Development Kits

Java Specification Requests, nhitng yờu cau can bố sung cho cõc

IS phiờn ban Java

JSR-172 Thư viện truy xuất web service cho ngừn ngữ J2ME

JSR-177 Thư viện mọ hụa vỏ bảo mật cho ngừn ngữ J2ME

KVM Mõy ảo Java cho mừi trường CLDC

MIDlet Tởn gọi chung cho cõc ứng dụng J2ME

MIDP Mobile Information Device Profile

Multimedia Message Service, tin nhan hinh anh, 4m thanh, video

Wms cho di động

PDA Personal Digital Assistant

Profile Cac tap thu viờn cap cao dinh nghia trờn nờn Configuration

RMS RecordStore Management System, cơ chế lưu trữ của J2ME

Trang 12

SOAP Simple Object Access Protocol, dinh dạng thông điệp cua Web

Service

Symbian Hệ điều hành cho điện thoại di động của hãng Symbian

UDDI Universal Description, Discovery, and Integration

Web Service | Giao thic goi ham tu xa dua trén XML va HTTP

WMA Wireless Message API

WSDL Web Service Definition Language

XML Extensible Markup Language

Trang 13

A)»⁄

Lời Nói Đâu

Mạng điện thoại di động xuất hiện tại Việt Nam từ đầu những năm 1990 và

theo thời gian, số lượng các thuê bao cũng như các nhà cung cấp dịch vụ di động tại Việt Nam ngày càng tăng Cùng với sự phát triển của số lượng thuê bao di động là

sự đa dạng hoá các dịch vụ hướng đến thiết bị di động Ngày nay điện thoại di động

không chỉ còn mang chức năng gọi điện hay nhắn tin thông thường mà còn là một

thiết bị giải trí, tra cứu thông tin rất tiện lợi Do đó, xây dựng các ứng dụng cho điện

thoại di động đang là một yêu cầu tất yếu trong xu thế hiện nay Ngành công nghiệp

phan mém cho cac thiét bi di dong duoc xem nhu mot manh đất màu mỡ và hứa hẹn

đem lại nhiều tỉ đô la doanh thu

Hai hướng phát triển ứng dụng trên điện thoại di động phô biến hiện nay là

sử dụng ngôn ngữ C++ trên nền hệ điều hành Symbian và J2ME Các ứng dụng viết trên nền Symbian có các ưu thế truy cập trực tiếp các tài nguyên của điện thoại cũng

như hỗ trợ hệ thống tập tin, thứ mục như máy tính cá nhân vì được hỗ trợ trực

tiếp bởi hệ điều hành Tuy nhiên hệ điều hành Symbian lại có kích thước khá lớn

nên chỉ có ở các thế hệ điện thoại tương đối cao cấp, và xây dựng ứng dụng dùng

Symbian API cũng phức tạp hơn

Đối trọng với Symbian API là công nghệ J2ME với kích thước nhỏ gọn,

tiện dụng, được hỗ trợ bởi hầu hết các thế hệ điện thoại mới ra đời, kế cả các điện

thoại có hệ điều hành Symbian J2ME không những là một ngôn ngữ hướng đến các

thiết bị di động mà còn là ngôn ngữ chính để lập trình trên các thiết bị gia dung, the

tín dụng điện tử và các thiết bị thông minh khác Chúng ta có thể nói đối tượng của ngôn ngữ J2ME là rộng hơn rất nhiều so với C++ trên nên Symbian Tai thoi diém

hiện tại, ngôn ngữ J2ME không hỗ trợ được nhiều tính năng như C++ trên Symbian

nhưng lại có những ưu điểm trội hơn

J2ME là một ngôn ngữ nhỏ, gọn nhưng rất chặt chẽ và dễ năm bắt, với những lập trình viên đã có kinh nghiệm với Java việc lập trình với J2ME trở nên rất

Trang 14

dễ dàng J2ME còn là một ngôn ngữ được các tổ chức mã nguồn mở ủng hộ mạnh

mé và phát triển rất nhanh chóng JCP (Java Community Process- http://www.jcp.org) la một chương trình do Sun thành lập luôn tiếp thu các ý kiến

và đưa ra các đặc tả mới dành cho Java nói chung và J2ME nói riêng Các đặc tả này thường có tiếp đầu ngữ JSR và là các tính năng bố sung mới cho J2ME

Những JSR quan trọng có thể được nhắc đến như JSR-82 (Bluetooth), JSR

205 (Gui tin nhan 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à phan nào phát triển nhanh hơn cả sự phát triển của phần cứng

Thật khó so sánh giữa các dòng ngôn ngữ lập trình với nhau vì mỗi loại đều

có ưu và khuyết điểm riêng Trong luận văn của mình, chúng tôi chọn nghiên cứu

về J2ME vì những ưu điểm khá rõ ràng đã nêu trên, mặt khác chúng tôi cũng muốn thử sức ở một lãnh vực khá mới mẻ là tiếp cận với phần mềm mã nguồn mở

Về chương trình ứng dụng, tính khả thi và thực tế ngày cảng được đề cao Chúng tôi nhận thấy xu hướng mở rộng các ứng dụng trên web sang điện thoại di động đang được chú trọng Thương mại điện tử (e-commerce) đang tiễn dần sang thương mại di động (m-commerce): Với thực trạng Việt Nam hiện nay, số người sở hữu máy vi tính cá nhân, đặc biệt là máy tính xách tay chưa nhiều nhưng tỉ lệ số

người có điện thoại đi động lại khá cao Việc chuyển các ứng dụng thương mại từ

môi trường web sang môi trường di động sẽ khiến sự tiện dụng tăng cao, số người

sử dụng dịch vụ trực tuyến chắc chăn sẽ tăng nhanh vì đối với nhiều người chiếc điện thoại di động dễ sử dụng hơn rất nhiều so với chiếc máy tính "phức tạp và khó

hiểu"

Ứng dụng chúng tôi chọn thực hiện để bước chân vào lãnh vực khá mới mẻ

này là ứng dụng "Đăng Ký Học Phần" qua mạng di động Đối với sinh viên khoa công nghệ thông tin, hệ thống đăng ký hoc phan SMS qua môi trường web là một ứng dụng rất quen thuộc Chúng tôi muốn phát triển ứng dụng của mình như một

mở rộng của hệ thống đăng ký học phân này trên điện thoại di động nhằm hỗ trợ các bạn sinh viên có thê sử dụng các tiện ích của hệ thông mà không cân phải có máy

Trang 15

tính kết nối mạng Với ứng dụng nảy, tính tiện dụng của hệ thông đăng ký học phần

SMS đã được mở rộng Chỉ cần có một điện thoại di động hỗ trợ GPRS các bạn sinh

viên có thế đăng ký học phần ngay cả khi đang về quê ăn tết ở những vùng internet chưa phố biến nhưng đã phủ sóng di động hay khi đang di chuyên trên tàu xe Vì

một số điều kiện đặc biệt của điện thoại, hiện nay ứng dụng này chỉ chạy trên

chương trình giả lập Tuy nhiên, chúng tôi hi vọng trong một tương lai rất gần, khi

các thế hệ điện thoại mới có giá thành vừa phải ra đời và hỗ trợ một số công nghệ

như WebService, mã hoá mà chúng tôi đang sử dụng để xây dựng phần mềm thì ứng dụng này có thể được áp dụng rộng rãi trong thực tế cho sinh viên của khoa

Cần phải nói thêm, ứng dụng hiện tại hoàn toàn có thể sử dụng được trong thực tế

Việt Nam nhưng có một số đòi hỏi về thiết bị khá đắt tiền (xin xem thêm Chương

10, phần Kết Luận), chứ không chỉ mới là lý thuyết trên giấy tờ

Với việc xây dựng thành công hệ thống đăng ký học phần qua mạng điện

thoại di động, chúng tôi rất tự tin về việc xây dựng các hệ thống thương mại di động

lớn hơn Trong tương lai gần, khách hàng có thể ngôi trên taxi mua vé máy bay, đặt chỗ khách sạn, xem lại tài khoản ngân hàng với chiếc điện thoại di động nhỏ bé

Chiếc điện thoại di động sẽ trở thành một công cụ giao dịch không thể thiếu trong thời đại mới, thời đại của thương mại điện tử toàn cầu

Luận văn được trình bày thành hai phần lớp:

Phần 1: Giới thiệu về lý thuyết nên tảng của J2ME, các thư viện, các kỹ thuật lập

trình, đóng gói ứng dụng di động

Chương 1 Tổng quan về J2ME : Giới thiệu tong quan về J2ME, các đặc điểm và

các thành phần con

Chương 2 Giới thiệu CLDC và MIDP: Trình bày chỉ tiết về hai thành phần quan

trọng của J2ME dành cho điện thoại di động, môi trường phát triển ung dung J2ME

Chương 3 Các vẫn dé cơ bản của chương trình MIDIet: Chương này sẽ trình bảy những đặc điểm quan trọng nhất của một ứng dụng J2ME, các bước cơ bản để xây dựng ứng dụng này

Trang 16

Chương 4 Giao diện đồ họa cấp cao: Trình bày về thư viện đồ họa cấp cao như Form, LIst, TextBox trong J2ME

Chương 5 Giao diện đồ họa cấp thấp: Trình bày vẻ lập trình đỗ họa cấp thấp, các phương thức vẽ, xử lý font, game action trong J2ME

Chương 6 Lưu trữ thông tin với RMS: Trình bảy về Record Management System, một cơ chế lưu trữ riêng của J2ME

Chương 7 Lập trình mạng vơi GCE: Trình bày về khả năng lập trình mạng trong J2ME

Phần 2: Giới thiệu về Web Service, một công nghệ rất mới để xây dựng các ứng

dụng thương mại điện tử phân tán và giới thiệu chỉ tiết về ứng dụng cùng những đánh giá, tổng kết

Chương 8 Giới thiệu về ứng dụng phan tan va web service

Chương 9 Trình bày chỉ tiết về ứng dụng "Đăng Ký Học Phan"

Chương 10 Đánh giá, tổng kết các kết quả đạt được và hướng phát triển trong tương lai

Tuy đã đầu tư khá nhiều thì giờ và công sức vào luận văn này nhưng chắc chắn chúng tôi cũng không tránh khỏi những sai sót Rất mong nhận được ý kiến đóng góp và sự thông cảm của quý thây cô và các bạn! Xin chân thành cảm on!

Kim Anh — Anh Tuấn

Trang 17

Phân 1: Kiến thức nên tảng J2ME

Chương 1: Tổng quan về J2ME

J2ME là một nhánh của ngôn ngữ lập trình JAVA được phát triển nham hướng

tới việc lập trình cho các thiết bị “nhỏ” (micro) có bộ nhớ, khả năng hiển thị và xử

lý hạn chế

Ban đầu Java được xây dựng chỉ gồm một phiên bản duy nhất, ngày nay được

biết đến với tên J2SE (Java 2 Standard Edition), với phương châm là “viết một lần,

chạy trên mọi môi trường” (“Write once, run anywhere”) Java được hình thành trên

ý tưởng xây dựng một ngôn ngữ mà lập trình viên chỉ cần viết một lần duy nhất nhưng ứng dụng có thể chạy trên bất cứ môi trường nảo có hỗ trợ máy ảo Java (Java

Virtual Machine) Để làm được việc này, Java sử dụng một phương thức biên dịch

mã nguồn tương đối khác so với các ngôn ngữ lập trình truyền thống Bộ biên dịch Java không biên dịch mã nguồn trực tiếp sang mã máy mà biên dịch sang một dạng

mã trung gian mà máy ảo Java hiểu được (mã bytecode) Khi có nhu cầu sử dụng ứng dụng, máy ảo Java sẽ đọc mã trung gian này và dịch ra mã máy và thực thi; nhờ vào quá trình trưng gian đó một ứng dụng Java có thể chạy trên bất kỳ môi trường nào có cài đặt máy ảo Java tương thích

Được giới thiệu lần đầu vào năm 1995, ngày nay mục tiêu Java nhắm đến cũng

đã thay đối khá nhiều Java hiện nay không chỉ nhắm đến họ máy tính để bàn đơn

thuần; hai năm sau ngày đầu được ra mắt, một phiên bản Java mới là J2EE (Java 2

Enterprise Edition) đã được giới thiệu nhăm tới việc phát triển các ứng dụng có qui

Trang 18

đem lại nhiều tỉ đô la doanh thu Một thực tế đặt ra cho các nhà phát triển phần

mềm trên các thiết bị này là hiện nay không có một chuẩn hóa nào dành cho các nhà sản xuất phần cứng Các thiết bị trên thị trường hiện nay rất đa dạng và mang nhiều

đặc điểm cũng như cầu hình khác nhau Trước thực tế đó, việc có thể chạy trên

nhiều môi trường là một lợi thế rất lớn của ngôn ngữ Java Các nhà phát triển Java

đã cho ra đời ngôn ngữ J2ME hướng đến việc phát triển phần mềm cho các thiết bị

di động Ngôn ngữ J2ME thực sự là một ngôn ngữ nhỏ gọn, dễ năm bắt, chặt chẽ và

thích hợp cho các thiết bị.eó khả năng hạn chế Các thiết bị di động trên thị trường hiện nay, đặc biệt là điện thoại di động hầu hết đều hỗ trợ rất tốt ngôn ngữ J2ME và

J2ME thực sự đã trở thành một trong những ngôn ngữ phố biến nhất trong lãnh vực

2 & Ƒ lập trình di động

Cellular phones

navigational systems

Automobile entertainment

TV set-top boxes systems | Point-of-sale

systems

Hình 1.1 Các thiết bị J2ME hỗ trợ

Trang 19

1.3 Các thành phân của J2ME:

có kích thước vật lý khác nhau nhiều lần và cho dù cùng kích thước những thiết bị

này vẫn có khả năng xử lý cũng như hiến thị khác nhau ( những chiếc điện thoại

hiển thị 12,000 pixels cho đến những chiếc PDA 20,000 pixels) Để đáp ứng được

nhu cầu khác nhau của những thiết bị này, bản thân ngôn ngữ J2ME cũng được chia thành những thành phần nhỏ hơn

Ching ta sé tim hiéu hai khainiém mdi la Configurations va Profiles

1.3.1 Configuration:

Đề đáp ứng nhu cầu cho nhiều chủng loại thiết bị khác nhau Sun đã đưa ra khái niệm Configuration Khái niệm Configuration có mối liên hệ chặt chẽ với máy ảo Java Nói chính xác hơn, một Configuration qui định những thành phần và những thư viện gốc của ngôn ngữ Java mà máy ảo phải hỗ trợ cho configuration đó

Việc phân chia thành những Configurations khác nhau chủ yếu dựa vào khả

năng bộ nhớ, năng lực hiển thị, năng lực xử lý và khả năng kết nói mạng của các

thiết bị Như chúng ta đã biết, các thiết bị di động rất khác nhau về nguôn tải

nguyên, về khả năng phần cứng Với những thiết bị có năng lực hạn chế, nếu ta đưa

Trang 20

quá nhiều thư viện hỗ trợ vào máy ảo trên thiết bị đó sẽ gây chậm hệ thống và dư thừa không cần thiết Với những thiết bị có khả năng cao hơn, chúng ta sẽ đưa thêm nhiều thư viện hỗ trợ vào máy ảo giúp ích cho công việc lập trình của các nhà phát triển Do đó, nhu cầu phân chia thành nhiều Configurations là việc cần thiết

Hiện nay Sun đã đưa ra hai loại Configurations khác nhau:

CDC (Connected Device Configuration):

e 512 kb (minimum) bộ nhớ để chạy Java

e 256 kb (minimum) bộ nhớ cấp phát động

e© Kết nối mạng liên tục, băng thông rộng

CLDC(Connected Limited Device Configuration):

e 128 kb (minimum) bé nho dé chay Java

32 kb (minimum) bộ nhớ cấp phát động

Giao diện người dùng hạn chê

Năng lượng tiêu tốn ít (chủ yếu dùng pin)

Kết nỗi mạng Wireless, chậm

Việc phân chia này thực chất cũng chỉ mang tính tương đối Công nghệ hiện nay đang phát triển khá nhanh, và việc phát triển này cảng làm cho ranh giới giữa các loại Configuration này trở nên không rõ ràng

Trang 21

Ta có thể xem Profile là một mở rộng của khái niệm Configuration Profile định

nghĩa các thư viện giúp lập trình viên phát triển phát triển ứng dụng cho một dạng thiết bị nào đó Ví dụ Mobile Information Device Profile (MIDP) định nghĩa các

hàm API cho các thành phan giao diện, nhập liệu và xử lý sự kiện, lưu trữ, kết nối

mạng và xử lý thời gian, phù hợp với màn hình hiển thị và khả năng xử lý của các

thiết bị di động Profile MIDP được định nghĩa trên nền tảng của CLDC Ngoài ra

chúng ta còn một số Profile tiêu biểu khác như

— PDA Profile: tương tự MIDP, nhưng với thị trường là các máy PDA với màn hình và bộ nhớ lớn hơn

Trang 22

— Foundation Profile: cho phép mở rộng các tính năng của CDC với phan lớn

các thư viện của bộ Core Java2 1.3

— Ngoai ra con co Personal Basis Profile, Personal Profile, RMI Profile, Game

Profile

Luận văn chủ yếu chỉ dé cập đến Profile MIDP và các thư viện liên quan dé

phục vụ cho việc viết ứng dụng trên điện thoại di động

Như chúng ta đã biết, một chương trình Java sẽ được biên dịch thành mã trung

gian sau đó chính máy ảo Java sẽ biên dịch phần mã này sang mã máy để thực thi Máy ảo Java sẽ chịu trách nhiệm việc cung cấp tính năng bảo mật, cấp phát và thu

hồi bộ nhớ và quản lý việc điều phối các tiễn trình Chúng ta có thể nói chính máy

ảo Java làm cho chương trình của chúng ta “chạy”

Voi CDC, may ảo Java có cùng các đặc tính như J2SE Tuy nhiên, với CLUDC, Sun đã phát triển riêng một dạng máy ảo chuyên biệt được gọi là K Virtual Machine, gọi tắt là KVM Chính những hạn chế về tải nguyên của các thiết bị di động đã đề ra nhu cầu về sự ra đời của KVM KVM không phải là một máy ảo Java

“truyền thống”:

e Máy ảo chỉ cần 40-80 kb.bộ nhớ

e Chỉ đòi hỏi 20-40 kb bộ nhớ động (heap)

e Có thể chạy với bộ vi xử lý 16-bit và xung nhịp 25 MH¿

Đến đây chúng ta có thể hình dung phần nảo cấu trúc tổng thể của một chương

trình J2ME như sau:

10

Trang 23

Profile

Configuration

lava Virtual Machine

Host Operating System

Hình 1.4 Cấu trúc chương trình J2ME

Nếu chương trình được biên dịch với CDC, chương trình sẽ chạy trên các máy

ảo “truyền thống” và mang các đặc tính như chương trình J2SE

Nếu chương trình được biên dịch với‹CLDC, chương trình sẽ chạy với máy ảo chuyên biệt KWM và những đặc tính riêng do CLDC đòi hỏi

Với chương trình xây dựng bởi MIDP, chúng ta có câu trúc chuyên biệt sau:

Trang 24

môi trường nào” của Sun không còn đúng hoàn toàn vì đã xuất hiện máy ảo chuyên biệt KVM Một số chương trình viết bằng MIDP sẽ không chạy trên môi trường J2SE và ngược lại Tuy nhiên chúng ta phải cảm kích các nỗ lực của Sun đã giúp cho Java trở thành một trong những ngôn ngữ có khả năng độc lập với môi trường

bên dưới nhất hiện nay, điều này đúng với cả môi trường thiết bị di động

Ở những phần tiếp theo chúng ta sẽ tìm hiểu kỹ hơn về hai thành phần cơ bản của J2ME là Configuration va Profile

12

Trang 25

Chương 2: Giới thiệu CLDC và MIDP

2.1.1 Yêu cầu phân cứng:

Khi đề ra yêu cầu về phần cứng việc xem xét các chi tiết như bộ xử lý, bộ nhớ

và các phần mềm hiện có trên các thiết bị di động là việc vô cùng quan trọng Nhằm mục đích phục vụ tối đa các thiết bị hiện có trên thị trường, CLDC chỉ đề ra các yêu

cầu về bộ nhớ và không đề ra yêu cau nao cho các thành phần khác Yêu cầu tối thiểu để có thể sử dụng CLDC như sau:

e 128 kilobytes dé chay JVM và các thư viện cửa CLDC Không phân biệt loại

bộ nhớ sử dụng (Rom, Flash, ), bộ nhớ của thiết bị phải bảo lưu được nội

dung lâu dài, ngay cả khi ngắt điện Bộ nhớ này thường được gọi là nonvolatile memory

e 32 kilobytes bộ nhớ trống để cấp phát các đối tượng (objects) Bộ nhớ này thường được gọi la volatile memory (hay la “heap’’)

2.1.2 Yéu cau phanmém:

CLDC có yêu cầu tối thiểu về mặt phần mém Hệ điều hành phải tương thích với

JVM và có chức năng quản lý các ứng dụng Java, bao gồm:

e Cho phép chọn và kích hoạt ứng dụng

e Cho phép gỡ bỏ ứng dụng khỏi thiết bị

2.1.3 May ao Java:

Do các thiết bị di động dùng CLDC thường có tài nguyên hạn chế nên Sun đã đề

ra máy ảo Java KVM phục vụ riêng cho các thiết bị này Máy ảo KVM thực chất là

một bộ phận con của các máy ảo trên môi trường J2SE và J2EE nên cũng có nhiều hạn chê và khác biệt so với hai phiên bản trên

13

Trang 26

Một số hạn chế:

e Không hỗ trợ kiểu dữ liệu float: Việc sử lý số float đòi hỏi nhiều tài

nguyên xử lý, ngoài ra các thiết bị di động không có những câu hình phần cứng dành riêng cho việc xứ lý số float nên trong J2ME chúng ta không thể khai báo các biến, mảng float, các hàm cũng không nhận tham số va trả về các số float

e Phương thức finalize: Trong J2SE, chúng ta có thể khai báo phương thức finalize (trong tu nhu phuong thuc destructor) Garbage Collector sé gọi phương thức này trước khi hủy bỏ một đối tượng, phương thức này thường được dùng để thu hồi các tài nguyên hệ thống như sockets, file

handles trước khi đối tượng bị “phá hủy” Tuy nhiên trong J2ME chúng

ta không có phương thức finalize

e Error Handling: Trong J2ME chúng ta vẫn được hỗ trợ các công cụ về bẫy lỗi (chủ yếu thông qua try và éatch) Tuy nhiên khả năng về xử lý lỗi của J2ME cũng hạn chế hơn với hai phiên bản còn lại

e Không hỗ trợ việc sử đụng code của các ngôn ngữ lập trình khác

e Khong hé tro Reflection: Trong J2SE và J2EE, chúng ta có thể dùng các lớp Reflection để tìm hiểu thông số môi trường máy ảo Java đang thực thi

e Không hỗ trợ ThreadGroup: mỗi thread được quản lý riêng biệt, không còn lớp ThreadGroup Nếu muốn điều khiển một lúc nhiều threads chúng

fa có thê dùng mảng hoặc Vector

J2ME cũng còn một số điểm khác biệt so với J2SE và J2EE, một trong những khác biệt chính là quá trình Class Verify (tạm dịch là “kiểm tra lớp”) Các lớp trước khi được load sẽ thông qua một quá trình “kiểm tra” về sự hợp lệ và tính nguyên vẹn Đây là một cơ chế quan trọng để bảo đảm an toàn (security) của Java Quá trình này trong J2SE và J2EE có thể chiếm dén 50 kbytes bộ nhớ, trong J2ME chúng được chia thành 2 giai đoạn:

14

Trang 27

e Tiền kiểm tra (Pre-verification): Trước khi một lớp được nạp vào thiết bi,

một phần mềm sẽ được sử dụng để thêm vào một số thông số bố sung vảo file class Quá trình này giảm thời gian và bộ nhớ cần thiết để máy ảo thực hiện giai đoạn 2 trong quá trình kiểm tra File class sau khi được “tiền kiểm tra” sẽ tăng dung lượng khoảng 5%

e© Kiểm tra nội thiết bị (In-device verification): Khi thiết bị nạp các file class

đã được tiền kiểm tra, công cụ kiểm tra trong thiết bị sẽ thực hiện một vài kiểm tra để xác nhận tính hợp lệ của đoạn code Nếu phát hiện một lỗi nào

đó bộ kiểm tra sẽ phát sinh báo cáo và từ chối nạp lớp đối tượng vào bộ

nhớ Quá trình này đòi hỏi ít bộ nhớ và tài ngúyên hơn nhiều lần so với

trong J2SE va J2EE

CLDC không hỗ trợ tất cả các lớp và thư viện được hỗ trợ trong ngôn ngữ Java

truyền thống mà chỉ hỗ trợ những thư viện thật sự cần thiết đối với thiết bị di động

Ngoài ra trong CLDC chúng ta cũng được hỗ trợ việc truy vẫn một số thuộc tính của hệ thống:

e Lay thong tin về platform của thiết bị:

Svstem.getProperty("microedition.platform”) e© Lấy thông tin về bảng mã mặc định:

System.getProperty("microedition.encoding") e© Lấy trông tin về Version và tên của configuration:

System.getProperty("microedition.configuration")

e Lay thong tin vé Profile:

System.getProperty("microedition profiles") Ngoài ra chúng ta có thể truy cập lớp Runtime để lấy các thông số về thiết bị như:

Runtime rtime= Runtime.getRuntime();

System.out.printIn("Total memory: " + rtime.totalMemory());

//thông tin về tổng bộ nhớ

System.out.printIn("Free memory: " + rtime.freeMemory());

//thông tin về bộ nhớ trông

15

Trang 28

2.2 MIDP:

2.2.1 Yêu cầu phần cứng:

e Màn hình ít nhất phải có 96 x 54 pixels

e Có ít nhất một thiết bị nhập liệu: bản phím hoặc màn hình cảm ứng

e Có ít nhất 128 kilobytes bộ nhớ non-volatile để chạy các thành phần của MID

e Có ít nhất 8 kilobytes bộ nhớ non-volatile để lưu các cầu hình chương trình và dữ

liệu

e Có ít nhất 32 kilobytes để chạy Java

e Có kết nối không dây (wireless network)

2.2.2 Yêu cầu phần mềm:

Mặc dù hệ điều hành của từng thiết.bị có thể khác nhau nhưng phải đáp ứng

được các yêu cầu tối thiểu sau:

e Hệ điều hành phải hỗ trợ việc xử lý ngắt, xử lý exception và hỗ trợ xử lý đồ

hoa bitmap để xuất dữ liệu ra màn hình

e Hệ điều hành phải nhận được tín hiệu nhập liệu (input) và chuyển dữ liệu đó cho máy ảo Java

e Hệ điều hành phải hỗ trợ việc đọc/ghi vào bộ nhớ non-volatile Không đòi hỏi

hệ điều hành phải định nghĩa file system nhưng phải cho phép ghi dữ liệu dạng persistent (không bị mắt đi khi tắt máy, ngắt điện)

e© Phải hỗ trợ truy xuất mạng đặc biệt phải có tính năng đọc/phi dữ liệu thông

qua mạng không dây (wireless network)

2.2.3 Cấu trúc MID Profile:

16

Trang 29

MIDP OEM-Specific Native Applications Applications Applications

^ ` A OEM-Specific ` ly mà

Classes

Mobile Information Device Profile (MIDP)

Connected Limited Device Configuration (CLDC)

-

Hình 2.1 Cấu trúc thiết bị MID

Tầng dưới cùng là phần cứng của thiết bị đi động Bên trên phần cứng ta có hệ

điều hành điều khiến các hoạt động

Bên trên hệ điều hành ta có thể chia thành 2 phần riêng biệt Chúng ta sẽ thấy phan bên phải là các chương trình native application (tam dịch là “chương trình nguyên gốc”) Trước khi J2ME ra đời, thông thường đây là loại chương trình duy nhất có trên các thiết bị Đây là loại chương trình được nhà sản xuất đưa sẵn vào máy di động lúc sản xuất như chương trình chọn tiếng chuông, chỉnh thông số điện thoại, chỉnh giờ Chính nhờ J2ME ra đời chúng ta mới có chức năng cài đặt thêm

các chương trình được viết thêm vào điện thoại

CLDC là nền tảng cơ bản cho MID Profile, các chương trình MIDP (MIDP

Applications) có thể sử dụng các lớp được cung cấp bởi cả CLDC và MIDP Ngoài

ra chúng ta còn có các lớp OEM (original equipment manufacturer) là các lớp do các nhà sản xuất cung cấp thêm cho điện thoại (các hãng như Nokia, Samsung, Motorola thường có thêm nhiều lớp cấp cao hỗ trợ cho lập trình viên) và bên trên

là các ứng dụng được xây dựng từ các lớp này, các ứng dụng này thường chỉ chạy trên các điện thoại của hãng đã cung cấp thư viện lơp OEM

17

Trang 30

2.2.4 MIDIet Suite:

Chúng ta gọi chương trình Java chạy trên thiết bị di động là một MIDlet MIDlet

sẽ sử dụng các lớp cung cấp bởi CLDC và MIDP Một MIDIet Suite (một bộ MIDIet) chứa một hay nhiều ứng dụng MIDIet được nén chung trong một file JAR (Java Archive)

Cau truc file Jar:

Ngoài các file lớp và resource, trong file ]ar còn có một tập tin được gọi là

manifest Day la tap tin mo tả nội dung của toàn file Jar Tap tin nay có tên manifest.mf va ban than no cting duge nén trong file Jar Trong file manifest chung

ta có thể định nghĩa các thuộc tính của file jar nhưng quañ trọng nhất là 6 thuộc tính sau:

MIDlet-Vendor Cho biết người tạo MIDIet Suite Có

MIDIet-<n> Tham chiếu đến từng MIDIet trong bộ | Có

MIDIet (trong file Jar), mỗi một MIDIet cần một mẫu tin này, mẫu tin này gồm 3 mẫu tin con:

Tén MIDlet

18

Trang 31

File leon MIDIet (có thể không cân) Tên lớp sẽ được nạp khi thực thi MIDlet này

MicroEdition- Tên profile cân thiết để chạy MIDIet nay, | Co

Profile thường là MIDPI1.0 hoặc MIDP2.0

MicroEdition Configuration cân để chạy MIDIet (thường | Có

Configuration là CLDC 1.0)

MIDlet-lcon File Icon (.pgn) của bộ MIDlet Không

MIDlIlet-Description | Mô tả (text) cua bo MIDlet Không

MIDIet-Info-URL_ | Địa chỉ trang web nhà phát triển MIDIet Không

Bang 2.1 Cau truc file manifest

Day la mot vi du don gian cua file manifest:

MIDIet-Name: Todo List

MDlet-Version: 1.0

MMIDIet-Vendor: Core J2ME

MMIDlet-I: TodoList, /„úmages/Todo.png, Todo TlodoMIDIet

MicroEdition-Profile: MIDP-1.0

MicroEdition-Configuration: CLDC-1.0

File JAD (Java Application Descriptor File):

Bên cạnh file Jar, một bộ ứng dụng MIIDlet còn có thêm file JAD (.jad) để cung

cấp thông tin về các MIDIet trong file JAR Việc đặt ra file JAD có một số mục đích sau:

e Cung cấp thông tin về nội dung file Jar Từ thông tin nảy, bộ quản lý ứng dụng

trên thiết bị mới quyết định ứng dụng này có thích hợp để chạy trên thiết bị hay

không

e Cung cấp các tham số dùng cho MIDIet để tránh thay đối file JAR File JAR chứa mã ứng dụng nên cần tránh bị thay đổi

19

Trang 32

Danh sách các thuộc tính trong file Jad:

MIDlet-Vendor Cho biết người tạo MIDIet Suite Có

MIDIet-<n> Tham chiếu đến từng MIDIet trong bộ | Có

MIDIet (trong file Jar), mỗi một MIDIet cần một mẫu tin này, mẫu tin này gồm 3 mẫu tin con:

Tên MIDIet File Icon MIDlet (co thé khong can) Tên lớp sẽ được nạp khi thực thi MIDlet này

MIDIet-Jar-URL Dia chi URL cua file Jar Có

MIDIet-Jar-S1ze Kích thước file Jar tính băng byte Có

MIDIet-Data-Size | Kích thước tôi thiểu tính băng byte để ghi | Không

các dữ liệu của chương trình (persistent đata)

MIDlet-Description | Mô tả MIDIet (dạng text) Không

MIDIet-Delete- Thông báo nhặc nhở khi xóa MIDIet Không

Confirm

MIDlet-Install- URL nhận thông báo về quá trình cài đặt Không

Notify

Bang 2.2 Cau tric file JAD

Ta cũng có thể định nghĩa thêm các thuộc tính riêng, bắt đầu bằng “MIDIet-“ tùy theo mục đích của lập trình viên Những thuộc tính sau phải giống nhau ở file Jad

và file manifest (năm trong file Jar):

- MIDIlet-Name

- MIDlet-Version

20

Trang 33

- - MIDlet-Vendor

- MIDlet-<n> for each MIDlet

- MIDlet-Jar-URL

Nếu các thuộc tính này không giống nhau, ứng dụng sẽ bị thiết bị từ chối Với

các thuộc tính còn lại, nếu file Jad và file manifest khác nhau thì thuộc tính trong file Jad sẽ được ưu tiên hơn

Sau đây là một ví dụ đơn giản về file Jad:

MIDlet-Name: Todo List

MIDlet-Version: 1.0

MIDIlet-Vendor: Core J2ME

MIDIlet-Jar-URL: http://www.corej2me.com/TodoMIDIlet.jar

MIDlet-Jar-Size: 17043

MIDIlet-1: TodoList, /images/Todo.png, Todo TodoMIDIlet

O day có một câu hỏi được đặt ra: Tại sao phải ghép nhiều ứng dụng MIDIet thành một file nén dạng JAR Mục đích của việc kết hợp này giúp cho các ứng dụng MIDlet được nén chung này có thể chia xẻ chung các tài nguyên với nhau Một ví

dụ có thé dé cập đến là việc chia sẻ chung các Record Store: trong môi trường

J2ME chúng ta không có khái niệm file system; mọi nhu cầu lưu trữ dữ liệu được

thông qua các Record Trong một bộ MIDlet Suite thì tên các Record phải phân biệt

và các ứng dụng MIDIet cùng chung trong một bộ sẽ có thể chia sẻ các Record này với nhau Điều này khá thuận lợi, nó có thể giúp chúng ta viết các games cùng chia

sẻ danh sách người chơi, danh sách các người chơi có điểm cao nhất

Khi nạp ứng dụng vào thiết bi ta cling lic nap hai file Jar va Jad; file Jad sé la

file thực thi va file Jar chtra ma thuc thi cua chuong trinh

21

Trang 34

2.2.5 Môi trường phát triên ứng dụng J2ME

Phan nay chúng ta sẽ tìm hiểu về các phần mềm cân thiết dùng để phát triển một ứng dụng J2ME, cách cài đặt và cầu hình các phần mềm này Ngoài ra chúng ta sẽ

nghiên cứu về các tools phát triển được hỗ trợ thêm

Đề viết một ứng dụng J2ME chúng ta cần ít nhất 3 chương trình sau:

Java Development Kit (JDK) , version 1.3 hodc cao hơn (phiên bản mới nhất tính

đến lúc luận văn được thực hiện là phiên bản 1.42)

Ghi chi: O đây xem Microsoft Windows như hệ điều hành mặc định được sử dung,

nếu người dùng sử dụng hệ điều hành khác thì phải có một số điều chỉnh phù hợp

Việc sét biến môi trường giúp chúng ta chạy trình biên dịch từ bất cứ vị trí nào, không cần phải gõ tên và đường dẫn đây đủ của trình biên dịch

— Vao Control Panel, Chon System

— Chon Environment (hodc Advanced/Environment)

— Tim muc PATH, thém thu muc \bin cua thu muc JDK (vi du C:\JDK\bin)

vào biến môi trường PATH (PATH= :¢:\jdk\bin;)

e Cai dat CLDC va MIDP:

File CLDC va MIDP co dang zip, ta giai nén vao chung mot thư mục (vi du C:\J2ME)

22

Trang 35

Thư mục J2ME có dạng:

C:\J2ME

j2me_cldc (thu muc chtta CLDC)

midp1.0.1.fcs (thu muc chua MIDP)

Sau cùng ta set hai biễn môi trường PATH và CLASSPATH như sau:

PATH=C:\jdk1.3.1\bin;C:\j2me\j2me_cldc\bin;C:\j2me\midp1.0.3fcs\bin;

CLASSPATH=C:\j2me\midp1.0.3fes\classes; (dau "." chi thu muc hién hanh) Lúc này ta đã đủ công cụ để xây dựng ứng dụng J2ME Chúng ta có nhiều công cụ

hỗ trợ cho quá trình biên dịch và thực thi MIDIet nhưng ban đầu chung ta sé tim

hiểu cách sử dụng những công cụ cơ bản nhất và là công cụ chuẩn của J2ME

Quá trình biên dịch và thực thi ứng dụng J2ME phải qua một số thao tác bằng dòng lệnh (command lines), ching ta gia sử thư mục chứa mã nguồn là thư mục C:\Midlets

Ta sẽ xây dựng một ứng dụng J2ME đơn giản để mô phỏng quá trình biên dịch và

thực thi, ứng dụng có tên Welcome và file source code có tên Welcome.Java

C:\Midlets\Welcome\Welcome.java

e Qua trinh bién dich va Pre-verify:

Đề biên dịch ta chuyển đến thư mục chứa ứng dụng (C:\Midlets\Weleome\) và

gọi lệnh:

javac -bootclasspath c:\j2me\midp1.0.3fcs\classes Welcome.java

hoặc

javac —bootclasspath %CLASSPATH% Welcome.java

(CLASSPATH là biến môi trường đã duoc định nghĩa trước thay cho c:\j2me\midp1.0.3.fcs\classes;.)

Javac là chương trình biên dịch của bộ JDK, thông số -bootclasspath ra lệnh cho

chương trình dich lẫy các file lớp cơ sở tại thư mục c:\j2me\midp1.0.3fes\elasses (Đây là file lớp cơ sở của MIDP) Nếu không có thông số này, file lớp cơ sở của

JDK sẽ được sử dụng, file lớp cơ sở này khác với file của MIDP nên J2ME có thể không sử dụng được

23

Trang 36

Sau quá trình này file Welcome.class sẽ được tạo ra và mặc địch ở chung thư mục

với file mã nguồn

Sau khi có file class ta cần thực hiện việc “pre-verify” (đã được đề cập ở phần trước của luận văn)

Ta thực thi dòng lệnh:

preverify -classpath c:\j2me\midp1.0.3fcs\classes; -d Welcome

hoặc

preverify —classpath %CLASSPATH% —d Welcome

Tương tự, thông số classpath chi ra vi chi cac file» class tai thư mục

c:\j2me\midp1.0.3fes\classes va thu muc hién hanh (dau '“”) Thông số -d chỉ ra thư muc output két qua 1a thu mục hiện hành

Quá trình Pre-verify này là bắt buộc, nếu không thực hiện công đoạn này thiết

bị di động sẽ từ chối thực thỉ ứng dụng

e© Thực thi ứng dụng MIDIct:

Ta thực thi câu lệnh:

midp -classpath Welcome

Thong s6 class path chỉ ra thư mục chứa file cần thực thi, ở đây là thư mục hiện

hành, tén ing dung 1a Welcome (file Welcome.class da dugc pre — verify)

Trên đây là quá trình cơ bản nhất để biên dịch và thực thi một ứng dụng J2ME,

để sử dụng những tính năng cao hơn (tạo MIDIet Suite chứa nhiều MIDIet, tạo file Jad, file Jar) xin vui long xem file hướng dẫn trong đĩa CD đính kèm hoặc xem tài liệu của các bộ biên dịch Đề tiết kiệm thời gian, chúng ta thường dùng các công cụ

tiện ích như Sun Wireless Toolkit, xin xem phan phu luc đề biết cách sử dụng

24

Trang 37

Chương 3: Các vấn đề cơ bản của chương

trinh MiDIet

3.1 Câu trúc cơ bản:

Chúng ta gọi chung các chương trình J2ME là MIDlet Các chương trình MIDlet này đều được kế thừa từ lớp MIDIet Không giỗng như chương trình trên máy PC, các chương trình MIDIet không cần hàm mainQ để thực thi Trước hết chúng ta sẽ xem xét về “vòng đời” (lifeeycle) của các ứng dung MIDIet

Một chương trình MIDIlet khi được nạp vào thiết bị có những trạng thái sau:

—_ Paused: Một chương trình MIDlet sẽ được đưa vào trạng thái paused sau khi

thực hiện phương thức khởi tạo (constructor) và trước khi được chương trình quản lý ứng dụng (application manager) trên thiết bị gọi thực thi Trong quá trình hoạt động, chương trình MIDIet cũng có thể bị đưa trở lại trạng thái

paused bởi thiết bị (khi cần trả lời cuộc gọi đến .) hoặc bởi chính chương

trình MIDlet

— Active: Chuong trinh MIDlet dang thuc thi

— Destroyed: Chuong trinh MIDIet đã giải phóng tất cả tài nguyên và đã được tắt bởi trình quản lý ứng dụng trên thiết bị

3.2 Xây dựng một ứng dụng MIDIet:

Chúng ta xây dựng một ứng dụng MIDIet bằng cách kế thừa (extends) lớp MIDIet Lớp này thực chất là một interface và chúng ta phải khai báo ba hàm sau đây: startAppQ, pauseAppQ và destroyApp(Q Đây là một ví dụ về một chương trình MIDlet don giản:

public class Shell extends MIDlet

{

25

Trang 38

// phương thức khởi tạo (constructor) không bắt buộc phải có

public Shell(){ }

// Được application manager gọi trước khi thuc thi MIDlet

public void startAppQ{ }

// Được gọi trước khi tạm dừng MIDlet

public void pauseAppQ){ .}

// Được gọi trước khi kết thúc chương trình

public void destroy App(boolean unconditional){ }

3.3 Lop MIDlet:

Như đã đề cập, mọi ứng dụng của ta đều kế thừa từ lớp MIDIet Lơp nảy được

khai báo như sau:

public abstract class MIDlet {

)

protected abstract void startApp()

throws MIDletStateChangeException;

protected abstract void pauseApp();

protected abstract void destroy App(boolean

Trang 39

trước khi tạm dừng chương trình

abstract void startApp() Được gọi khi MIDlet sắp được đưa vảo trạng thái

thực thi (active state)

final void notifyDestroyed() Bao cho application manager biét chuong trinh

MIDIet đã giải phóng tài nguyên và cần được tắt

(sau khi gọi destroyApp)

final void notifyPause() Báo cho application manager biết chương trình

MIDIet đã giải phóng tải nguyên và muốn vảo trạng

thái tạm dừng (sau khi gọi paúseApp)

final void resumeRequest() Báo cho application manager ta can dua MIDlet

vào trạng thái hoạt động tro lai (Sau do application

manager sé goi startApp)

final String getAppProperty

(String key) Lấy các thông số của chương trình (từ file jad và

file manifest)

Bang 3.1 Lop MIDlet

Ở đây chúng tôi xin mô tả hai quá trình quan trọng nhất của một ứng dung MIDlet

là quá trình khởi nạp và quá trình thoát ứng dụng:

— Quá trình nạp:

e User chon kich hoat tng dụng MIDIet

e Application manager khdi tao cdc biến, gọi phương thức khởi tạo (constructor)

e Ung dụng MIDlet sau khi được nạp vào bộ nhớ sẽ được đưa vào trạng thái

paused (nhung ham pauseApp() sẽ không được goi)

e Application manager goi ham startApp() Thuc chat ham startApp() sé

được gọi mỗi khi ứng dụng được đưa vào trạng thái thực thi (active); khi ta

tạm ngưng ứng dụng và có nhu câu kích hoạt trở lại hàm này cũng được

gol

— Qua trinh thoat:

e User chon thoat chuong trinh

27

Trang 40

e Hàm destroyApp(Q được gọi, hàm này phải bảo đảm việc giải phóng tài nguyên

e© Hàm notfifyDestroyedQ được gọi để báo cho application manager ứng dụng

đã giải phóng hết tài nguyên và sẵn sàng bị tắt

3.4 Lớp MIDIetStateChangeException:

Khi tìm hiểu về package javax.microedition.midlet, còn một lớp quan trọng chúng ta phải chú ý đến là lớp MIDIetStateChangeException Ứng dung MIDlet có hai hàm có khả năng tạo ra (throw) Exception này là hàm destroyAppQ và hàm startApp()

Như chúng ta đã biết, trước khi ung dung duoc dua vao trang thai active thi ham

startApp() sé duoc goi Néu trong qua trinh goi ham nảy dẫn đến phát sinh lỗi (thiết

bị hết tài nguyên, tài nguyên cần dùng đáng-bị ứng dụng khác chiếm ) thì MIDIetStateChangeException sẽ được tạo ra Trong quá trình thoát, hàm destroyAppQ cũng có thể phát sinh exception này, ví dụ như khi chúng ta thoát mà chương trình đang nhận dữ liệu hết sức quan trọng từ network ta có thể phát sinh exception để dừng việc thoát

Ta xem xét hàm destroyApp(boolean condition):

Tham số condition ở đây có một ý nghĩa khá thú vị, nễu tham số này là true dù chúng ta có phát sinh exception MIDIetStateChangeException thì ứng dụng vẫn thoát; chỉ khi nào tham số nảy là false thì exception MIDIetStateChangeException mới có khả năng hủy việc thoát chương trình

3.5 Display

Ung dung của chúng ta chắc chăn có nhu cầu xuất dữ liệu ra màn hình Việc này trong một ứng dụng MIDIet do một đối tượng thuộc lớp display đảm nhiệm Lớp này năm trong package javax.microedition.ledui, package này chứa hầu như tất

cả các lớp phục vụ cho việc phát triển giao diện của ứng dụng

Chúng ta sẽ xem xét một số hàm quan trọng nhất của lớp Display:

28

Ngày đăng: 08/11/2012, 14:17

HÌNH ẢNH LIÊN QUAN

Hình  1.3  Configurations  va  cac  thiét  bi - Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa
nh 1.3 Configurations va cac thiét bi (Trang 21)
Hình  8.2  Một  cliếnt  truy  xuất  đến  nhiều  web  serviees  cùng  lúc - Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa
nh 8.2 Một cliếnt truy xuất đến nhiều web serviees cùng lúc (Trang 166)
Hình  8.3  Một  web  service  có  thể  triệu  tập  đến  các  web  serviees  khác - Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa
nh 8.3 Một web service có thể triệu tập đến các web serviees khác (Trang 167)
Hình  9.2  Mo  hinh  m4  hoa  password - Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa
nh 9.2 Mo hinh m4 hoa password (Trang 188)
Hình 9.6 Mô hình c ơ  s ở  d ữ  li ệ u  9.4.6  Các ch ứ c n ă ng store procedures: - Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa
Hình 9.6 Mô hình c ơ s ở d ữ li ệ u 9.4.6 Các ch ứ c n ă ng store procedures: (Trang 202)
Hình 9.7 Mô hình L ớ p - Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa
Hình 9.7 Mô hình L ớ p (Trang 204)
Hình 9.8 S ơ đồ  các màn hình - Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa
Hình 9.8 S ơ đồ các màn hình (Trang 206)
Hình 9.9 Màn hình welcome - Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa
Hình 9.9 Màn hình welcome (Trang 207)
Hình 9.10 Màn hình  đă ng nh ậ p - Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa
Hình 9.10 Màn hình đă ng nh ậ p (Trang 208)
Hình 9.16 Màn hình xem k ế t qu ả  h ọ c t ậ p - Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa
Hình 9.16 Màn hình xem k ế t qu ả h ọ c t ậ p (Trang 214)
Hình 9.18 Màn hình xem th ờ i khoá bi ể u - Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa
Hình 9.18 Màn hình xem th ờ i khoá bi ể u (Trang 216)
Hình A.4 Các options cho project - Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa
nh A.4 Các options cho project (Trang 225)
Hình A.5 Ch ỉ nh s ử a n ộ i dung file Jad và Jar - Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa
nh A.5 Ch ỉ nh s ử a n ộ i dung file Jad và Jar (Trang 226)
Hình B.3 Export nhi ề u hàm cùng lúc - Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa
nh B.3 Export nhi ề u hàm cùng lúc (Trang 231)
Hình B.5 File WSDL - Nghiên cứu Java Mobile và xây dựng ứng dụng minh họa
nh B.5 File WSDL (Trang 232)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w