Tải bản đầy đủ (.pdf) (180 trang)

Giáo Trình Lập Trình Mobile

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.06 MB, 180 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
KHOA CÔNG NGHỆ THÔNG TIN
TH.S TRỊNH CÔNG DUY
(TÀI LIỆU LƯU HÀNH NỘI BỘ)
Mobile Programming (Private Version) Trịnh Công Duy
1
MỤC LỤC
I. Tổng quan về công nghệ di động 2
I.1. Lịch sử của điện thoại di động 2
I.2. Các chuẩn công nghệ 11
II. Giới thiệu về J2ME 14
II.1. Lịch sử 14
II.2. Lý do chọn J2ME 14
II.3. Kiến trúc của J2ME 14
II.4. Giới thiệu MIDP 17
II.5. Môi trường phát triển J2ME 23
III. Các thành phần giao diện ở mức cao của ứng dụng MIDP 30
III.1. Đối tượng Display, Displayable và Screens 30
III.2. Thành phần Form và Items 31
III.3. Thành phần List, Textbox, Alert, và Ticker 43
IV. Các thành phần giao diện ở mức thấp của ứng dụng MIDP 51
IV.1. Các hàm API ở mức thấp 51
IV.2. Lớp Canvas 51
IV.3. Lớp Graphics 61
IV.4. Các hàm API dùng để lập trình Game 78
V. Xử lý sự kiện 79
V.1. Đối tượng Command 79
V.2. Đối tượng Item 80
V.3. Ví dụ 80
VI. Record Management System 82


VI.1. Persistent Storage Through the Record Store 82
VI.2. Các vấn đề liên quan đến RMS 84
VI.3. Các hàm API trong RMS 84
VI.4. Duyệt Record với RecordEnumeration 96
VI.5. Sắp xếp các record với interface RecordComparator 97
VI.6. Searching with RecordFilter 116
VI.7. Notification of Changes with RecordListener 130
VI.8. Exception Handling 135
VII. Kết nối mạng với Generic Connection Framework 135
VII.1.Những protocol được hỗ trợ trong GCF 136
VII.2.Hỗ trợ giao thức HTTP trong MIDP 142
VII.3.Accessing a Java servlet 152
VIII. Phụ lục 157
VIII.1. Tổng số class và interface trong CLDC 157
VIII.2. Thông tin của các dòng điện thoại thông dụng 158
VIII.3. Tham khảo: 178
Mobile Programming (Private Version) Trịnh Công Duy
2
I. Tổng quan về công nghệ di động
I.1. Lịch sử của điện thoại di động
I.1.1. Phát minh ra điện thoại di động:
Tiến sĩ Martin Cooper, cựu tổng giám đốc đơn vị hệ thống của Motorola, được coi là “cha đẻ”
của thiết bị liên lạc di động cầm tay và cũng là người đầu tiên thực hiện một cuộc gọi thông qua
công cụ này. Ý tưởng liên lạc di động được bộ phận nghiên cứu AT&T thuộc Trung tâm Bell
Labs (Mỹ) đưa ra năm 1947. Nhưng đến cuối những năm 60 và đầu thập kỷ 70 của thế kỷ trước,
Motorola và Bell Labs mới thực sự trở thành 2 đối thủ lao vào cuộc đua trong việc tích hợp công
nghệ này vào các thiệt bị cá nhân di động.
Kỹ sư điện Cooper từng có 4 năm phục vụ trong hải quân trước khi chuyển về làm việc cho
một công ty viễn thông nhỏ. Năm 1954, ông được Motorola tuyển dụng và tham gia phát triển
các sản phẩm di động, đáng chú ý nhất là công cụ liên lạc radio di động đầu tiên dành cho cảnh

sát Chicago năm 1967. Năm 1973, ông thiết lập một trạm thu phát tại New York đồng thời tung
ra mẫu đầu tiên của cái gọi là điện thoại di động (cellphone): máy Motorola Dyna-Tac. Sau
những cuộc thử nghiệm ban đầu tại Washington, Cooper và Motorola quyết định đưa công nghệ
mới tới New York để quảng bá với công chúng.
Motorola Dyna-Tac - chiếc điện thoại di động đầu tiên:
Kích thước (cm): 22,86 x 12,7 x 4,44
Trọng lượng: 1,13kg
Màn hình: không có
Số bo mạch điện: 30
Thời lượng thoại: 35 phút
Thời lượng pin: 10 tiếng
Tính năng: Nói, nghe, quay số.
Ngày 3/4/1973, đứng trên một phố gần khách sạn Manhattan Hilton, Cooper quyết định
thử thực hiện một cuộc gọi riêng trước khi đi lên gác tham dự một cuộc họp báo giới thiệu thiết
bị. Cú điện thoại ấy được ông gọi tới chính đối thủ cạnh tranh của mình: Joel Engel, Giám đốc
Trung tâm thí nghiệm Bell Labs.
Thật tuyệt vời, “hòn gạch” biết nói nặng hơn 1kg của Cooper đã hoạt động rất tốt, kết nối
ông với trạm thu phát đặt trên nóc tòa tháp Burlington Consolidated (nay là tòa nhà Alliance
Capital Building) ở New York, đồng thời liên lạc được với cả đường dây cố định. Những người
qua đường tỏ ra rất ngạc nhiên khi thấy một người đàn ông bấm bấm một công cụ gì đó, áp sát
vào tai và rồi say sưa nói chuyện.
Nói về tương lai của ngành di động, tiến sĩ Cooper, năm nay đã ngoài 70 tuổi, cho rằng
thế giới viễn thông thực ra vẫn còn rất non trẻ và mới đang bắt đầu bùng nổ. Động lực cho quá
trình bùng nổ ấy trước hết là quan niệm kinh doanh mới, trong đó chú trọng vào người tiêu
Mobile Programming (Private Version) Trịnh Công Duy
3
dùng. Quan trọng hơn nữa là một nền hoạt động mở, trong đó có những công nghệ mới với khả
năng tăng cường khai thác giải tần. Bên cạnh đó, nhà phát minh viễn thông cho rằng, cần có
chính sách để ưu tiên cho những đối tượng biết khai thác tốt nhất giải tần sóng hiện có. “Những
thay đổi sẽ không diễn ra quá nhanh, nhưng trong 10 năm tới, đó sẽ là những chuyển biến có

