TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN MẠNG MÁY TÍNH – VIỄN THÔNG
ĐẶNG NGUYỄN KIM ANH – ĐÀO ANH TUẤN
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 TP.HCM, 2005
NIÊN KHÓA 2001-2005
Lời Cảm Ơn!
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 dẫn
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 mong 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ố Hồ Chí Minh, tháng 7 năm 2005
Đặng Nguyễn Kim Anh - Đào Anh Tuấn
Máy ảo Java..............................................................................................10
Chương 2:
Giới thiệu CLDC và MIDP ...................................................... 13
2.1.
CLDC ..........................................................................................................13
2.1.1.
Yêu cầu phần cứng:..................................................................................13
2.1.2.
Yêu cầu phần mềm:..................................................................................13
2.1.3.
Máy ảo Java:.............................................................................................13
2.2.
MIDP:..........................................................................................................16
2.2.1.
Yêu cầu phần cứng:..................................................................................16
Lớp MIDlet: ................................................................................................26
3.4.
Lớp MIDletStateChangeException:............................................................28
3.5.
Display.........................................................................................................28
3.6.
Lớp Displayable: .........................................................................................30
3.7.
Quản lý các sự kiện (event).........................................................................32
3.7.1.
Command & CommandListener...............................................................33
3.7.2.
Item và ItemStateListener.........................................................................38
Chương 4:
Giao diện đồ họa cấp cao.......................................................... 40
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.
5.2.
Graphics: .....................................................................................................89
5.2.1.
Màu sắc:....................................................................................................90
5.2.2.
Nét vẽ:.......................................................................................................93
5.2.3.
Font chữ:...................................................................................................98
5.2.4.
Vẽ các đối tượng hình ảnh (image): .......................................................101
5.2.5.
Các phương thức tịnh tiến đối tượng:.....................................................103
5.2.6.
Vùng xén (Clipping regions):.................................................................105
Chương 6:
7.1.
Giới thiệu GFC..........................................................................................124
7.2.
Lược đồ lớp ...............................................................................................124
7.3.
Kết nối HTTP:...........................................................................................127
7.3.1.
Khởi tạo kết nối:.....................................................................................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:....................................................................................137
7.4.
Kết nối socket Datagram (UDP) ...............................................................138
7.5.
Web Service ..............................................................................................152
8.2.1.
Định nghĩa ..............................................................................................152
8.2.2.
Thành phần cơ bản của Web service:.....................................................152
8.2.3.
Hoạt động của Web service....................................................................152
8.2.4.
Ưu điểm của web service .......................................................................155
8.3.
Các thành phần chính của Web Service....................................................157
8.3.1.
SOAP (Simple Object Access Protocol) ................................................157
8.3.2.
9.3
Phân tích - thiết kế:....................................................................................177
9.3.1
Mô hình use case: ...................................................................................177
9.3.2
Đặc tả một số use case chính:.................................................................178
9.4
Thiết kế mô hình dữ liệu: ..........................................................................183
9.4.1
Mô hình thực thể kết hợp: ......................................................................183
9.4.2
Các bảng dữ liệu:....................................................................................183
9.4.3
Chi tiết các bảng dữ liệu:........................................................................184
9.4.4
Chương 10:
Tổng kết ............................................................................... 205
10.1
Kết luận: ....................................................................................................205
10.2
Hướng phát triển: ......................................................................................207
Tài liệu tham khảo ...................................................................................... 210
Phụ Lục A:
Hướng dẫn sử dụng công cụ Sun Wireless ToolKit 2.3 ...... 211
Phụ Lục B:
Xây dựng và Sử dụng Web Service....................................... 217
Phụ Lục C:
Giới thiệu các thư viện JSR ................................................... 222
Hình 4.6 Giao diện đối tượng TextField...................................................................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..........................................................67
Hình 4.10 Giao diện đối tượng List cho phép chọn nhiều lựa chọn .........................68
Hình 4.11 Giao diện đối tượng TextBox...................................................................71
Hình 4.12 Giao diện đối tượng Alert ........................................................................76
Hình 4.13 Giao diện Ticker.......................................................................................77
Hình 5.1 Các phương thức vẽ đường cong ...............................................................94
Hình 5.2 Các phương thức vẽ hình chữ nhật ............................................................95
Hình 5.3 Các phương thức hỗ trợ vẽ Text ................................................................97
Hình 5.4 Các định dạng trong Text Graphic.............................................................97
Hình 5.5 Các phương thức tạo font.........................................................................100
Hình 5.6 Vẽ bằng đối tượng Immutable Image ......................................................101
Hình 5.7 Vẽ bằng đối tượng Mutable Image ..........................................................102
Hình 9.6 Mô hình cơ sở dữ liệu ..............................................................................190
Hình 9.7 Mô hình Lớp.............................................................................................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 nhập...............................................................................196
Hình 9.11 Confirm ..................................................................................................197
Hình 9.12 Menu chức năng.....................................................................................198
Hình 9.13 Màn hình đăng ký học phần lý thuyết....................................................199
Hình 9.14 Màn hình đăng ký học phần thực hành..................................................200
Hình 9.15 Màn hình xem thời khoá biểu ................................................................201
Hình 9.16 Màn hình xem kết quả học tập...............................................................202
Hình 9.17 Màn hình xem phiếu đăng ký.................................................................203
Hình 9.18 Màn hình xem thời khoá biểu ................................................................204
Hình 10.1 Hướng phát triển thực tế ........................................................................207
Hình A.1 Công cụ Sun WirelessToolkit 2.3 ...........................................................211
Bảng 2.1 Cấu trúc file manifest.................................................................................19
Bảng 2.2 Cấu trúc file JAD.......................................................................................20
Bảng 3.1 Lớp MIDlet................................................................................................27
Bảng 3.2 Lớp Display ...............................................................................................29
Bảng 3.3 Lớp Displayable.........................................................................................32
Bảng 3.4 Các Command Type ..................................................................................37
Bảng 3.5 Command và CommandListener...............................................................38
Bảng 3.6 Item và ItemStateListener..........................................................................39
Bảng 4.1 Lớp Screen.................................................................................................42
Bảng 4.2 Lớp Form...................................................................................................44
Bảng 4.3 Lớp Item ....................................................................................................45
Bảng 4.4 Lớp DateField............................................................................................46
Bảng 4.5 Lớp Gauge .................................................................................................49
Bảng 4.6 Lớp StringItem...........................................................................................51
Bảng 4.7 Các Ràng Buộc của TextField...................................................................53
Bảng 5.4 Mã Phím.....................................................................................................83
Bảng 5.5 Sự kiện keyPressed....................................................................................84
Bảng 5.6 Sự kiện Game Action.................................................................................85
Bảng 5.7 Bắt sự kiện trong Game Action .................................................................86
Bảng 5.8 Sự kiện con trỏ...........................................................................................87
Bảng 5.9 Lớp Graphics .............................................................................................90
Bảng 5.10 Các phương thức vẽ.................................................................................93
Bảng 5.11 Xử lý Text................................................................................................96
Bảng 5.12 Giá trị Anchor..........................................................................................96
Bảng 5.13 Xử lý Font chữ.........................................................................................98
Bảng 5.14 Các giá trị Font ........................................................................................99
Bảng 5.15 Vẽ hình ảnh............................................................................................101
Bảng 5.16 Giá trị Image Anchor.............................................................................103
Bảng 5.17 Các phương thức tịnh tiến .....................................................................103
Bảng 7.10 Lớp SocketConnection ..........................................................................143
Bảng 7.11 Các interfaces chính của WMA.............................................................144
Bảng 9.1 Danh sách các Use Case ..........................................................................178
Bảng 9.2 Table ChuyenNganh................................................................................184
Bảng 9.3 Table SV ..................................................................................................184
Bảng 9.4 Table MonHoc.........................................................................................185
Bảng 9.5 Table GV .................................................................................................185
Bảng 9.6 Table Lop.................................................................................................185
Bảng 9.7 Table Lop_MonLT ..................................................................................186
Bảng 9.8 Table Lop_MonTH..................................................................................187
Bảng 9.9 Table PhanCongTH .................................................................................187
Bảng 9.10 Table DangKyLT...................................................................................187
Bảng 9.11 Table DangKyTH ..................................................................................187
Bảng 9.12 Table ThongBao ....................................................................................188
PDA Personal Digital Assistant.
Profile Các tập thư viện cấp cao định nghĩa trên nền Configuration.
RMS RecordStore Management System, cơ chế lưu trữ của J2ME. SMS
Short Message Service, tin nhắn thông thường cho điện thoại di
động.
SOAP
Simple Object Access Protocol, định dạng thông điệp của 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 thức gọi hàm từ xa dựa trên XML và HTTP.
WMA Wireless Message API
WSDL Web Service Definition Language
XML Extensible Markup Language
Java Mobile
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
phần 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 di độ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ý học phần 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
2
Java Mobile
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
một cơ chế lưu trữ riêng của J2ME.
Chương 7. Lập trình mạng vơi GCF: 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 chi 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 phân tán và web service
Chương 9. Trình bày chi tiết về ứng dụng "Đăng Ký Học Phần"
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 ơn!
Kim Anh – Anh Tuấn
4
Java Mobile
Phần 1: Kiến thức nền tảng J2ME
Chương 1: Tổng quan về J2ME
1.1 Giới thiệu J2ME (Java 2 Micro Edition)
J2ME là một nhánh của ngôn ngữ lập trình JAVA được phát triển nhằm 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
đặ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ị có 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
lập trình di động.
Hình 1.1 Các thiết bị J2ME hỗ trợ
6
Java Mobile
1.3 Các thành phần của J2ME:
Hình 1.2 Các thành phần của J2ME
Khái niệm thiết bị di động là tương đối rộng lớn. Chúng bao hàm những thiết bị
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.
Chúng ta sẽ tìm hiểu hai khái niệm mới là Configurations và 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ả
1.3.2 Profile:
Configuration thực ra chỉ cung cấp một số rất ít các lớp và người phát triển ứng
dụng hầu như không thể chỉ làm việc đơn thuần với các configuration này. Ta có thể
thấy điều này qua một ví dụ: các configuration không hỗ trợ các công cụ về giao
diện (GUI), do đó nếu chỉ dùng configuration thì lập trình viên phải xây dựng tất cả
các chức năng giao diện từ đầu. Vì lý do này Sun đã linh hoạt và đưa thêm một khái
niệm mới nằm ở tầng trên của configuration, đó là Profiles.
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 phần 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
9
Java Mobile
– Foundation Profile: cho phép mở rộng các tính năng của CDC với phần lớn
các thư viện của bộ Core Java2 1.3
– Ngoài ra còn có Personal Basis Profile, Personal Profile, RMI Profile, Game
Profile.
Luận văn chủ yếu chỉ đề cập đến Profile MIDP và các thư viện liên quan để
phục vụ cho việc viết ứng dụng trên điện thoại di động.
1.3.3
Máy ảo Java
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
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 và Profile.
12
Java Mobile
Chương 2: Giới thiệu CLDC và MIDP
2.1. CLDC
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 cầu nào 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:
• 128 kilobytes để chạy 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.
• 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 là volatile memory (hay là “heap”).
2.1.2.
Yêu cầu phần mề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:
• Cho phép chọn và kích hoạt ứng dụng