Khóa luận 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

ĐẠI HỌC QUỐC GIA HÀ NỘI  
TRƯNGĐIHCCÔNGNGH
Đặ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  
HÀ NỘI - 2010  
ĐẠ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  
HÀ NỘI - 2010  
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
Lời cảm ơn  
Sau một thời gian tập trung nghiên cứu và thực hiện, em đã hoàn thành xong luận  
văn của mình. Đây là kết tinh của một quá trình lao động và học tập nghiêm túc dựa trên  
kiến thức mà em đã thu thập được dưới sự truyền dạy của quý thầy cô.  
Lời đầu tiên, em xin được gửi lời cảm ơn sâu sắc tới ThS. Đào Ngọc Phong và thầy–  
PGS TS Trịnh Nhật Tiến, những người thầy đã nhiệt tình giúp đỡ em cũng như các bạn  
được thầy hướng dẫn trong suốt quá trình làm khóa luận.  
Em xin được cảm ơn các thầy, các cô đã giảng dạy em trong suốt bốn năm qua.  
Những kiến thức mà các thầy, các cô đã dạy sẽ mãi là hành trang giúp em vững bước  
trong tương lai.  
Em cũng xin được cảm ơn tập thể lớp K51CC, một tập thể lớp đoàn kết với những  
người bạn luôn nhiệt tình giúp đỡ mọi người, những người bạn đã giúp đỡ em trong suốt  
bốn năm học tập trên giảng đường Đại học.  
Cuối cùng, em xin được gửi lời cảm ơn sâu sắc tới bố mẹ và gia đình em, những  
người luôn kịp thời động viên, khích lệ em, giúp đỡ em vượt qua những khó khăn trong  
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.  
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
Mục lục  
Chương 1. Tổng quan về lập trình trên thiết bị di động....................................................1  
1.1. Thực tế các ứng dụng trên thiết bị di động ______________________________ 1  
1.2. Đặc điểm của lập trình ứng dụng trên thiết bị di động _____________________ 1  
1.3. Các công nghệ trong lập trình trên thiết bị di động _______________________ 1  
Chương 2. Giới thiệu J2ME................................................................................................3  
2.1. Lịch sử hình thành J2ME ____________________________________________ 3  
2.2. Các phiên bản, đặc điểm_____________________________________________ 3  
2.2.1. MIDP 1.0 _______________________________________________________ 3  
2.2.2 . MIDP 2.0 _______________________________________________________ 4  
2.3. Sự khác nhau giữa J2ME và J2SE _____________________________________ 5  
2.4. Các đặc điểm khác _________________________________________________ 7  
Chương 3. Công nghệ lập trình J2ME trên thiết bị di động .............................................8  
3.1. Kiến trúc _________________________________________________________ 8  
3.2. Các lớp của J2ME_________________________________________________ 10  
3.3. Các tầng của CLDC J2ME __________________________________________ 11  
3.4. Tầng máy ảo Java _________________________________________________ 12  
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  
4.2.3.1. Ví dụ kết nối HTTP GET ________________________________________ 31  
4.2.3.2. Ví dụ kết nối HTTP POST _______________________________________ 32  
4.2.4. Triệu gọi CGI script______________________________________________ 33  
4.2.5. HTTP Request Header ____________________________________________ 34  
4.3. Wireless Messaging API____________________________________________ 34  
Chương 5. Xây dựng ứng dụng thử nghiệm ....................................................................38  
5.1. Giới thiệu ứng dụng _______________________________________________ 38  
5.1.1. Mục tiêu _______________________________________________________ 38  
5.1.2. Ứng dụng thử nghiệm ____________________________________________ 38  
5.2. Các công nghệ sử dụng trong chương trình _____________________________ 38  
5.2.1. Lightweight UI Toolkit (LWUIT) ___________________________________ 38  
5.2.2. XML__________________________________________________________ 40  
5.2.2.1. Phân tách XML________________________________________________ 41  
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
5.2.2.2. Các bộ phân tích XML cho KVM _________________________________ 42  
5.2.2.2.1. kXML______________________________________________________ 43  
5.2.2.2.2. Tiny XML __________________________________________________ 43  
5.2.2.2.3. Nano XML__________________________________________________ 43  
5.2.2.3. Làm việc với kXML ____________________________________________ 44  
5.2.2.4. Gói org.kxml__________________________________________________ 44  
5.2.2.5. Gói org.kxml.io________________________________________________ 45  
Chương 6. Tổng quan về chương trình ứng dụng thử nghiệm ......................................46  
6.1. Web Services ____________________________________________________ 46  
6.1.1. Giới thiệu khung xử lý hệ thống ____________________________________ 46  
6.1.2. Xây dựng cơ sở dữ liệu cho hệ thống ________________________________ 48  
6.1.3. Quá trình hoạt động của hệ thống ___________________________________ 49  
6.1.3.1. Phần quản trị nội dung __________________________________________ 49  
6.1.3.1.1. Khu vực người quản trị đăng nhập vào hệ thống ____________________ 49  
6.1.3.1.2. Khu vực chung_______________________________________________ 50  
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  
Kết luận:…………………………………………………………………………………....  
Tài liệu tham khảo:………………………………………………………………………...  
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
Danh mục hình vẽ và bảng biểu  
Hình 1: Lịch sử J2ME............................................................................................... ....3  
Hình 2: Sơ đồ kiểm tra của bộ tiền kiểm tra và bộ kiểm tra..........................................5  
Hình 3: Mô hình Sandbox……………………………………………………….…….6  
Hình 4: J2ME và J2SE………………………………………………………………...7  
Hình 5: Kiến trúc J2ME……………………………………………………………….8  
Hình 6: Phân khúc dòng thiết bị với các ngôn ngữ Java……………………………....9  
Hình 7: Các lớp của J2ME…………………………………………………………….11  
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  
Hình 36: Tạo cơ sở dữ liệu trong phpmyadmin………………………………………..…66  
Hình 37: Quá trình nhập cơ sở dữ liệu…………………………………………………...66  
Hình 38: Bước đầu tạo Project mới………………………………………………………67  
Hình 39: Cấu hình ban đầu…………………………………………………….…………68  
Hình 40: Cấu hình chi tiết…………………………………………………...……………68  
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
Thuật ngữ viết tắt  
Application Program Interface  
American Standard Code for Information Interchange  
Abstract Window ToolKit  
API  
ASCII  
AWT  
CBS  
Cell Broadcast Short Message Service  
Connected Device Configuration  
Code Division Multiple Access  
Common Gateway Interface  
Connected Limited Device Configuration  
Central Processing Unit  
CDC  
CDMA  
CGI  
CLDC  
CPU  
DOM  
DTD  
EDGE  
GPRS  
GPS  
Document Object Model  
Document Type Definition  
Enhanced Data GSM Environment  
General Packet Radio Service  
Global Positioning System  
Global System for Mobile Communications  
Graphical User Interface  
GSM  
GUI  
Hyper-Text Markup Language  
Hyper-Text Transfer Protocol  
Integrated Development Environment  
Internet Protocol  
HTML  
HTTP  
IDE  
IP  
Infra Red  
IR  
Java 2 Platform, Enterprise Edition  
Java 2 Platform, Micro Edition  
Java 2 Platform, Standard Edition  
Java Application Descriptor  
Java Application Archive  
J2EE  
J2ME  
J2SE  
JAD  
JAR  
Java Community Process  
JCP  
JavaNative Interface Support  
JNI  
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
Java Specification Request  
K Virtual Machine  
JSR  
KVM  
MIDlet  
MIDP  
MVC  
OTA  
PC  
MIDP applet  
Mobile Information Device Profile  
Model-View-Controller  
Over The Air  
Personal Computer  
Personal Digital Assistant  
PHP Hypertext Preprocessor  
Remote Method Invocation  
Record Management System  
Simple API for XML  
PDA  
PHP  
RMI  
RMS  
SAX  
Short Message Service  
User Datagram Protocol  
Uniform Resource Locator  
Wireless Application Protocol  
Wap Binary XML  
SMS  
UDP  
URL  
WAP  
WBXML  
WMA  
XML  
Wireless Messaging API  
eXensible Markup Language  
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
Chương 1. Tổng quan về lập trình trên thiết bị di động  
1.1 . Thực tế các ứng dụng trên thiết bị di động  
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 hóa  
các dịch vụ hướng đến thiết bị di động. Trong những năm gần đây, điện thoại di động  
không chỉ mang chức năng nghe gọi 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 hay trợ giúp cá nhân đắc lực. Do vậy, 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. Năm 2009, các  
nhà mạng lớn đã bắt tay vào việc triển khai mạng 3G tại Việt Nam, năm 2010 trở đi được  
đánh giá là những năm nở rộ các dịch vụ tiện ích trên thiết bị di động đặc biệt là các ứng  
dụng trực tuyến trên nền thiết bị di động.  
Trong tương lai, với sự phát triển mạnh mẽ của các thiết bị di động về phần cứng  
cũng như chất lượng mạng di động, ngành công nghiệp phần mềm trên thiết bị di động sẽ  
gặt hái được nhiều thành quả và nó sẽ thu hút lượng lớn các nhân công cũng như hứa hẹn  
nhiều điều thú vị.  
1.2 . Đặc điểm của lập trình ứng dụng trên thiết bị di động  
Đặc trưng thiết bị di động hỗ trợ tài nguyên phần cứng không cao, với đặc điểm là  
bộ nhớ hạn chế, khả năng xử lý chậm, các thiết bị mở rộng còn hạn chế, vì vậy lập trình  
ứng dụng trên thiết bị di động đòi hỏi các lập trình viên quản lý tốt bộ nhớ, độ lớn của mã  
nguồn, cũng như các thư viện hay cơ chế làm việc với các file media.  
Do thiết bị di động được phát triển bởi nhiều hãng nên cấu trúc phần cứng đa dạng  
và khó có chuẩn chung nên yêu cầu các ngôn ngữ lập trình độc lập với phần cứng và linh  
hoạt là rất cao.  
1.3 . Các công nghệ trong lập trình trên thiết bị di động  
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. 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.  
1
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
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ỗ  
trợ nhiều bởi các API nên việc xử lý đa phương tiện nổi trội, điều này cũng tạo nên  
thương hiệu đình đám của Apple.  
2
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
Chương 2. Giới thiệu J2ME  
2.1. Lịch sử hình thành J2ME  
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 là Java 2 Micro Edition, hay viết tắt là J2ME. J2ME là nền tảng cho các  
thiết bị có tính chất nhỏ gọn:  
Hình 1: Lịch s J2ME.  
2.2. Các phiên bản, đặc điểm  
Có hai phiên bản MIDP chính trong ngôn ngữ J2ME:  
2.2.1. MIDP 1.0  
Phiên bản này xuất hiện đầu tiên vào năm 2001, và phổ biến rộng rãi ở Mỹ (dẫn đầu  
là Motorola ). Với thế hệ ban đầu này, các chương trình chỉ được hỗ trợ cơ bản như giao  
diện chương trình, giao thức HTTP và các tính năng hỗ trợ âm thanh hay khả năng viết  
game chưa được hỗ trợ.  
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.  
3
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
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.  
4
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
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.  
2.3. Sự khác nhau giữa J2ME và J2SE  
Các điểm khác nhau là do một trong hai lý do. Do lớp Java đã bị bỏ đi để  
giảm kích thước của J2ME hoặc do lớp bị bỏ bởi vì nó ảnh hưởng đến sự an toàn, bảo mật  
của thiết bị di động hay của các ứng dụng khác trên thiết bị di động (có thể dẫn đến phát  
triển virus).  
Điểm khác biệt chính là không có phép toán số thực. Không có JNI  
(JavaNative Interface Support) do đó không thể truy xuất các chương trình khác được viết  
bằng ngôn ngữ của thiết bị (như C hay C++). Luồng (thread) được cho phép nhưng không  
có các nhóm luồng (thread group).  
CLDC định nghĩa một mô hình an toàn, bảo mật được thiết kế để bảo vệ  
thiết bị di động, KVM, và các ứng dụng khác khỏi các mã phá hoại. Hai bộ phận được  
định nghĩa bởi CLDC này là bộ tiền kiểm tra và mô hình sandbox.  
Hình 2 biểu diễn cách mà bộ tiền kiểm tra và bộ kiểm tra làm việc với nhau để kiểm  
tra mã chương trình Java trước khi chuyển nó cho KVM.  
Trạm phát triển  
Hello.class  
Bộ tiền kiểm tra  
Hello.class  
Download về thiết bị  
Thiết bị đích  
Bộ biên dịch mã  
bytecode Java  
Bộ kiểm tra  
Hình 2: Sơ đồ kiểm tra của bộ tiền kiểm tra và bộ kiểm tra.  
5
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
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:  
Tài nguyên  
thiết bị  
Class  
Loader  
API  
API  
API  
Chương trình  
ứng dụng  
Java  
Các CLDC  
API  
Các MIDP  
API  
Hệ thống  
JVM  
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.  
6
ứ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 4: J2ME và J2SE.  
2.4. Các đặc điểm khác  
Khi viết J2ME, do đặc tính cần nhỏ gọn và bảo mật tốt cho thiết bị di động nên Sun  
đã lược bớt các lớp đồ sộ chỉ để lại các lớp cơ bản, do vậy, về bản chất J2ME là ngôn ngữ  
kế thừa và tinh lược của phiên bản J2SE.  
Bên cạnh đó nhưng MIDP vì được viết cho thiết bị có cấu hình lẫn bộ nhớ thấp nên  
nó không hỗ trợ:  
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.  
Hỗ trợ hạn chế thao tác bắt lỗi.  
trong MIDP.  
Phần lớn các thư viện API cho Swing và AWT không thể sử dụng được  
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.  
7
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
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
o
o
Kiểu và số lượng bộ nhớ  
Kiểu và tốc độ vi xử lý  
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  
giới hạn): được thiết kế để nhằm vào thị trường các thiết bị cấp thấp, các thiết bị này  
8
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
thông thường là máy điện thoại di động và PDA với khoảng 512 KB bộ nhớ. Vì tài  
nguyên bộ nhớ hạn chế nen CLDC được gắn với Java không dây, dạng cho phép người  
dùng mua hoặc tải về các ứng dụng Java, ví dụ như 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 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 trên 2 Mb) 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…  
Cả hai dạng cấu hình kể trên đều chứa máy ảo Java – JVM (Java Virtual Machine)  
và tập hợp các lớp Java cơ bản để cung cấp một môi trường cho các ứng dụng J2ME. Tuy  
nhiên, 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ư máy ảo của J2SE, đơn cử, 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.  
Hình 6: Phân khúc dòng thiết bị với các ngôn ngữ Java.  
9
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
CLDC  
CDC  
>=32Kb, <=512Kb  
>=128Kb, <=512Kb  
Có giới hạn  
>=256Kb  
>=512Kb  
Không giới hạn  
Nhanh  
RAM  
ROM  
Nguồn năng lượng  
Network  
Chậm  
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.  
o
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.  
3.2. Các lớp của J2ME  
Mục tiêu của J2ME là giúp các lập trình viên viết các ứng dụng độc lập với thiết bị  
di động, viết một lần đúng mọi chỗ, không cần quan tâm đến phần cứng thực sự. Để làm  
10  
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
điều này, J2ME được xây dựng bằng các tầng (layer) khác nhau để giấu đi việc thực hiện  
phần cứng khỏi nhà phát triển.  
Hiện trạng:  
MIDP  
Các API khác  
Cấu hình  
CLDC  
Máy ảo Java  
Phần cứng thiết bị  
Hình 7: Các lớp của J2ME.  
3.3. Các tầng của CLDC J2ME  
Mỗi tầng trên tầng hardware là tầng trừu tượng hơn cung cấp cho lập trình viên  
nhiều giao diện lập trình ứng dụng (API-Application Program Interface) thân thiện hơn.  
Từ dưới lên trên:  
Tầng phần cứng thiết bị (Device hardware layer):  
Đây chính là cấu hình thực sự của thiết bị di động với cấu hình phần cứng như bộ  
nhớ hay cấu hình của nó. Đây độc lập với J2ME nhưng nó là nơi xuất phát. Mỗi thiết bị di  
động và các nhà sản xuất khác nhau thì thường có các bộ vi xử lý khác nhau cùng với các  
tập mã lệnh khác nhau. Mục tiêu của J2ME là cung cấp một chuẩn chung cho tất cả các  
thiết bị di động khác nhau này.  
Tầng máy ảo Java (Java Virtual Machine Layer):  
Khi mã nguồn Java được biên dịch nó được chuyển đồi thành mã bytecode. Mã này  
sau đó được chuyển thành mã ngôn ngữ máy của thiết bị di động. Tầng máy ảo Java bao  
gồm KVM (K Virtual Machine) là bộ biên dịch mã bytecode có nhiệm vụ chuyển mã  
bytecode của chương trình Java thành ngôn ngữ máy để chạy trên thiết bị di động. Tầng  
11  
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
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.  
Không có KVM, các chương trình Java phải được biên dịch thành tập lệnh cho mỗi thiết  
bị di động. Như vậy lập trình viên phải xây dựng nhiều đích cho mỗi loại thiết bị di động.  
Hình dưới đây biểu diễn tiến trình xây dựng ứng dụng MIDlet hoàn chỉnh và vai trò của  
KVM.  
12  
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
Trạm phát triển  
Tập tin JAR  
Tập tin nguồn  
Java  
*.java  
Tập tin lớp Java  
*.class  
Bộ biên dịch và  
bộ tiền kiểm  
tra Java  
Tập tin nguồn  
Java  
Tập tin lớp Java  
*.class  
*.java  
Thiết bị đích  
Mã bytecode  
Bộ biên dịch  
mã bytecode  
KVM  
Mã máy  
Hình 8: Tiến trình xây dựng MIDlet.  
Quá trình phát triển ứng dụng MIDlet với IDE ( Intergrated Development  
Environment ):  
Lập trình viên: Bước đầu tiên là lập trình viên phải tạo mã nguồn Java, có thể có  
nhiều tập tin (*.java).  
Trên IDE:  
Bộ biên dịch Java (Java Compiler): Biên dịch mã nguồn thành mã bytecode.  
Mã bytecode này sẽ được KVM dịch thành mã máy. Mã bytecode đã biên dịch sẽ  
được lưu trong các tập tin *.class và sẽ có một tập tin *.class sinh ra cho mỗi lớp Java.  
Bộ tiền kiểm tra (Preverifier): Kiểm tra tính hợp lệ của mã bytecode. Một trong  
những yêu cầu an toàn của J2ME là bảo đảm mã bytecode chuyển cho KVM là hợp lệ và  
không truy xuất các lớp hay bộ nhớ ngoài giới hạn của chúng. Do đó tất cả các lớp đều  
13  
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
phải được tiền kiểm tra trước khi chúng có thể được download về thiết bị di động. Việc  
tiền kiểm tra được xem là một phần của môi trường phát triển làm cho KVM có thể được  
thu nhỏ hơn. Bộ tiền kiểm tra sẽ gán nhãn lớp bằng một thuộc tính (attribute) đặc biệt chỉ  
rằng lớp đó đã được tiền kiểm tra. Thuộc tính này tăng thêm khoảng 5% kích thước của  
lớp và sẽ được kiểm tra bởi bộ kiểm tra trên thiết bị di động.  
Trên IDE: Tạo tập tin JAR. IDE sẽ tạo một tập tin JAR chứa:  
o Tất cả các tập tin *.class  
o Các hình ảnh của ứng dụng. Hiện tại chỉ hỗ trợ tập tin *.png  
o Các tập tin dữ liệu có thể được yêu cầu bởi ứng dụng  
o Một tập tin kê khai (manifest.mf) cung cấp mô tả về ứng dụng cho bộ quản lý  
ứng dụng (application manager) trên thiết bị di động.  
o Tập tin JAR được bán hoặc được phân phối đến người dùng đầu cuối  
Sau khi đã gỡ rối và kiểm tra mã lệnh trên trình giả lập (simulator), mã lệnh đã sẵn  
sàng được kiểm tra trên điện thoại di động và sau đó được phân phối cho người dùng.  
Người dùng: Download ứng dụng về thiết bị di động. Người dùng sau đó download  
tập tin JAR chứa ứng dụng về thiết bị di động. Trong hầu hết các điện thoại di động, có ba  
cách để download ứng dụng:  
o Kết nối cáp dữ liệu từ PC sang cổng dữ liệu của điện thoại di động :Việc này  
yêu cầu người dùng phải có tập tin JAR thật sự và phần mềm truyền thông để  
download ứng dụng sang thiết bị thông qua cáp dữ liệu.  
o Cổng hồng ngoại IR (Infra Red) Port: Việc này yêu cầu người dùng phải có tập  
tin JAR thật sự và phần mềm truyền thông để download ứng dụng sang thiết bị  
thông qua cổng hồng ngoại.  
o OTA (Over the Air): Sử dụng phương thức này, người dùng phải biết địa chỉ  
URL chỉ đến tập tin JAR.  
Trên thiết bị di động:  
Bộ tiền kiểm tra: Kiểm tra mã bytecode.  
14  
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
Bộ tiền kiểm tra kiểm tra tất cả các lớp đều có một thuộc tính hợp lệ đã được thêm  
vào bởi bộ tiền kiểm tra trên trạm phát triển ứng dụng. Nếu tiến trình tiền kiểm tra thất bại  
thì ứng dụng sẽ không được download về thiết bị di động.  
Bộ quản lý ứng dụng: Lưu trữ chương trình.  
Bộ quản lý ứng dụng trên thiết bị di động sẽ lưu trữ chương trình trên thiết bị di  
động. Bộ quản lý ứng dụng cũng điều khiển trạng thái của ứng dụng trong thời gian thực  
thi và có thể tạm dừng ứng dụng khi có cuộc gọi hoặc tin nhắn đến.  
Người dùng: Thực thi ứng dụng.  
Bộ quản lý ứng dụng sẽ chuyển ứng dụng cho KVM để chạy trên thiết bị di động.  
KVM: Thực thi mã bytecode khi chương trình chạy.  
KVM dịch mã bytecode sang ngôn ngữ máy của thiết bị di động để chạy.  
3.5. Tầng cấu hình  
Tầng J2ME kế trên tầng KVM là CLDC hay Cấu hình thiết bị kết nối giới hạn. Mục  
đích của tầng này là cung cấp một tập tối thiểu các thư viện cho phép một ứng dụng Java  
chạy trên thiết bị di động. Nó cung cấp cơ sở cho tầng Hiện trạng, tầng này sẽ chứa nhiều  
API chuyên biệt hơn.  
CLDC – Connected Limited Device Configuration:  
Phạm vi: Định nghĩa các thư viện tối thiểu và các API.  
Định nghĩa:  
o Tương thích ngôn ngữ JVM  
o Các thư viện lõi  
o I/O  
o Mạng  
o Bảo mật  
o Quốc tế hóa  
Không định nghĩa:  
15  
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
o Chu kỳ sống ứng dụng  
o Giao diện người dùng  
o Quản lý sự kiện  
o Giao diện ứng dụng và người dùng  
Các lớp lõi Java cơ bản, input/output, mạng, và bảo mật được định nghĩa trong  
CLDC. Các API hữu dụng hơn như giao diện người dùng và quản lý sự kiện được dành  
cho hiện trạng MIDP.  
3.6. Tầng hiện trạng  
Tầng J2ME cao nhất là tầng hiện trạng và mục đích của nó là định nghĩa các API  
cho các thiết bị di động. Một thiết bị di động có thể hỗ trợ nhiều hiện trạng. Một hiện  
trạng có thể áp đặt thêm các giới hạn trên các loại thiết bị di động (như nhiều bộ nhớ hơn  
hay độ phân giải màn hình cao hơn). Hiện trạng là tập các API hữu dụng hơn cho các ứng  
dụng cụ thể. Lập trình viên có thể viết một ứng dụng cho một hiện trạng cụ thể và không  
cần quan tâm đến nó chạy trên thiết bị nào.  
3.7. MIDlet  
Các ứng dụng J2ME được gọi là MIDlet (Mobile Information Device applet).  
HelloWorld.java  
import javax.microedition.midlet.*  
import java.lang.Math.*  
public class HelloWorld extends MIDlet  
MIDP  
CLDC  
Hình 9: MIDlet  
Thông báo import dùng để truy xuất các lớp của CLDC và MIDP.  
16  
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
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).  
3.7.1. Bộ khung MIDlet  
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().  
1
import javax.microedition.midlet.*;  
2
public class MIDletExample extends MIDlet  
{
public MIDletExample() {}  
public void startApp() {}  
public void pauseApp() {}  
3
5
4
public void destroyApp(boolean unconditional) {}  
6
}
Hình 10: Bộ khung yêu cầu tối thiểu cho một ứng dụng MIDlet.  
Bộ khung 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 tạo (Constructor)  
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()  
17  
ứu công nghệ J2ME và thử nghiệm lập trình ứng dụng trên thiết bị di động  
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.  
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.  
Tóm tắt các trạng thái khác nhau của MIDlet:  
Tạo (Created) Hàm tạo MIDletExample() được gọi một một lần.  
Hoạt động (Active) Phương thức startApp() được gọi khi chương trình bắt đầu  
hay sau khi tạm dừng.  
Tạm dừng (Paused) Phương thức pauseApp() được gọi. Có thể nhận các sự kiện  
timer.  
Hy (Destroyed) Phươ  
c destroy() được gi.  
3.7.2. Chu kỳ sống của MIDlet  
18  

Tải về để xem bản đầy đủ

pdf 83 trang yennguyen 30/05/2025 140
Bạn đang xem 30 trang mẫu của tài liệu "Khóa luận 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", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfkhoa_luan_nghien_cuu_cong_nghe_j2me_va_thu_nghiem_lap_trinh.pdf