tính cơ bản”, Cooper nhận định. “Lời khuyên của tôi về công nghệ liên lạc di động trong tương
lai, nhất là đối với các thị trường đang phát triển, là hãy từ từ, chậm nhưng hiệu quả”. Theo ông,
cần thận trọng trong việc phân bổ giải tần đối với mỗi ứng dụng cụ thể. Và khi phân bổ, dù là
cho thế hệ 3G hay 4G, cần tiến hành một cách hợp lý tùy thực tế của mỗi thị trường. Đối với các
nước đang phát triển, Cooper cho rằng không nên vội cuốn theo sự cám dỗ của xu thế nhảy
sang 3G, cho tới khi nào thấy rõ được những ích lợi cụ thể cho mỗi ngành kinh tế và mỗi quốc
gia.
I.1.2. Lịch sử các thiết bị
ĐTDĐ giờ đây đang hướng tới mục tiêu "siêu mỏng và siêu nhẹ". Nhưng bạn có tin không, ban
đầu, "cụ tổ" của nó nặng đến 10 đấy!
1. Motorola DynaTAC 8000X (1982)
Năm 1973, Motorola giới thiệu dòng "alô" di động đầu tiên của thế giới dài 27 cm, nặng
1kg, giá 3.995 USD. Tuy nhiên, phải đến năm 1983, thiết bị này mới bắt đầu xuất hiện trên thị
trường năm. Motorola DynaTAC 8000X cho phép đàm thoại một giờ, bộ nhớ có thể lưu 30 số.
Trông bề ngoài thiết bị này không đẹp mắt nhưng lại cho phép bạn vừa đi vừa nói chuyện ở bất
kỳ đâu.
Mobile Programming (Private Version) Trịnh Công Duy
4
2. Nokia Mobira Senator (1982)
Mới nhìn Nokia Mobira Senator giống hộp bom hơn điện thoại di động, nhưng thiết bị
hình hộp to đồ sộ này là điện thoại đầu tiên của Nokia. Được giới thiệu năm 1982, Nokia Mobira
Senator được thiết kế sử dụng trong xe ô tô. Nó nặng khoảng 10 kg.
3. PDA Simon Personal Communicator (1993)
Điện thoại có tính năng PDA bây giờ không còn mới. Nhưng năm 1993 đây là một ý tưởng
mới lạ. Simon Personal Communicator là điện thoại đầu tiên có tính năng của liên minh IBM và
BellSouth. Nó là điện thoại kiêm máy tính, sổ địa chỉ, máy fax và e-mail Giá 900 USD.
Mobile Programming (Private Version) Trịnh Công Duy
5
4. Motorola StarTAC (1996)
Trước khi Motorola Star TAC được giới thiệu năm 1996, các tính năng điện thoại di động

được chú trọng nhiều hơn thời trang. Nhưng thiết bị nhỏ bé có thể gập này đã cho thấy rằng
phong cách là cực kỳ quan trọng. Motorola StarTAC 3.1 ounce là nhỏ nhất trong thời điểm đó và
đến nay nó vẫn nhỏ và nhẹ hơn nhiều "dế" khác.
5. Nokia 6160 (1998) và Nokia 8260 (2000)
.
Vào những năm 1990, các điện thoại hình thỏi kẹo của Nokia xuất hiện hàng loạt. Nhưng
Nokia 6160 và Nokia 8260 gây được sự chú ý của nhiều người. Nokia 6160 có màn hình đen
trắng, ăng-ten ngoài, thân 5,2 inch, nặng 6 ounce. Nokia 8260 ra mắt năm 2000 ấn tượng hơn
khi được tô điểm chiếc áo màu, dài 4 inch, nặng chỉ 3,4 ounce.
Mobile Programming (Private Version) Trịnh Công Duy
6
6. Phần mềm Palm với Kyocera QCP6035 (2000)
Nếu bạn là một trong những người hâm mộ điện thoại Treo sử dụng hệ điều hành Palm thì
có thể cảm ơn Kyocera. Dế thông minh QCP6035 của công ty này thống lĩnh thị trường bán lẻ
năm 2001. Với giá 400 USD và 500 USD, đây là điện thoại dùng phần mềm Palm đầu tiên được
phân phối rộng rãi. Sản phẩm có 8 MB bộ nhớ, màn hình trắng đen.
7. PDA đến điện thoại: Handspring Treo 180 (2001)
Trở lại khi Palm và Handspring còn là đối thủ. Handspring đã khuấy động thị trường với sản
phẩm Treo 180 gồm hai phiên bản: một với bàn pím QWERTY và một Treo 180g với thiết bị
nhập liệu Graffiti. Như Kyocera QCP6035, nó có màn hình đen trắng nhưng có 16MB bộ nhớ.
Mobile Programming (Private Version) Trịnh Công Duy
7
8. Tiên phong về thiết kế xoay: Danger Hiptop (2002)
T-Mobile Sidekick từng được mệnh danh là sản phẩm của năm 2003. Mặc dù các khả năng
đàm thoại của nó xoàng, nhưng là một trong những thiết bị đầu tiên cung cấp tính năng duyệt
web, truy cập email và nhắn tin. Hơn thế nữa, nó là người tiên phong về thiết kế xoay tròn.
9. Điện thoại cách tân: BlackBerry 5810 (2002)
BlackBerry 5810 được biết đến nhưng một thiết bị điển hình về các khả năng xử lý dữ liệu.
Đây là sản phẩm đầu tiên cung cấp các tính năng voice, GSM.
Mobile Programming (Private Version) Trịnh Công Duy

