ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di độngĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Đặng Đình Hùng NGHIÊN CỨU CÔNG NGHỆ J2ME VÀ THỬ NGHIỆM
LẬP TRÌNH ỨNG DỤNG TRÊN THIẾT BỊ DI ĐỘNG
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
Cán bộ hướng dẫn: ThS Đào Ngọc Phong ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Đặng Đình Hùng NGHIÊN CỨU CÔNG NGHỆ J2ME VÀ THỬ NGHIỆM
LẬP TRÌNH ỨNG DỤNG TRÊN THIẾT BỊ DI ĐỘNG
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin Cán bộ hướng dẫn: ThS Đào Ngọc Phong
cuộc sống.
Hà Nội, tháng 5 năm 2010
Đặng Đình Hùng
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động
Tóm tắt nội dung
Khóa luận tập trung nghiên cứu công nghệ J2ME trên thiết bị di động với trọng
tâm là phục vụ cho việc đáp ứng các dịch vụ trực tuyến trong thực tế cuộc sống. B ên cạnh
đó còn có các công nghệ liên quan nhằm trợ giúp các lập trình viên dễ dàng tiếp cận với
việc xây dựng các ứng dụng trên thiết bị di dộng một cách linh hoạt và chuyên nghiệp.
Việc xây dựng ứng dụng thử nghiệm được đáp ứng hai khía cạnh, một là xây dựng
ứng dụng Web Services để xây dựng và quản trị nội dung, hai là thử nghiệm ứng dụng
trên thiết bị di động dành cho người dùng với một chương trình mô phỏng.
3.5. Tầng cấu hình ____________________________________________________ 15
3.6. Tầng hiện trạng ___________________________________________________ 16
3.7. MIDlet _________________________________________________________ 16
3.7.1. Bộ khung MIDlet ________________________________________________ 17
3.7.2. Chu kỳ sống của MIDlet __________________________________________ 18
3.7.3. Tập tin JAR ____________________________________________________ 20
3.7.4. Tập tin kê khai và JAD ___________________________________________ 20
3.7.5. Bộ MIDlet _____________________________________________________ 21
Chương 4. Một số công nghệ trong J2ME 22
4.1. Đồ họa __________________________________________________________ 23
4.1.1. Đồ họa mức cao _________________________________________________ 23
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động
4.1.1.1. Text Box _____________________________________________________ 23
4.1.1.2. Form ________________________________________________________ 23
4.1.1.3. List _________________________________________________________ 23
4.1.1.4. Alert ________________________________________________________ 23
4.1.1.5. Form và các Form Item __________________________________________ 24
4.1.1.5.1. String Item __________________________________________________ 24
4.1.1.5.2. Image Item __________________________________________________ 24
4.1.1.5.3. Text Field ___________________________________________________ 24
4.1.1.5.4. Date Field ___________________________________________________ 24
4.1.1.5.5. Choice Group ________________________________________________ 24
4.1.1.5.6. Gause ______________________________________________________ 25
4.1.1.5.7 . Ticker ______________________________________________________ 25
4.1.2. Đồ họa mức thấp ________________________________________________ 25
4. 2. Lập trình mạng ___________________________________________________ 26
4.2.1. Khung mạng CLDC tổng quát ______________________________________ 26
4.2.2. Các lớp giao diện kết nối __________________________________________ 28
4.2.3. Kết nối HTTP ___________________________________________________ 30
6.1.3.1.3. Khu vực thao tác với các danh mục tin ____________________________ 50
6.1.3.1.4. Khu vực quản lý nội dung ______________________________________ 51
6.1.3.2. Phần dành cho người quản trị _____________________________________ 51
6.1.3.2.1. Phần menu bên trái ___________________________________________ 51
6.1.3.2.2. Phần quản lý nhóm người dùng __________________________________ 52
6.1.3.2.3. Phần quản lý nhóm thực đơn ____________________________________ 52
6.1.3.2.4. Phần quản lý các nhóm Component ______________________________ 53
6.1.3.2.5. Phần quản lý ngôn ngữ hiển thị _________________________________ 53
6.1.3.3. Phần xuất bản nội dung định dạng XML ____________________________ 54
6.1.3.3.1. Xuất bản nội dung các danh mục tin ______________________________ 54
6.1.3.3.2. Xuất bản các bản tin trong cùng danh mục _________________________ 54
6.2. Trên thiết bị di động _______________________________________________ 55
6.2.1. Quy trình hoạt động ______________________________________________ 55
6.3. Các module chính trong ứng dụng ____________________________________ 57
6.3.1. Web Services ___________________________________________________ 57
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động
6.3.2. Trên thiết bị di động______________________________________________ 61
6.4. Mã nguồn tham khảo ______________________________________________ 65
6.4.1. kxml2 _________________________________________________________ 65
6.4.2. Convert UTF-8 __________________________________________________ 65
6.4.3. LWUIT ________________________________________________________ 65
Chương 7. Cài đặt ứng dụng thử nghiệm 66
7.1. Web Services ____________________________________________________ 66
7.1.1. Cài đặt phần giả lập máy chủ Web trên máy tính cá nhân ________________ 66
7.1.2. Cấu hình gói ứng dụng Web Services ________________________________ 66
7.2. Trên thiết bị di động _______________________________________________ 67
7.2.1. Cài đặt phần mềm mô phỏng _______________________________________ 67
7.2.2 . Cấu hình ứng dụng thử nghiệm _____________________________________ 67
Hình 8: Tiến trình xây dựng MIDlet…………………………………………………. .13
Hình 9: MIDlet……………………………………………………………………… 16
Hình 10: Bộ khung yêu cầu tối thiểu cho một ứng dụng MIDlet…………………… 17
Hình 11: Chu kỳ sống của MIDlet…………………………………………………….18
Hình 12: Hai bộ MIDlet……………………………………………………………….21
Hình 13. Phân cấp lớp đồ họa………………………………………………………….25
Hình 14. Khung mạng CLDC tổng quát……………………………………………….26
Hình 15. Các lớp kết nối………………………………………………………………. 27
Hình 16. Các trạng thái kết nối HTTP…………………………………………………29
Hình 17: Các phân tầng lớp trong LWUIT…………………………………………….38
Hình 18 : Ứng dụng thử nghiệm với LWUIT………………………………………….39
Hình 19 : Quá trình xử lý trên web services……………………………………………45
Hình 20 : Biểu đồ thực thể liên kết của hệ thống………………………………………48
Hình 21: Người quản trị đăng nhập vào hệ thống…………………………………… 49
Hình 22: Khu vực mặc định của hệ thống…………………………………………… 49
Hình 23: Khu vực hiển thị danh mục của hệ thống…………………………………….50
Hình 24: Khu vực hiển thị nội dung bản tin……………………………………………50
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động
Hình 25: Phần tùy chọn bên trái của hệ thống………………………………………….51
Hình 26: Phần quản lý nhóm người dùng………………………………………………51
Hình 27: Phần quản lý nhóm thực đơn…………………………………………………52
Hình 28: Phần quản lý Component……………………………………………………. 52
Hình 29: Khu vực quản lý ngôn ngữ hiển thị trong hệ thống………………………….53
Hình 30: Kết quả thu được với trình duyệt Mozilla Firefox 3.5…………………….…53
Hình 31: Kết quả thu được với trình duyệt Mozilla Firefox 3.5…………………………54
Hình 32: Màn hình khởi động của ứng dụng…………………………………………… 55
Hình 33: Màn hình tùy chọn ứng dụng……………………………………………… …57
Hình 34:Yêu cầu cho phép kết nối tới dịch vụ……………………………………… …57
Hình 35: Các quá trình khi xem tin tức với ứng dụng……………………………………58
CLDC
Connected Limited Device Configuration
CPU
Central Processing Unit
DOM
Document Object Model
DTD
Document Type Definition
EDGE
Enhanced Data GSM Environment
GPRS
General Packet Radio Service
GPS
Global Positioning System
GSM
Global System for Mobile Communications
GUI
Graphical User Interface
HTML
Hyper-Text Markup Language
HTTP
Hyper-Text Transfer Protocol
IDE
Integrated Development Environment
IP
Internet Protocol
IR
Infra Red
J2EE
Java 2 Platform, Enterprise Edition
PHP
PHP Hypertext Preprocessor
RMI
Remote Method Invocation
RMS
Record Management System
SAX
Simple API for XML
SMS
Short Message Service
UDP
User Datagram Protocol
URL
Uniform Resource Locator
WAP
Wireless Application Protocol
WBXML
Wap Binary XML
WMA
Wireless Messaging API
XML
eXensible Markup Language
ngôn ngữ C++ trên nền hệ điều hành Symbian và J2ME. Khoảng mấy năm trở lại đây,
nền tảng di động mở Android của Google và iPhone OS của Apple cũng đang có tín hiệu
phát triển rất khả quan.
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động
2
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 Symbyan 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 dụng, thẻ 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 Symbyan. Tại thời điểm hiện tại, ngôn ngữ J2ME không hỗ
trợ được nhiều tính năng như trên C++ trên nề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 dễ dàng. J2ME
còn là 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.
Năm 2007, liên minh Google, OHA ra mắt nền tảng Android, nó được giới thiệu là
một nền tảng mở với sự kết hợp của ngôn ngữ Java và hệ điều hành Linux 2.6. Trong
Android, nét đặc trưng nổi bật là tính tương thích lẫn nhau, khả năng hỗ trợ thiết bị, cũng
như ngôn ngữ Java SE cộng với việc tích hợp sử dụng cơ sở dữ liệu ngay trong thiết bị.
Một đối thủ rất đáng gờm trong thị phần của điện thoại thông minh đó là iPhone của
Apple, các ứng dụng của iPhone được viết bằng ngôn ngữ Objective C hoạt động trên nền
iPhone OS. Đặc điểm chính của Objective C là ngôn ngữ hướng đối tượng nhưng được hỗ
4
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.
2.2.2 . MIDP 2.0
Phiên bản MIDP 2.0 được Sun hỗ trợ đầy đủ, cộng với các API chính quy. Các tính
năng về gửi SMS, kết nối với các tập tin âm thanh, hình ảnh được hỗ trợ tốt. Ngoài ra, lập
trình viên còn có thể viết các ứng dụng kết nối bluetooth hay viết game trên thiết bị di
động với J2ME.
Nâng cấp các tính năng bảo mật như:
Download qua mạng an toàn hơn qua việc hỗ trợ giao thức HTTPS.
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ớ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.
Download về thiết bị
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động
6
Bộ tiền kiểm tra
Các tập tin lớp được gán nhãn bằng một thuộc tính trên máy trạm. Thuộc tính này
sau đó được bộ tiền kiểm tra kiểm tra trước khi mã chương trình được giao cho KVM hay
bộ biên dịch mã bytecode.
Một bộ phận khác của bảo mật trong CLDC là mô hình sandbox.
Hình 3 biểu diễn khái niệm mô hình sandbox: Hình 3: Mô hình Sandbox.
Mô hình Sandbox
Ứng dụng J2ME đặt trong một sandbox bị giới hạn truy xuất đến tài nguyên của
thiết bị và không được truy xuất đến Máy ảo Java hay bộ nạp chương trình. Ứng dụng
được truy xuất đến các API của CLDC và MIDP. Ứng dụng được truy xuất tài nguyên
của thiết bị di động chỉ khi nhà sản xuất điện thoại di động cung cấp các API tương ứng.
Nhưng các API này không phải là một phần của J2ME.
Thế hệ kế tiếp của CLDC là đặc tả JSR - 139 và được gọi là CLDC thế hệ kế tiếp.
Nó sẽ nhắm đến các vấn đề như nâng cao việc quản lý lỗi và có thể phép toán số thực.
Tài nguyên
thiết bị
Các CLDC
API
Các MIDP
API
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.
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động
8
Chương 3. Công nghệ lập trình J2ME trên thiết bị di động
3.1. Kiến trúc
Hình 5: Kiến trúc J2ME.
Configuration: 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ư:
o Kiểu và số lượng bộ nhớ
o Kiểu và tốc độ vi xử lý
o Kiểu mạng kết nối
Do đây là các đặc tả nên nhà sản xuất thiết bị đầu cuối 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 một cách tối thiểu
nhất để có thể chạy trên điện thoại Nokia…
Hiện nay Sun đưa ra hai dạng cấu hình:
CLDC (Connected Limited Device Configuration-Cấu hình thiết bị kết nối
CDC
RAM
>=32Kb, <=512Kb
>=256Kb
ROM
>=128Kb, <=512Kb
>=512Kb
Nguồn năng lượng
Có giới hạn
Không giới hạn
Network
Chậm
Nhanh
Bảng so sánh các thông số kĩ thuật giữa CLDC và CDC
Profile: profile là mở rộng của configuration bằng cách thêm vào các lớp để bổ trợ
các tính năng cho từng thiết bị chuyên biệt. Cả hai configuration đều có những profile liên
quan và từ những profile này có thể dùng các lớp của nhau. Chính vì vậy mà do mỗi
profile định nghĩa một tập hợp các lớp khác nhau nên thường thì ta không thể chuyển ứng
dụng Java viết cho profile này sang một máy hỗ trợ profile khác. Cũng vì vậy mà không
thể lấy ứng dụng viết trên J2SE hay J2EE để chạy trên máy hỗ trợ J2ME. Sau đây là một
số profile tiêu biểu:
o 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).
o 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.
Máy ảo Java
Cấu hình
CLDC
Hiện trạng:
MIDP
Các API khác
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động
12
này cung cấp một sự chuẩn hóa cho các thiết bị di động để ứng dụng J2ME sau khi đã
biên dịch có thể hoạt động trên bất kỳ thiết bị di động nào có J2ME KVM.
Tầng cấu hình (Configuration Layer)
Tầng cấu hình của CLDC định nghĩa giao diện ngôn ngữ Java (Java language
interface) cơ bản để cho phép chương trình Java chạy trên thiết bị di động. Đây là một tập
các API định nghĩa lõi của ngôn ngữ J2ME.
Tầng hiện trạng (Profile Layer)
Tầng hiện trạng hay MIDP ( Mobile Information Device Profile ) cung cấp tập các
API hữu dụng hơn cho lập trình viên. Mục đích của hiện trạng là xây dựng trên lớp cấu
hình và cung cấp nhiều thư viện ứng dụng hơn. MIDP định nghĩa các API riêng biệt cho
thiết bị di động. Cũng có thể có các hiện trạng và các API khác ngoài MIDP được dùng
cho ứng dụng. Ví dụ, có thể có hiện trạng PDA định nghĩa các lớp và phương thức hữu
dụng cho việc tạo các ứng dụng PDA (lịch, sổ hẹn, sổ địa chỉ…). Cũng có thể có một hiện
trạng định nghĩa các API cho việc tạo các ứng dụng Bluetooth. Thực tế, các hiện trạng kể
trên và tập các API đang được xây dựng. Chuẩn hiện trạng PDA là đặc tả JSR-75 và
chuẩn Bluetooth API là đặc tả JSR-82 với JSR là viết tắt của Java Specification Request.
3.4. Tầng máy ảo Java
Vai trò của máy ảo Java hay KVM là dịch mã bytecode được sinh ra từ chương trình
Java đã biên dịch sang ngôn ngữ máy. Chính KVM sẽ chuẩn hóa output của các chương
trình Java cho các thiết bị di động khác nhau có thể có bộ vi xử lý và tập lệnh khác nhau.
tra Java
Tập tin lớp Java
*.class
Tập tin lớp Java
*.class
Tập tin JAR
Trạm phát triển
Bộ biên dịch
mã bytecode
KVM
Mã bytecode
Mã máy
Thiết bị đích