8
10. Đột phá với tính năng chụp ảnh: Sanyo SCP-5300 (2002)
Sanyo SCP-5300 PCS là "dế" đầu tiên có tính năng chụp ảnh được Sanyo và Sprint giới
thiệu năm 2002. Ở độ phân giải cao nhất nó có thể chụp được các ảnh VGA (640 x 480), nhưng
đến nay, tất nhiên, nó không thể sanh với các điện thoại kiêm máy ảnh 5 megapixel.
11. Điện thoại kiêm máy chơi game Nokia N-Gage (2003)
Dòng máy N-Gage tạo được nhiều dư luận khi xuất hiện trên thị trường năm 2003, nhưng
thật không may, đó lại là sản phẩm bất lợi. Sự kết hợp điện thoại di động/thiết bị chơi game
được kỳ vọng sẽ quyến rũ được game thủ từ bỏ máy chơi game cầm tay của họ. Nhưng thay
vào đó, nó gây phản cảm bởi thiết kế hình bán nguyệt kỳ quặc.
Mobile Programming (Private Version) Trịnh Công Duy
9
12. Siêu mỏng: Motorola Razr v3 (2004)
Điện thoại di động ngày càng mỏng và phong cách hơn, nhưng Motorola Razr v3 là sản
phẩm đầu tiên gây ấn tượng về thiết kế thời thượng mỏng và nhẹ vào 2004. Ba năm sau "dế"
này vẫn được đánh giá là một trong những điện thoại phổ biến nhất trên thị trường.
13. Điện thoại nghe nhạc Motorola Rokr (2005)
Motorola Rokr – điện thoại di động kiêm máy nghe nhạc đầu tiên sử dụng phần mềm nghe
nhạc của Apple. Với thiết bị này, người dùng có thể thưởng thức các bài hát, bản nhạc từ dịch
vụ iTunes.
Mobile Programming (Private Version) Trịnh Công Duy
10
14. Phong cách: BlackBerry Pearl (2006)
Thiết kế mỏng, bàn phím SureType, tính năng chụp ảnh, nghe nhạc, xem video, hỗ trợ dịch vụ
e-mail ấn tượng và nhiều khả năng đa phương tiện khác, BlackBerry Pearl trở thành viên ngọc
quý của không ít người.
15. Cách tân với Apple iPhone (2007)
Sau những tháng chờ đợi, Apple khẳng định tháng 6 là thời điểm quan trọng để iPhone
sẽ xuất hiện trên thị trường. Đây là thiết kế cách tân với màn hình cảm ứng cảm ứng đa điểm sẽ
mang lại một thế giới sinh động với e-mail bằng giọng nói, bàn phím "mềm" dạng Qwerty có thể

đoán từ, trình duyệt web Safari, tích hợp camera2-megapixel. iPhone là thiết bị gây tò mò nhất
trong giới chơi điện thoại di động, dùng hệ điều hành Mac OS X. Giá bán: 500 USD cho mẫu 4
GB, 600 USD cho mẫu 8 GB.
Mobile Programming (Private Version) Trịnh Công Duy
11
I.2. Các chuẩn công nghệ
a. GMS: Hệ thống thông tin di động toàn cầu
Hệ thống thông tin di động toàn cầu (tiếng Anh: Global System for Mobile
Communications; tiếng Pháp: Groupe Spécial Mobile; viết tắt: GSM) là một công nghệ dùng cho
mạng thông tin di động. Dịch vụ GSM được sử dụng bởi hơn 2 tỷ người trên 212 quốc gia và
vùng lãnh thổ. Các mạng thông tin di động GSM cho phép có thể roaming với nhau do đó những
máy điện thoại di động GSM của các mạng GSM khác nhau ở có thể sử dụng được nhiều nơi
trên thế giới.
GSM là chuẩn phổ biến nhất cho điện thoại di động (ĐTDĐ) trên thế giới. Khả năng phú
sóng rộng khắp nơi của chuẩn GSM làm cho nó trở nên phổ biến trên thế giới, cho phép người
sử dụng có thể sử dụng ĐTDĐ của họ ở nhiều vùng trên thế giới. GSM khác với các chuẩn tiền
thân của nó về cả tín hiệu và tốc độ, chất lượng cuộc gọi. Nó được xem như là một hệ thống
ĐTDĐ thế hệ thứ hai (second generation, 2G). GSM là một chuẩn mở, hiện tại nó được phát
triển bởi 3rd Generation Partnership Project (3GPP) Đứng về phía quan điểm khách hàng, lợi
thế chính của GSM là chất lượng cuộc gọi tốt hơn, giá thành thấp và dịch vụ tin nhắn. Thuận lợi
đối với nhà điều hành mạng là khả năng triển khai thiết bị từ nhiều người cung ứng. GSM cho
phép nhà điều hành mạng có thể sẵn sàng dịch vụ ở khắp nơi, vì thế người sử dụng có thể sử
dụng điện thoại của họ ở khắp nơi trên thế giới.
Giao diện radio
GSM là mạng điện thoại di động thiết kế gồm nhiều tế bào do đó các máy điện thoại di động
kết nối với mạng bằng cách tìm kiếm các cell gần nó nhất. Các mạng di động GSM hoạt động
trên 4 băng tần. Hầu hết thì hoạt động ở băng 900 Mhz và 1800 Mhz. Vài nước ở Châu Mỹ thì
sử dụng băng 850 Mhz và 1900 Mhz do băng 900 Mhz và 1800 Mhz ở nơi này đã bị sử dụng
trước. Các mạng sử dụng băng tần 900 Mhz thì đường uplink sử dụng tần số trong dãi 890-915
MHz và đường downlink sử dụng tần số trong dãi 935-960 MHz. Và chia các băng tần này thành

124 kênh với độ rộng băng thông 25 Mhz, mỗi kênh cách nhau 1 khoảng 200 Khz. Sử dụng
công nghệ phân chia theo thời gian TDM (time division multiplexing) để chia ra 8 kênh full rate
hay 16 kênh haft rate. Có 8 khe thời gian gộp lại gọi là 1một khung TDMA. Tốc độ truyền dữ liệu
của một kênh là 270.833 kbit/s và khoảng thời gian của một khung là 4.615 m.
Công suất phát của máy điện thoại được giới hạn tối đa là 2 watt đối với băng GSM
850/900 Mhz và tối đa là 1 watt đối với băng GSM 1800/1900 Mhz.
Mạng GSM sử dụng 2 kiểu mã hoá âm thanh để nén tín hiệu âm thanh 3,1 Khz đó là mã
hoá 6 và 13 kbps gọi là full rate (13 kbps) và haft rate (6 kbps). Để nén họ sử dụng hệ thống có
tên là linear predictive coding (LPC).Vào năm 1997 thì họ cải tiến thêm cho mạng GSM là bộ mã
GSM-EFR sử dụng full rate 12,2 kbps.
Có tất cả bốn kích thước cell site trong mạng GSM đó là macro, micro, pico và umbrella.
Vùng phủ sóng của mỗi cell phụ thuộc nhiều vào môi trường. Macro cell được lắp trên cột cao
hoặc trên các toà nhà cao tầng, micro cell lại được lắp ở các khu thành thị, khu dân cư, pico cell
Mobile Programming (Private Version) Trịnh Công Duy
12
thì tầm phủ sóng chỉ khoảng vài chục mét trở lại nó thường được lắp để tiếp sóng trong nhà.
Umbrella lắp bổ sung vào các vùng bị che khuất hay các vùng trống giữa các cell.
Bán kính phủ sóng của một cell tuỳ thuộc vào độ cao của anten, độ lợi anten thường thì nó
có thể từ vài trăm mét tới vài chục km. Trong thực tế thì khả năng phủ sóng xa nhất của một
trạm GSM là 32 km (22 dặm). Một số khu vực trong nhà mà các anten ngoài trời không thề phủ
sóng tới như nhà ga, sân bay, siêu thị thì người ta sẽ dùng các trạm pico để chuyển tiếp sóng
từ các anten ngoài trời vào.
b. GPRS (General Packet Radio Service) là dịch vụ vô tuyến gói tổng hợp được phát triển trên
nền tảng công nghệ thông tin di động toàn cầu (GSM) sử dụng đa truy nhập phân chia theo thời
gian (TDMA). Công nghệ GPRS hay còn biết đến với mạng di động thế hệ 2.5G, áp dụng
nguyên lý gói vô tuyến để truyền số liệu của người sử dụng một cách có hiệu quả giữa máy điện
thoại di động tới các mạng truyền số liệu.
c. EDGE (Enhanced Data Rates for GSM Evolution), đôi khi còn gọi là EGPRS, là một công
nghệ di động được nâng cấp từ GPRS cho phép truyền dự liệu với tốc độ có thể lên đến 384
kbit/s cho người dùng cố định hoặc di chuyển chậm và 144kbit/s cho người dùng di chuyển tốc

độ cao. Trên đường tiến đến 3G, EDGE được biết đến như một công nghệ 2.75G. Thực tế bên
cạnh điều chế GMSK, EDGE dùng phương thức điều chế 8-PSK để tăng tốc độ dự liệu truyền.
Chính vì thế, để triển khai EDGE, các nhà cung cấp mạng phải thay đổi trạm phát sóng BTS
cũng như là thiết bị di động so với mạng GPRS.
d. CDMA (Code Division Multiple Access), tiếng Việt gọi là phương thức Đa truy cập phân
chia theo mã, là một kỹ thuật đa truy cập vào kênh truyền vật lý sử dụng kỹ thuật phân chia theo
mã (code). Trong kỹ thuật CDMA, tín hiệu của mỗi người dùng (user) sẽ được dàn trãi
(spreading) bằng 1 mã xác định trực giao (hoặc giả trực giao) với nhau. Tín hiệu truyền sẽ là tín
hiệu chồng chập của nhiều người dùng khác nhau theo thời gian và trên cùng 1 băng tần số.
Kỹ thuật CDMA hiện đang được sử dụng rộng rãi trong các hệ thống điện thoại di động:
IS95A/B, CDMA2000, WCDMA(UMTS)
e. CDMA2000 là một họ chuẩn thông tin di động sử dụng công nghệ CDMA được chuẩn hóa bởi
3GPP2. CDMA2000 bao gồm 3 chuẩn chính: CDMA2000 1xRTT, CDMA2000 EV-DO,
CDMA2000 EV-DV. CDMA2000 hoạt động trong dãi tần số 450 MHz, 700 MHz, 800 MHz, 900
MHz, 1700 MHz, 1800 MHz, 1900 MHz, và 2100 MHz. CDMA2000 là công nghệ 3G tiếp nối của
công nghệ 2G CdmaOne (hay IS-95) và được xem như là một đối thủ cạnh tranh với công nghệ
3G/UMTS. Tuy nhiên, CDMA2000 1xRRT thường được nhắc đến như là một công nghệ 2.5G
(tương ứng với GPRS).
f. CDMA2000 EV-DO (Evolution-Data Optimized) là một chuẩn thông tin di động thuộc họ
CDMA2000, kết hợp giữa kỹ thuật CDMA và TDMA để cung cấp dịch vụ số liệu tốc độ cao.
CDMA2000 EV-DO được QualComm đề xuất vào 3/2000 và được chuẩn hóa bởi 3GPP2.
Đặc điểm nổi bật của CDMA2000 EV-DO:
Mobile Programming (Private Version) Trịnh Công Duy
13
- EV-DO hỗ trợ tốc độ số liệu hướng xuống 2,4576 Mbps trên băng thông 1,25 MHz và
tốc độ số liệu hướng lên 153,6 Kbps.
- Trạm gốc linh hoạt dễ dàng phát công suất lớn.
- Hỗ trợ sơ đồ điều chế cấp cao kèm với khả năng thực hiện nhiều phương pháp sửa lỗi.
- Kỹ thuật chuyển mạch đó là chuyển mạch gói ghép kênh theo thời gian.
g. Time Division Multiple Access (TDMA), tiếng Việt gọi là phương thức Đa truy cập phân

chia theo thời gian, là một kĩ thuật đa truy cập vào kênh truyền vật lý sử dụng kĩ thuật phân
chia theo thời gian.
Mobile Programming (Private Version) Trịnh Công Duy
14
II. Giới thiệu về J2ME
II.1. Lịch sử
J2ME được phát triển từ kiến trúc Java Card, Embeded Java và Personal Java
của phiên bản Java 1.1. Đến sự ra đời của Java 2 thì Sun quyết định thay thế Personal
Java và đươc gọi với tên mới là Java 2 Micro Edition, hay viết tắt là J2ME. Đúng với tên
gọi, J2ME là nền tảng cho các thiết bị có tính chất nhỏ, gọn:
II.2. Lý do chọn J2ME
a) Java ban đầu được thiết kế dành cho các máy với tài nguyên bộ nhớ hạn
chế.
b) Thị trường của J2ME được mở rộng ra cho nhiều chủng loại thiết bị như:
 Các lọai thẻ cá nhân như Java Card
 Máy điện thoại di động
 Máy PDA (Personal Digital Assistant - thiết bị trợ giúp cá nhân)
 Các hộp điều khiển dành cho tivi, thiết bị giải trí gia dụng …
II.3. Kiến trúc của J2ME
Phần này sẽ trình bày kiến trúc tổng quát của nền tảng Java
Mobile Programming (Private Version) Trịnh Công Duy
15
a) Giới thiệu các thành phần trong nền tảng J2ME:
Định nghĩa về Configuration (Cấu hình): là đặc tả định nghĩa một môi trường phần mềm
cho một dòng các thiết bị được phân loại bởi tập hợp các đặc tính, ví dụ như:
 Kiểu và số lượng bộ nhớ
 Kiểu và tốc độ bộ vi xử lý
 Kiểu mạng kết nối
Do đây là đặc tả nên các nhà sản xuất thiết bị như Samsung, Nokia …bắt buộc phải thực thi
đầy đủ các đặc tả do Sun qui định để các lập trình viên có thể dựa vào môi trường lập trình

nhất quán và thông qua sự nhất quán này, các ứng dụng được tạo ra có thể mang tính độc lập
thiết bị cao nhất có thể. Ví dụ như một lập trình viên viết chương trình game cho điện thoại
Samsung thì có thể sửa đổi chương trình của mình một cách tối thiểu nhất để có thể chạy trên
điện thọai Nokia Hiện nay Sun đã đưa ra 2 dạng Configuration:
 CLDC (Connected Limited Device Configuration-Cấu hình thiết bị kết nối giới
hạn): được thiết kế để nhắm vào thị trường các thiết bị cấp thấp (low-end),
các thiết bị này thông thường là máy điện thọai di động và PDA với khoảng
512 KB bộ nhớ. Vì tài nguyên bộ nhớ hạn chế nên CLDC được gắn với Java
không dây (Java Wireless ), dạng như cho phép người sử dụng mua và tải về
các ứng dụng Java, ví dụ như là Midlet.
 CDC- Connected Device Configuration (Cấu hình thiết bị kết nối): CDC
được đưa ra nhắm đến các thiết bị có tính năng mạnh hơn dòng thiết bị thuộc
CLDC nhưng vẫn yếu hơn các hệ thống máy để bàn sử dụng J2SE. Những
thiết bị này có nhiều bộ nhớ hơn (thông thường là trên 2Mb) và có bộ xử lý
mạnh hơn. Các sản phẩm này có thể kể đến như các máy PDA cấp cao,
điện thoại web, các thiết bị gia dụng trong gia đình …
Cả 2 dạng Cấu hình kể trên đều chứa máy ảo Java (Java Virtual Machine) và tập
hợp các lớp (class) Java cơ bản để cung cấp một môi trường cho các ứng dụng J2ME. Tuy
nhiên, bạn chú ý rằng đối với các thiết bị cấp thấp, do hạn chế về tài nguyên như bộ nhớ và
bộ xử lý nên không thể yêu cầu máy ảo hổ trợ tất cả các tính năng như với máy ảo của
Mobile Programming (Private Version) Trịnh Công Duy
16
J2SE, ví dụ, các thiết bị thuộc CLDC không có phần cứng yêu cầu các phép tính toán dấu
phẩy động, nên máy ảo thuộc CLDC không được yêu cầu hỗ trợ kiểu float và double.
Bảng dưới là sự so sánh các thông số kỹ thuật của CDC và CLDC
CLDC
CDC
Ram
>=32K, <=512K
>=256K

Rom
>=128k, <=512k
>=512k
Nguồn Năng
Lượng
Có GiớI Hạn (nguồn pin)
Không giới hạn
Network
Chậm
Nhanh
Định nghĩa veef Profile: Profile mở rộng Configuration bằng cách thêm vào các class để
bổ trợ các tính năng cho từng thiết bị chuyên biệt. Cả 2 Configuration đều có những profile
liên quan và từ những profile này có thể dùng các class lẫn nhau. Đến đây ta có thể nhận
thấy do mỗi profile định nghĩa một tập hợp các class khác nhau, nên thường ta không thể
chuyển một ứng dụng Java viết cho một profile này và chạy trên một máy hỗ trợ một profile
khác. Cũng với lý do đó, bạn không thể lấy một ứng dụng viết trên J2SE hay J2EE và chạy
trên các máy hỗ trợ J2ME. Sau đây là các profile tiêu biểu:
 Mobile Information Device Profile (MIDP): profile này sẽ bổ sung các tính năng như
hỗ trợ kết nối, các thành phần hỗ trợ giao diện người dùng … vào CLDC. Profile này
được thiết kế chủ yếu để nhắm vào điện thọai di động với đặc tính là màn hình hiển
thị hạn chế, dung lượng chứa có hạn. Do đó MIDP sẽ cung cấp một giao diện người
dùng đơn giản và các tính năng mạng đơn giản dựa trên HTTP. Có thể nói MIDP là
profile nổi tiếng nhất bởi vì nó là kiến thức cơ bản cho lập trình Java trên các
máy di động (Wireless Java)
 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
 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ư
Mobile Programming (Private Version) Trịnh Công Duy
17
viện của bộ Core Java2 1.3

Ngoài ra còn có Personal Basis Profile, Personal Profile, RMI Profile, Game Profile.
II.4. Giới thiệu MIDP
II.4.1. Giới thiệu về MIDP
a) Định nghĩa:
Đây là Profile được định nghĩa dành riêng cho các thiết bị di động và là thành
phần chính trong J2ME. MIDP cung cấp các chức năng cơ bản cho hầu hết các dòng
thiêt bị di động phổ biến nhất như các máy điện thoạI di động và các máy PDA. Tuy nhiên
MIDP không phải là cây đũa thần cho mọi lập trình viên vì như chúng ta đã biết, MIDP
được thiết kế cho các máy di động có cấu hình rất thấp. Trong phần sau tôi sẽ liệt kê qua
các tính năng mà MIDP cung cấp và những giới hạn của nó.
b) Những chức năng MIDP không thực hiện được:
 Phép tính dấu phẩy động (floating point): Phép tính này đòi hỏi rất nhiều tài
nguyên CPU và phần lớn các CPU cho các thiết bị di động không hỗ trợ phép tính
này, do đó MIDP cũng không có.
 Bộ nạp class (Class Loader).
 Hỗ trợ từ khóa finalize() như trong J2SE: Việc “dọn dẹp“ tài nguyên trước khi nó bị xóa
được đẩy về phía các lập trình viên.
 Không hỗ trợ JNI
 Hỗ trợ hạn chế thao tác bắt lỗi.
 Phần lớn các thư viện API cho Swing và AWT không thể sử dụng được trong MIDP.
 Không hỗ trợ các tính năng quản lý file và thư mục: Đây có thể làm bạn ngạc
nhiên nhưng thực tế là các thiết bị J2ME không có hỗ trợ các thiết bị lưu trữ thông
thường như ổ cứng v.v. Tuy nhiên, điều đó không có nghĩa là bạn phải mất đi mọi dữ
liệu quan trọng mỗi khi tắt máy, Sun đã cung cấp một chức năng khác tương
đương gọi là Record Management system (RMS) để cung cấp khả năng lưu trữ cho
các thiết bị này.
c) Những chức năng MIDP cung cấp
Mobile Programming (Private Version) Trịnh Công Duy
18
 Các lớp và kiểu dữ liệu: Phần lớn các lớp mà các lập trình viên Java quen thuộc

vẫn còn được giữ lại ví dụ như các lớp trong gói java.util như Stack, Vector và
Hastable cũng như Enumeration.
 Hỗ trợ đối tượng Display: Đúng như tên gọi một chương trình MIDP sẽ hỗ trợ duy
nhất một đối tượng Display là đối tượng quản lý việc hiển thị dữ liệu trên màn
hình điện thoại.
 Hỗ trợ Form và các giao diện người dùng.
 Hỗ trợ Timer và Alert
 Cung cấp tính năng Record Management System (RMS) cho việc lưu trữ dữ liệu
Ngoài ra vào tháng 11 năm 2003 Sun đã tung ra MIDP 2.0 với hàng loạt tính năng khác
được cung cấp thêm so với bản 1.0. Những cải tiến nổi bật so với MIDP 1.0
 Nâng cấp các tính năng bảo mật như
o Download qua mạng an toàn hơn qua việc hỗ trợ giao thức HTTPS.
o Kiểm soát việc kết nối giữa máy di động và server: ví dụ như các chương trình
không thể kết nối tới server nếu thiếu sự chấp thuận của người sử dụng.
 Thêm các API hỗ trợ Multimedia. Một trong nhưng cải tiến hấp dẫn nhất của MIDP 2.0
là tập các API media của nó. Các API này là một tập con chỉ hỗ trợ âm thanh của
Mobile Media API (MMAPI).
 Mở rộng các tính năng của Form. Nhiều cải tiến đã được đưa vào API
javax.microedition.lcdui trong MIDP 2.0, nhưng các thay đổi lớn nhất (ngoài API
cho game) là trong Form và Item.
 Hỗ trợ các lập trình viên Game bằng cách tung ra Game API: Có lẽ Sun đã kịp nhận ra
thị trường đầy tiềm năng của các thiết bị di động trong lĩnh vực Game. Với MIDP 1.0
thì các lập trình viên phải tự mình viết code để quản lý các hành động của nhân vật
cũng như quản lý đồ họa. Việc này sẽ làm tăng kích thước file của sản phẩm cũng
như việc xuất hiện các đoạn mã bị lỗi. Được hưởng lợi nhất từ Game API trong MIDP
2.0 không chỉ là các lập trình viên Game mà còn là các lập trình viên cần sử dụng
các tính năng đồ họa cao cấp. Ý tưởng cơ bản của Game API là việc giả định rằng
một màn hình game là tập hợp các layer (lớp). Ví dụ như: trong một game đua xe thì
màn hình nền là một layer, con đường là một layer và chiếc xe được xem như
đang nằm trên layer khác. Với Game API nhà phát triển còn được cung cấp các tính

năng như quản lý các thao tác bàn phím.
 Hỗ trợ kiểu ảnh RGB: một trong những cải tiến hấp dẫn cho các nhà phát triển MIDP là
việc biểu diễn hình ảnh dưới dạng các mảng số nguyên, cho phép MIDlet thao tác với
dữ liệu hình ảnh một cách trực tiếp.
II.4.2. MIDLet
MIDP (Mobile Information Device Profile) là tập các hàm API dành cho thiết bị thông tin di
động. MIDlet là ứng dụng MIDP. Thuật ngữ MIDlet và MID application được sử dụng như nhau.
Các MIDlets hình thành nên các khối xây dựng của môi trường thực thi Java 2 Platform Micro
Edition (J2ME).
Mobile Programming (Private Version) Trịnh Công Duy
19
MIDlet được thiết kế để chạy và được điều khiển bởi trình quản lý ứng dụng trong máy ảo K
(K Virtual Machine - KVM), một dạng đơn giản nhất của máy ảo Java được thiết kế để chạy trên
thiết bị di động. Lớp javax.microedition.midlet.MIDlet hoạt động như là một giao diện (interface)
giữa MIDlet và trình quản lý ứng dụng. Các phương thức thuộc lớp này cho phép trình quản lý
ứng dụng tạo, bắt đầu, tạm dừng, và hủy MIDlet.
Hình 1. Hình biểu diễn MIDlet
Thông báo import dùng để truy xuất các lớp của CLDC và MIDP. Lớp chính của ứng dụng
được định nghĩa là lớp kế thừa lớp MIDlet của MIDP. Có thể chỉ có một lớp trong ứng dụng kế
thừa lớp này. Lớp MIDlet được trình quản lý ứng dụng trên điện thoại di động dùng để khởi động,
dừng, và tạm dừng MIDlet. Ví dụ, trong trường hợp có cuộc gọi đến.
II.4.3. Bộ khung của MIDlet (MIDlet Skeleton)
Một MIDlet là một lớp Java kế thừa (extend) của lớp trừu tượng
java.microedition.midlet.MIDlet và thực thi (implement) các phương thức startApp(), pauseApp(),
và destroyApp().
Hình 2. Hình biểu diễn bộ khung yêu cầu tối thiểu cho một ứng dụng MIDlet
(1) Phát biểu import:
Các phát biểu import được dùng để include các lớp cần thiết từ các thư viện CLDC và MIDP.
(2) Phần chính của MIDlet:
MIDlet được định nghĩa như một lớp kế thừa lớp MIDlet. Trong ví dụ này MIDletExample

là bắt đầu của ứng dụng.
(3) Hàm khởi tạo - Constructor:
Mobile Programming (Private Version) Trịnh Công Duy
20
Hàm tạo chỉ được thực thi một lần khi MIDlet được khởi tạo lần đầu tiên. Hàm tạo sẽ không
được gọi lại trừ phi MIDlet thoát và sau đó khởi động lại.
(4) startApp():
Phương thức startApp() được gọi bởi bộ quản lý ứng dụng khi MIDlet được khởi tạo, và mỗi
khi MIDlet trở về từ trạng thái tạm dừng. Nói chung, các biến toàn cục sẽ được khởi tạo lại trừ
hàm tạo bởi vì các biến đã được giải phóng trong hàm pauseApp(). Nếu không thì chúng sẽ không
được khởi tạo lại bởi ứng dụng.
(5) pauseApp():
Phương thức pauseApp() được gọi bởi bộ quản lý ứng dụng mỗi khi ứng dụng cần được tạm
dừng (ví dụ, trong trường hợp có cuộc gọi hoặc tin nhắn đến). Cách thích hợp để sử dụng
pauseApp() là giải phóng tài nguyên và các biến để dành cho các chức năng khác trong điện thoại
trong khi MIDlet được tạm dừng. Cần chú ý rằng khi nhận cuộc gọi đến hệ điều hành trên điện
thoại di động có thể dừng KVM thay vì dừng MIDlet. Việc này không được đề cập trong MIDP
mà đó là do nhà sản xuất quyết định sẽ chọn cách nào.
(6) destroyApp():
Phương thức destroyApp() được gọi khi thoát MIDlet. Ví dụ khi nhấn nút exit trong ứng
dụng. Nó chỉ đơn thuần là thoát MIDlet. Nó không thật sự xóa ứng dụng khỏi điện thoại di động.
Phương thức destroyApp() chỉ nhận một tham số Boolean. Nếu tham số này là true, MIDlet được
tắt vô điều kiện. Nếu tham số là false, MIDlet có thêm tùy chọn từ chối thoát bằng cách ném ra
một ngoại lệ MIDletStateChangeException.
II.4.4. Vòng đời của MIDlet (gMIDlet lifecycle)
Lớp chính của một MIDlet kế thừa là lớp javax.microedition.midlet.MIDlet. Lớp chính này
định nghĩa ba phương thức hành động trong chu kỳ sống của nó: startApp(), pauseApp(), và
destroyApp().
Có ba trạng thái trong vòng đời của một MIDlet:
paused: MIDlet instance đã được tạo xong và chưa hoạt động (inactive)

active: MIDlet đang hoạt động.
destroyed: MIDlet đã kết thúc và sẵn sàng cho việc tái chế bởi bộ thu gom rác.
Chú ý ở đây không có trạng thái nào tương đương với trạng thái loaded của applet, bởi vì ở
đây không có phương thức khởi tạo. Thông thường, một MIDlet khởi tạo chính nó ngay lần đầu
tiên khi phương thức startApp() được gọi.
Mobile Programming (Private Version) Trịnh Công Duy
21
Hình 3. Hình biểu diễn các trạng thái của MIDlet
Khi người dùng yêu cầu khởi động ứng dụng MIDlet, bộ quản lý ứng dụng sẽ thực thi
MIDlet (thông qua lớp MIDlet). Khi ứng dụng thực thi, nó sẽ được xem là đang ở trạng thái tạm
dừng. Bộ quản lý ứng dụng gọi hàm tạo và hàm startApp(). Hàm startApp() có thể được gọi nhiều
lần trong suốt chu kỳ sống của ứng dụng. Hàm destroyApp() chỉ có thể gọi từ trạng thái hoạt động
hay tạm dừng.
Lập trình viên cũng có thể điều khiển trạng thái của MIDlet. Các phương thức dùng để điều
khiển các trạng thái của MIDlet:
resumeRequest(): Yêu cầu vào chế độ hoạt động. Ví dụ: Khi MIDlet tạm dừng, và một sự
kiện timer xuất hiện.
notifyPaused(): Cho biết MIDlet tự nguyện chuyển sang trạng thái tạm dừng
Ví dụ: Khi đợi một sự kiện timer.
notifyDestroyed(): Sẵn sàng để hủy. Ví dụ: Xử lý nút nhấn Exit
Lập trình viên có thể yêu cầu tạm dừng MIDlet trong khi đợi một sự kiện timer hết hạn.
Trong trường hợp này, phương thức notifyPaused() sẽ được dùng để yêu cầu bộ quản lý ứng dụng
chuyển ứng dụng sang trạng thái tạm dừng.
II.4.5. Tập tin JAR
Các lớp đã biên dịch của ứng dụng MIDlet được đóng gói trong một tập tin JAR (Java
Archive File). Đây chính là tập tin JAR được download xuống điện thoại di động.
Tập tin JAR chứa tất cả các tập tin class từ một hay nhiều MIDlet, cũng như các tài nguyên
cần thiết. Hiện tại, MIDP chỉ hỗ trợ định dạng hình .png (Portable Network Graphics). Tập tin
JAR cũng chứa tập tin kê khai (manifest file) mô tả nội dung của MIDlet cho bộ quản lý ứng dụng.
Mobile Programming (Private Version) Trịnh Công Duy

22
Nó cũng phải chứa các tập tin dữ liệu mà MIDlet cần. Tập tin JAR là toàn bộ ứng dụng MIDlet.
MIDlet có thể load và triệu gọi các phương thức từ bất kỳ lớp nào trong tập tin JAR, trong MIDP,
hay CLDC. Nó không thể truy xuất các lớp không phải là bộ phận của tập tin JAR hay vùng dùng
chung của thiết bị di động.
Mô tả nội dung của tập tin JAR:
Các trường yêu cầu:
Manifest-Version // Phiên bản tập tin Manifest
MIDlet-Name // Tên bộ MIDlet (MIDlet suite)
MIDlet-Version // Phiên bản bộ MIDlet
MIDlet-Vendor // Nhà sản xuất MIDlet
MIDlet-<n> for each MIDlet // Tên của MIDlet
MicroEdtion-Profile // Phiên bản hiện trạng
MicroEdtion-Configuration // Phiên bản cấu hình
Tập tin kê khai (manifest) và tập tin JAD
Tập tin kê khai (manifest.mf) và tập tin JAD (Java Application Descriptor) mô tả các đặc
điểm của MIDlet. Sự khác biệt của hai tập tin này là tập tin kê khai là một phần của tập tin JAR
còn tập tin JAD không thuộc tập tin JAR. Ưu điểm của tập tin JAD là các đặc điểm của MIDlet có
thể được xác định trước khi download tập tin JAR. Nói chung, cần ít thời gian để download một
tập tin văn bản nhỏ hơn là download một tập tin JAR. Như vậy, nếu người dùng muốn download
một ứng dụng không được thiết bị di động hỗ trợ (ví dụ, MIDP 2.0), thì quá trình download sẽ bị
hủy bỏ thay vì phải đợi download hết toàn bộ tập tin JAR.
Ví dụ một tập tin manifest.mf:
MIDlet-Name: CardGames
MIDlet-Version: 1.0.0
MIDlet-Vendor: Sony Ericsson
MIDlet-Description: Set of Card Games
MIDlet-Info-URL: />MIDlet-Jar-URL: />MIDlet-Jar-Size: 1063
MicroEdtion-Profile: MIDP-1.0
MicroEdtion-Configuration: CLDC-1.0

MIDlet-1: Solitaire, /Sol.png, com.semc.Solitaire
MIDlet-2: BlackJack, /Blkjk.png, com.semc.BlackJack
Tập tin JAD chứa cùng thông tin như tập tin manifest. Nhưng nó nằm ngoài tập tin JAR.
Mobile Programming (Private Version) Trịnh Công Duy
23
Các thuộc tính MIDlet-Name, MIDlet-Version, và MIDlet-Vendor phải được lặp lại trong
tập tin JAD và JAR. Các thuộc tính khác không cần phải lặp lại. Giá trị trong tập tin mô tả sẽ đè
giá trị của tập tin manifest.
II.4.6. Bộ MIDlet (MIDlet Suite)
Một tập các MIDlet trong cùng một tập tin JAR được gọi là một bộ MIDlet (MIDlet suite).
Các MIDlet trong một bộ MIDlet chia sẻ các lớp, các hình ảnh, và dữ liệu lưu trữ bền vững. Để
cập nhật một MIDlet, toàn bộ tập tin JAR phải được cập nhật.
Hình 4. Hình biểu diễn hai bộ MIDlet
Trong hình trên, một bộ MIDlet chứa MIDlet1, MIDlet2, và MIDlet3. Bộ kia chỉ chứa
MIDlet4. Ba MIDlet trong bộ đầu tiên truy xuất các lớp và dữ liệu của nhau nhưng không truy
xuất đến các lớp hay dữ liệu của MIDlet4. Ngược lại, MIDlet4 cũng không truy xuất được các lớp,
hình ảnh, và dữ liệu của chúng.
II.5. Môi trường phát triển J2ME
II.5.1. Phát triển ứng dụng J2ME với J2ME Wireless Toolkit
Có nhiều môi trường phát triển ứng dụng J2ME và mỗi hãng điện thoại cũng đưa
ra những môi trường phát triển cho riêng mình. Ở đây tôi sẽ giới thiệu toolkit của Sun:
J2ME Wireless Toolkit.
Địa chỉ download chương trình: Ngoài ra bạn
cần phải có J2SDK 1.4 trở lên.
Cài đặt Wireless tool Kit 2.5.1
- Wireless toolkit là công cụ cho phép chúng ta biên dịch và chạy những ứng dụng điện
thoại trên điện thoại ảo. có thể download tại />2_5_1.html
Mobile Programming (Private Version) Trịnh Công Duy
24
- Chạy file sun_java_wireless_toolkit-2_5_1-windows.exe để cài đặt chương trình. Sau khi

cài đặt thành công, bạn sẽ có thư mục chương trình trong menu Start như hình bên dưới
Để chạy chương trình chúng ta chọn wireless Toolkit 2.5.1. Bạn sẽ thấy cửa sổ hiện ra như
hình bên dưới
Chương trình Hello đầu tiên
- Chúng ta click chuột vào New project và nhấp vào Project và Class bạn muốn tạo vidu:
TestMidlet và không nhất thiết tên Class trùng với tên Project
- Từ Target Platform chọn Custom. Ví dụ chúng ta muốn ứng dụng thích hợp với điện
thoại N70 cho nên trong group MIDP 2.0 và CLDC 1.1, chúng ta có thể tra cứu flatform tại đây
/>

×