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

LẬP TRÌNH ỨNG DỤNG MOBILE BẰNG JAVA

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.58 MB, 156 trang )

BỘ GIÁO DỤC & ĐÀO TẠO
TRƯỜNG ĐẠI HỌC MỞ TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN

KHÓA LUẬN TỐT NGHIỆP

Đề tài:

LẬP TRÌNH ỨNG DỤNG MOBILE BẰNG
JAVA

GVHD : Tiến sĩ. NGUYỄN VĂN HIỆP
SVTH : NGUYỄN CÔNG HÙNG
MSSV : 106H1031

TP.HỒ CHÍ MINH – NĂM 2009


Lời Cảm Ơn!
Luận án đã được thực hiện trong một thời gian dài, và đây là thành phẩm lớn nhất mà
tôi thực hiện được trong quá trình học tập tại trường. Ngoài sự cố gắng, nỗ lực của bản
thân, còn nhận sự giúp đỡ của nhiều người để tôi có thể hoàn thiện được luận án như ngày
nay.
Đầu tiên, con xin vô cùng biết ơn Ba Mẹ, đã có công sinh thành, dưỡng dục, thương
yêu và chăm sóc để cho con có được ngày hôm nay.
Tôi xin cảm ơn các thầy cô Khoa Công nghệ thông tin và các thầy cô trường Đại Học
Mở TP.HCM đã truyền đạt những kiến thức, kinh nghiệm quý báu trong quá trình học tập
và nghiên cứu.
Em xin chân thành cảm ơn tiến sĩ.Nguyễn Văn Hiệp, giảng viên Khoa Công nghệ
thông tin – trường Đại Học Bách Khoa Tp.HCM đã tận tình hướng dẫn, định hướng, góp
ý trong quá trình thực hiện luận văn.


Tôi xin cảm ơn tập thể nhóm lập trình phần mềm công ty Tin học Thảo Chương đã tạo
điều kiện cho tôi trong quá trình thực hiện luân văn này.
Tôi xin cảm ơn các bạn đã động viên cho tôi trong quá trình thực hiện luận văn.
Mặc dù, tôi đã nỗ lực để hoàn thành bài báo cáo này và đã đạt một số kết quả nhất
định, tuy nhiên những sai sót trong báo cáo không tránh khỏi, kính mong sự thông cảm và
đóng gớp ý kiến của quý thầy cô và các bạn.
Xin chân thành cảm ơn!
Tp. HCM, ngày 07, tháng 01, năm 2009.
Người thực hiện: Nguyễn Công Hùng.
Mã số sinh viên: 106H1031.
Lớp học: HCTH062C.

Xin
Cảm
Ơn!


Luận văn tốt nghiệp

CHƯƠNG 1:
1.1.
1.2.
1.3.

Đặt vấn đề..................................................................................................4
Mục tiêu đặt ra cho đề tài ............................................................................5
Nội dung....................................................................................................6

CHƯƠNG 2:
2.1.


MỤC TIÊU VÀ NỘI DUNG ĐỀ TÀI. ...................................... 4

TỔNG QUAN VỀ J2ME ......................................................... 7

CÁC THÀNH PHẦN CỦA J2ME................................................................7

2.1.1.
Tầng phần cứng thiết bị (Device Hardware Layer) .......................................... 8
2.1.2.
Tầng máy ảo Java (Java Virtual Machine Layer) ............................................. 8
2.1.3.
Tầng cấu hình (Configuration Layer) ........................................................... 10
2.1.4.
Tầng hiện trạng (Profile Layer) ................................................................... 12
2.1.5.
Một số hạn chế của J2ME so với các phiên bản khác(chủ yếu nằm ở tầng
Configuration này): ........................................................................................................ 12

2.2.

CHỨC NĂNG CÁC THÀNH PHẦN .........................................................13

2.2.1.
Máy ảo Java (Kilobyte Virtual Machine - KVM)........................................... 13
2.2.2.
CLDC...................................................................................................... 15
2.2.2.1.
Yêu cầu phần cứng dành cho CLDC:....................................................... 16
2.2.2.2.

Yêu cầu phần mềm dành cho CLDC:....................................................... 17
2.2.2.3.
Sự khác biệt giữa CLDC 1.0 và CLDC 1.1 ............................................... 17
2.2.2.4.
Danh sách các lớp mà CLDC cung cấp. ................................................... 17
2.2.3.
MIDP ...................................................................................................... 20
2.2.3.1.
Định nghĩa: .......................................................................................... 20
2.2.3.2.
Những chức năng mà MIDP không hỗ trợ: ............................................... 20
2.2.3.3.
Những chức năng mà MIDP cung cấp...................................................... 21
2.2.3.4.
Những yêu cầu dành cho MIDP. ............................................................. 21
2.2.3.5.
Các dạng profile.................................................................................... 22
2.2.3.6.
Sự khác nhau giữa MIDP 1.0 và MIDP 2.0............................................... 22
2.2.3.7.
Danh sách lớp mà MIDP cung cấp. ......................................................... 23

CHƯƠNG 3:
3.1.
3.2.

ĐỊNH NGHĨA:.........................................................................................26
CÁC DẠNG MIDLET ..............................................................................26

3.2.1.

3.2.2.

3.3.

BỘ MIDLET......................................................................... 26

Ứng dụng đơn (standalone application). ....................................................... 26
Ứng dụng nối mạng (networked application). ............................................... 26

CẤU TRÚC MỘT BỘ MIDLET (MIDlet suite)...........................................26

3.3.1.
Cấu trúc file Jar......................................................................................... 26
3.3.2.
File JAD (Java Application Descriptor File) : ............................................... 27
3.3.2.1.
Đặt tả .................................................................................................. 27
3.3.2.2.
Các phương thức trong MIDlet ............................................................... 29
3.3.2.3.
Xây dựng một ứng dụng MIDlet: ............................................................ 29
3.3.2.4.
Lớp MIDlet: ......................................................................................... 31

CHƯƠNG 4:
4.1.

GIAO DIỆN ĐỒ HỌA........................................................... 33

QUẢN LÝ VIỆC HIỂN THỊ VÀ BẮT SỰ KIỆN. .......................................35


-- Trang 1 --


Luận văn tốt nghiệp
4.1.1.
Quản lý việc hiển thị.................................................................................. 35
4.1.1.1.
Lớp Display. ........................................................................................ 35
4.1.1.2.
Lớp Displayable.................................................................................... 36
4.1.2.
Quản lý các sự kiện: .................................................................................. 37
4.1.2.1.
Command và CommandListener. ............................................................ 38
4.1.2.2.
Item và ItemStateListener ...................................................................... 41

4.2.

GIAO DIỆN ĐỒ HỌA CẤP CAO..............................................................42

4.2.1.
4.2.2.
4.2.3.
4.2.3.1.
4.2.3.2.
4.2.3.3.
4.2.3.4.
4.2.3.5.

4.2.3.6.
4.2.3.7.
4.2.4.
4.2.5.
4.2.6.
4.2.7.
4.2.7.1.
4.2.7.2.
4.2.7.3.
4.2.8.

4.3.

Screen:..................................................................................................... 42
Form:....................................................................................................... 42
Item:........................................................................................................ 43
DateField: ............................................................................................ 44
Gauge: ................................................................................................. 45
StringItem: ........................................................................................... 47
TextField: ............................................................................................ 47
ChoiceGroup: ....................................................................................... 50
Image: ................................................................................................. 53
ImageItem:........................................................................................... 54
TextBox................................................................................................... 56
Alert ........................................................................................................ 58
AlertType:................................................................................................ 60
List:......................................................................................................... 61
Các dạng của list................................................................................... 61
Bắt sự kiện cho các đối tượng List........................................................... 62
So sánh giữa lớp List và lớp ChoiceGroup: .............................................. 62

Ticker: ..................................................................................................... 64

ĐỒ HỌA CẤP THẤP ...............................................................................64

4.3.1.
Canvas:.................................................................................................... 65
4.3.1.1.
Hệ tọa độ ............................................................................................. 65
4.3.1.2.
Vẽ trên đối tượng Canvas:...................................................................... 66
4.3.1.3.
Bắt sự kiện trong các đối tượng Canvas. .................................................. 68
4.3.1.4.
Game action: ........................................................................................ 70
4.3.2.
Graphics: ................................................................................................. 72
4.3.2.1.
Color: .................................................................................................. 73
4.3.2.2.
Nét vẽ:................................................................................................. 74
4.3.2.3.
Font chữ: ............................................................................................. 76
4.3.2.4.
Vẽ các đối tượng hình ảnh (Image):......................................................... 78
4.3.2.5.
Các phương thức tịnh tiến của đối tượng: ................................................. 79
4.3.2.6.
Vùng xén (Clipping regions): ................................................................. 81

CHƯƠNG 5:


LƯU TRỮ THÔNG TIN VÀ LẬP TRÌNH MẠNG. ................. 82



NộI DUNG TRÌNH BÀY:...................................................... 82



LƯU TRữ THÔNG TIN TRONG J2ME.................................. 82



KếT NốI MạNG VớI GENERIC CONNECTION FRAMEWORK.
82
-- Trang 2 --


Luận văn tốt nghiệp
5.1.

Lưu trữ thông tin với RMS ........................................................................82

5.1.1.
5.1.2.
5.1.3.
5.1.4.
5.1.5.

5.2.


RecordStore.............................................................................................. 83
RecordEnumeration................................................................................... 91
Sắp xếp các bằng RecordComparator........................................................... 93
Lọc record với RecordFilter........................................................................ 95
RecordListener ......................................................................................... 96

Kết nối mạng với Generic Connection Framework (GCF).............................97

5.2.1.

Giới thiệu GCF. ........................................................................................ 97

CHƯƠNG 6:
NHỮNG QUI TRÌNH VÀ RÀNG BUỘC ĐỂ MỘT ỨNG DỤNG
TRÊN JBUILDER CHẠY ĐƯỢC TRÊN MOBILE. ........................................... 117
6.1.
Tìm hiểu và trình bày qui trình kỹ thuật để xây dựng một ứng dụng mobile trên
Jbuilder. 117
6.1.1.
6.1.2.
6.1.3.
6.1.3.1.
6.1.3.2.
6.1.4.

Cài đặt Jbuilder....................................................................................... 117
Cài đặt SDK cho Nokia............................................................................ 121
Quá trình xây dựng 1 MIDlet. ................................................................... 127
Quá trình đầu tiên: Tạo mới một project................................................ 127

Quá trình thứ hai: Tạo một lớp MIDlet................................................... 131
Các bước để xây dựng các file.Jar và file.Jad: ............................................. 137

6.2.
Tìm hiểu và trình bày các yêu cầu ràng buộc để một ứng dụng mobile trên
Jbuilder có thể chạy trên mobile ..............................................................................141
6.2.1.
Những ràng buộc trên thiết bị di động. ....................................................... 141
6.2.1.1.
Ràng buộc về phần cứng. ..................................................................... 141
6.2.1.2.
Ràng buộc về phần mềm. ..................................................................... 142
6.2.2.
Những ràng buộc đối với ứng dụng............................................................ 142

CHƯƠNG 7:

GIỚI THIỆU ỨNG DỤNG DEMO. ...................................... 143

7.1.
Giới thiệu...............................................................................................143
7.2.
Xây dựng một MIDlet. ............................................................................143
7.3.
Mô tả chương trình. ................................................................................143
7.4.
Các chức năng của chương trình:..............................................................144
7.5.
Thực thi chương trình..............................................................................145
Để một chiếc điện thoại có thể chạy được ứng dụng MIDlet thì trước hết ta hãy xem

những yêu cầu ràng buộc để một ứng dụng java chạy được trên mobile (vấn đề này được
trình bài trong chương 6).........................................................................................145

CHƯƠNG 8:

KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN ................................ 150

8.1.
Kết quả..................................................................................................150
8.2.
Nhưng hạn chế: ......................................................................................150
Về quyển luận văn trình bày.................................... Error! Bookmark not defined.
Về chương trình..................................................... Error! Bookmark not defined.
8.3.
Hướng phát triển.....................................................................................150

-- Trang 3 --


Luận văn tốt nghiệp

CHƯƠNG 1: MỤC TIÊU VÀ NỘI DUNG ĐỀ TÀI.


Nội dung trình bày:
 Mục tiêu và nội dung của đề tại.

1.1. Đặt vấn đề.
Với chiếc máy tính để bàn (máy PC) thì ngày này chúng ta đã làm được hầu hết
mọi việc từ đơn giản đến phức tạp. Nhưng mà máy PC chỉ làm việc cố định, do đó,

máy tính Laptop xuất hiện với tính năng nhỏ gọn có thể mang theo và làm việc hầu
như ở mọi nơi. Ngày nay các thiết bị di động đã trở nên rất phổ biến và được sử dụng
rất rộng rãi tại Việt Nam, đặc biệt là các loại điện thoại di động. Nhiều người đã coi
điện thoại di động như một vật không thể thiếu trong cuộc sống hằng ngày. Nắm bắt
được nhu cầu đó, các nhà sản xuất điện thoại đã đẩy mạnh về mặt công nghệ, tăng
cường mẫu mã, tích hợp các chức năng ngày càng nhiều vào các dòng sản phẩm mới,
hầu đem lại cho người dùng những tiện ích cao cấp nhất với các công nghệ tiên tiến
nhất. Giờ đây, người dùng điện thoại có thể nghe nhạc, xem phim, chụp hình chơi
game và thậm chí là xem TV, lướt web chỉ với chiếc điện thoại bé xíu ngay bên mình.
Chiếc điện thoại đã thực sự không chỉ là một phương tiên liên lạc, mà nó còn mang cả
thế giới giải trí, thế giới Mobile đến với từng người mọi lúc mọi nơi. Với công nghệ
phát triển không ngừng như hiện nay, việc đòi hỏi các ứng dụng tốt hơn cũng ngày
càng trở thành một yêu cầu đi đôi với sự phát triển của công nghệ. Một chiếc điện
thoại tốt luôn đòi hỏi những phần mềm cao cấp đi kèm với nó. Nhưng vấn đề lại đặt ra
là có quá nhiều nhà sản xuất điện thoại sử dụng nhiều công nghệ khác nhau. Vậy làm
sao chúng ta có thể tạo ra được những ứng dụng chạy trên tất cả các dòng sản phẩm
đó? Đây quả thật là một vấn đề không đơn giản chút nào. Một thực tế đặt ra cho các
nhà phát triển phần mềm là hiện nay không có một chuẩn hóa nào dành cho các nhà
sản xuất phần cứng. Các thiết bị trên thị trường hiện nay rất đa dạng và cũng mang
nhiều đặc điểm cũng như cấu hình khác nhau.
Trước thực tế đó, việc có thể chạy trên nhiều môi trường là một lợi thế rất lớn của
ngôn ngữ Java. Như chúng ta đã biết, ban đầu Java được xây dựng chỉ gồm một phiên
bản duy nhất, ngày nay được biết đến với tên J2SE (Java 2 Standard Edition) với
-- Trang 4 --


Luận văn tốt nghiệp

phương châm là “Write once, run anywhere” tạm dịch là “viết một lần, chạy trên mọi
môi trường”. Java được hình thành trên ý tưởng xây dựng một ngôn ngữ mà lập trình

viên chỉ cần viết một lần duy nhất nhưng ứng dụng có thể chạy trên bất cứ môi trường
nào có hổ trợ Java Virtual Machine tạm dịch là “máy ảo Java”. Các nhà phát triển Java
đã cho ra một ngôn J2ME hướng đến việc phát triển phần mềm cho các thiết bị di
động. Ngôn ngữ J2ME thực sự là ngôn ngữ nhỏ gọn, dễ nắm bắt, chặt chẽ và thích hợp
cho các thiết bị có khả năng hạn chế. Các thiết bị di động trên thị trường hiện nay, đặc
biệt là điện thoại di động hầu hết đều hỗ trợ rất tốt ngôn ngữ J2ME và J2ME thực sự
đã trở thành một trong những ngôn ngữ phổ biến nhất trong lĩnh vực lập trình di động.
J2ME được xem như là một nhánh của ngôn ngữ lập trình Java được phát triển nhằm
hướng tới việc lập trình cho các thiết bị nhỏ có bộ nhớ, khả năng hiển thị và xử lý hạn
chế.
1.2. Mục tiêu đặt ra cho đề tài
 Tìm hiểu các ràng buộc về phần cứng của các chủng loại thiết bị di động hiện
nay.
 Hiểu chi tiết về J2ME, các kiến trúc nên tảng của nó và những ứng dụng của nó
để lập trình trên các thiết bị di động.
 Nắm được các kỹ thuật xử lý form, âm thanh, hình ảnh, và lưu trữ trên điện thoại
di động
 Tìm hiểu qui trình kỹ thuật để xây dựng ứng dụng mobile trên Jbuilder.
 Những ràng buộc để một ứng dụng viết trên Jbuilder có thể chạy trên mobile.
 Ứng dụng các kết quả đạt được để xây dựng chương trình đơn giản, có các tiện
ích phục vụ nhu cầu của người sử dụng điện thoại di động.
 Áp dụng thành công trên một số dòng máy điện thoại di động hỗ trợ Java của các
hãng như Nokia, SonyEricsson, Samsung,…



Những mục tiêu trên được đặt ra trên nhằm xây dựng một quyển luận văn tốt

hơn, đây đủ hơn. Và xa hơn nữa là, luận văn này đã trình bài đầy đủ những gì cần
thiết để cho mọi người có thể tự viết những ứng dụng riêng cho chiếc điện thoại

của mình.

-- Trang 5 --


Luận văn tốt nghiệp

1.3. Nội dung.
Với những mục tiêu trên thì quyển luận văn xin trình bày những nội dung sau:
 Giới thiệu chung về ngôn ngữ J2ME: tầng configuration và profile.
 Các vấn đề liên quan đến một bộ MIDlet.
 Lập trình trên thiết bị di động sử dụng giao diện đồ họa cấp thấp và cấp cao.
 Việc lưu trữ thông tin trên MIDlet xuống bảng ghi và truy xuất chúng khi cần
thiết.
 Lập trình mạng.
 Các bước cần thiết để xây dựng và thực thi một MIDlet.
 Những ràng buộc để một ứng dụng viết trên Jbuilder chạy được trên Mobile.
 Xây dựng ứng dụng game caro để demo.

-- Trang 6 --


Luận văn tốt nghiệp

CHƯƠNG 2:


TỔNG QUAN VỀ J2ME

Nội dung trình bày:

 Trình bài những thành phần chính để cấu thành nên J2ME.
 Máy ảo java.
 Configuration và Profile.
 Chức năng của các thành phần này.

2.1. CÁC THÀNH PHẦN CỦA J2ME.
Mục tiêu của J2ME là cho phép người lập trình viết các ứng dụng độc lập với thiết
bị di động, không cần quan tâm đến phần cứng thật sự. Để đạt được mục tiê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. Sau đây là các tầng của J2ME được xây dựng (2).
Hình 1: Các thành phần của J2ME.

Java 2
Enterprise
Edition
(J2EE)

Java 2
Standard
Edition
(J2SE)
CDC

Java Virtual Machine

MIDP

Profile level

CLDC


Configuration level

KVM
Java 2 Micro Edition

Khái niệm điện thoại di động là tương đối rộng lớn. Chúng bao gồm những thiết bị
có kích thước vật lý khác nhau nhiều lần và cho dù cùng kích thước những thiết bị này
vẫn có khả năng xử lý cũng như thể hiện cũng khác nhau (những chiếc điện thoại hiển
thị 12,000 pixels cho đến những chiếc PDA 20000 pixels). Để đáp ứng được nhu cầu
khác nhau của những thiết bị này, bản thân ngôn ngữ J2ME cũng chia thành những
thành phần nhỏ hơn.

-- Trang 7 --


Luận văn tốt nghiệp

Hình 2: Cấu trúc của thiết bị MID.
MIDP
Applications

OEM-Specific
Applications

Native
Applications

OEM-Specific
Classes

Mobile Information
Device Profile (MIDP)
Connected Limited Device Configuration (CLDC)
Native Operating System
Mobile Information Device(MID)

Mỗi tầng ở trên tầng Mobile Information Device 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.
2.1.1. Tầng phần cứng thiết bị (Device Hardware Layer)
Đây chính là thiết bị di động thật sự với cấu hình phần cứng của nó về bộ nhớ và
tốc độ xử lý. Dĩ nhiên thật ra nó không phải là một phần của J2ME nhưng nó là nơi
xuất phát. Các thiết bị di động khác nhau có thể có các bộ vi xử lý khác nhau 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 cho tất cả các loại
thiết bị di động khác nhau.
2.1.2. 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ã
bytecode 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, và đồng thời máy ảo Java sẽ chịu trách nhiệm việc cung cấp các
tính năng bảo mật, cấp phát, thu hồi bộ nhớ và quản lý việc điều phối các tiến trình.
Tầ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.
Chính những hạn chế về tại nguyên của các thiết bị di động đã đề ra nhu cầu về sự ra
đời của KVM.
Đây là những yêu cầu dành cho máy ảo KVM:

-- Trang 8 --



Luận văn tốt nghiệp

 Máy ảo Java chỉ cần 40 – 80 KB bộ nhớ.
 Chỉ cần 20 – 40 KB bộ nhớ động.
 Có thể chạy với bộ vi xử lý 16 bit và xung nhịp 25 MHz.
Mã nguồn java phải trãi qua 2 giai đoạn như hình bên dưới.
Hình 3: Hai quá trình biên dịch và thông dịch của mã nguồn java.

.class
Bytecode

Interpreter

Compiler

.java
Source Code

KVM
(Kilobyte Virtual
Machine)

 Các phiên bản của Java:
Java được giới thiệu lần đầu tiên vào những năm 1995, trong thời gian đầu thì
mục tiêu nhắm đến của Java là phát triển của GUIs, applets, và những ứng dụng
đặc trưng khác. Hai năm sau ngày ra mắt lần đầu tiên, một phiên bản mới là Java 2
Enterprise Edition (J2EE) cũng được giới thiệu nhắm đến việc phát triển các ứng
dụng có qui mô lớn hơn (có thể xem là các máy server). Đồng thời phiên bản này
cũng đưa ra nhưng công cụ cho việc truy xuất dữ liệu, truyền thông tin, điều khiển

việc thực thi.
Và phiên bản mới nhất được thêm vào dòng ngôn ngữ Java là Java 2 Micro
Edition (J2ME). J2ME nhắm đến việc phát triển ứng dụng cho các ứng dụng có
năng lực hạn chế như đầu giải mã kỹ thuật số TV set-top boxes, điện thoại di
động…

-- Trang 9 --


Luận văn tốt nghiệp

Hình 4: Các phiên bản khác nhau của java.

Chúng ta có thể thấy các phiên bản khác nhau của Java, phụ thuộc vào phần cứng
mà thiết bị hỗ trợ. Hình sẽ thể hiện 3 máy ảo được sử dụng trong những môi trường
khác nhau. Các Hotspot VM là mặc định máy ảo được cung cấp bởi Sun do thực hiện
đầy đủ quy mô phiên bản mới hơn JavaHotspot là một loại máy ảo có khả năng tự
động tối ưu hóa nặng nề thực hiện các đoạn mã (hotspots) trong thời gian thực.
Compact Virtual Machine (CVM) and Kilobyte Virtual Machine (KVM) là những
máy ảo nhỏ hơn dùng để hiện thực việc thiết kế để chạy trong những ràng buộc của
giới hạn về tài nguyên trên những thiết bị nhỏ.
2.1.3. 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
Để đáp ứng nhu cầu cho nhiều chủng loại thiết bị khác nhau, Sun đã đưa ra khái
niệm Configuration. Khái niệm Configuration có mối liên hệ chặt chẽ với máy ảo

-- Trang 10 --



Luận văn tốt nghiệp

Java. Nói chính xác hơn, một Configuration qui định những thành phần và những thư
viện gốc của ngôn ngữ Java mà máy ảo phải hổ trợ cho configuration đó. Việc phân
chia thành những configuration khác nhau chủ yếu dựa vào khả năng bộ nhớ, năng lực
hiển thị, năng lực xử lý và khả năng kết nối mạng của các thiết bị. Như chúng ta đã
biết, các thiết bị di động rất khác nhau về nguồn tài nguyên, về khả năng phần cứng.
Với những thiết bị có năng lực hạn chế, nếu ta đưa nhiều thư viện hỗ trợ vào máy ảo
trên thiết bị đó sẽ gây chậm hệ thống và dư thừa không cần thiết. Với những thiết bị có
khả năng cao hơn, chúng ta sẽ đưa thêm nhiều thư viện hỗ trợ vào máy ảo giúp ích cho
công việc lập trình của các nhà phát triển. Do đó, nhu cầu phân chia thành nhiều
Configuration là việc cần thiết.
Hiện nay Sun đã đưa ra hai loại Configuration khác nhau:
 CDC (Connected Divice Configuration):
 512 KB (minimum) bộ nhớ để chạy Java.
 256 KB (minimum) bộ nhớ cấp phát động.
 Kết nối mạng liên tục, băng thông rộng.
 CLDC (Connected Limited Device Configuration):
 128 KB (minimum) bộ nhớ để chạy Java.
 32 KB (minimum) bộ nhớ cấp phát động.
 Giao diện người dùng hạn chế.
 Năng lượng tiêu tốn ít (chủ yếu dùng pin).
 Kết nối mạng Wireless và chậm.
Việc phân chia này cũng mang tính chất tương đối, công nghệ hiện nay đang phát
triển khá nhanh, và việc phát triển này càng làm cho ranh giới giữa các loại
configuration này trở nên không rõ ràng.
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 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.

-- Trang 11 --


Luận văn tốt nghiệp

2.1.4. Tầng hiện trạng (Profile Layer)
Tầng hiện trạng hay MIDP (Hiện trạng thiết bị thông tin di động-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.
2.1.5. Một số hạn chế của J2ME so với các phiên bản khác(chủ yếu nằm ở tầng
Configuration này):
 Không hỗ trợ kiểu dữ liệu float: Việc sử lý số float đòi hỏi nhiều tài nguyên xử
lý, ngoài ra các thiết bị di động không có những cấu hình phần cứng dành riêng
cho việc xử lý số float nên trong J2ME chúng ta không thể khai báo các biến,
mảng float, các hàm cũng không nhận tham số và trả các số float.
 Phương thức finalize: Trong J2SE, chúng ta có thể khai báo phương thức finalize
(tương tự như phương thức destructor). Garbage Collector sẽ gọi phương thức
này trước khi hủy bỏ một đối tưởng, phương thức này thường được dùng để thu
hồi các tài nguyên hệ thống như sockets, file handle,….trước khi đối tượng bị

“phá hủy”. Tuy nhiên trong J2ME ,để cải tiến việc thực thi và giảm toàn bộ các
yêu cầu, CLDL loại bỏ hẳn đối tượng finalize, điều này có nghĩa là không có
phương thức Object.finalize.
 Error Handling: Trong J2ME chúng ta vẫn được hỗ trợ các công cụ về bẫy lỗi
(chủ yếu thông qua try và catch). Cũng do nguyên nhân hạn chế tài nguyên, khả
năng về xử lý lỗi của J2ME cũng hạn chế hơn với hai phiên bản còn lại, CLDC
không hỗ trợ bất kỳ java.lang.Error nào.
 Không hỗ trợ việc sử dụng code của các ngôn ngữ lập trình khác.
 Không hỗ trợ Reflection: Trong J2ME và J2ME, chúng ta có thể dùng các lớp
Reflection để tìm hiểu thông số môi trường máy ảo Java đang thực thi.

-- Trang 12 --


Luận văn tốt nghiệp

 Không hỗ trợ ThreadGroup: mỗi thread được lý riêng biệt, không còn lớp
ThreadGroup. Nếu muốn điều khiển một lúc nhiều threads chúng ta có thể dùng
mảng hoặc Vector.
 J2ME cũng còn một số điểm khác biệt so với J2ME và J2EE, một trong những
khác biệt chính là quá trình Class Verify (tạm dịch là “kiểm tra lớp”). Các lớp
trước khi được load sẽ thông qua một quá trình “kiểm tra” về sự hợp lệ và tính
nguyên vẹn. Đây là một cơ chế quan trọng để bảo đảm an toàn (security) của
Java. Quá trình này trong J2SE và J2EE có thể chiếm đến 50 kb bộ nhớ, trong
J2ME chúng được chia thành 2 giai đoạn:
 Tiền kiểm tra (pre-verification): Trước khi một lớp được nạp vào thiết bị,
một phần mềm sẽ được sử dụng để thêm vào một số thông số bổ sung vào
file class. Quá trình này giảm thời gian và bộ nhớ cần thiết để máy ảo thức
hiện giai đoạn 2 trong quá trình kiểm tra. File class sau khi được “tiền kiểm
tra” sẽ tăng dung lượng khoảng 5%.

 Kiểm tra nội thiết bị (In-device verification): Khi thiết bị nạp các file class
đã được kiểm tra, công cụ kiểm tra trong thiết bị sẽ thực hiện một vài kiểm
tra để xác nhận tính hợp lệ của đoạn code. Nếu phát hiện một lỗi nào đó bộ
kiểm tra sẽ phát sinh báo cáo và từ chối nạp lớp đối tượng vào bộ nhớ. Quá
trình này đòi hỏi ít bộ nhớ và tài nguyên hơn nhiều lần so với trong J2SE và
J2EE.
2.2. CHỨC NĂNG CÁC THÀNH PHẦN
2.2.1. Máy ảo Java (Kilobyte Virtual Machine - KVM)
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.

-- Trang 13 --


Luận văn tốt nghiệp

Hình 5: Tiến trình xây dựng một MIDlet.
Trạm phát triển
Tập tin .JAR
Tập tin nguồn java
*.java

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 lớp java
*.class

Thiết bị đích



Bộ biên
dịch mã
bytecode
KVM

 Xây dựng ứng dụng trên IDE (Intergrated Development Environment - Môi trường
phát triển tích hợp)
Đây là những công việc của lập trình viên trên:
 Tạo các tập tin nguồn Java:
 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) (vấn đề này được trình bày trong chương 6).
 Biên dịch trên IDE:
 Bộ biên dịch Java (Java Compiler): Biên dịch mã nguồn thành mã bytecode
Bộ biên dịch Java sẽ 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à 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 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.

-- Trang 14 --


Luận văn tốt nghiệp

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.
Lưu ý: Nếu không có quá trình tiền kiểm tra này thì thiết bị di động sẽ từ chối ứng
dụng.
 Tạo tập tin JAR.
IDE sẽ tạo một tập tin JAR chứa:
 Tất cả các tập tin *.class
 Các hình ảnh của ứng dụng. Hiện tại chỉ hỗ trợ tập tin *.png
 Các tập tin dữ liệu có thể được yêu cầu bởi ứng dụng
 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.
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 (download ứng dụng (tập tin *.jar) về thiết bị di động – xem
phần phụ lục).
 Trên thiết bị di động.
 Bộ tiền kiểm tra: 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: 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 sẽ dịch mã bytecode sang ngôn ngữ máy của thiết bị di động để chạy.
2.2.2. CLDC
CLDC - cấu hình thiết bị kết nối giới hạn đây là tầng nằm kế trên tầng KVM,
đây là một tập các API định nghĩa lõi của ngôn ngữ J2ME. Mục đích của tầng

-- Trang 15 --


Luận văn tốt nghiệp

này là cung cấp một tập tối thiểu các thư viện (các lớp và các phương thức ) cho
phép một ứng dụng Java chạy trên thiết bị di động. Tập các API hữu dụng và
chuyên biệt hơn được chứa trong tầng hiện trạng - profile layer, nhưng chính
tầng

CLDC

này

cung

cấp




sở

cho

tầng

hiện

trạng.

Các CLDC API được định nghĩa với sự hợp tác với 18 công ty là bộ phận của
JCP (Java Community Process). Nhóm này giúp bảo đảm rằng các API được
định nghĩa sẽ hữu dụng và thiết thực cho cả nhà phát triển lẫn nhà sản xuất thiết
bị di động.
Hình 6: Tổng quan về CLDC.

J2SE

CLDC

CDC

CDC

CLDC

J2SE


CDC # O

J2SE

CLDC # O

2.2.2.1. Yêu cầu phần cứng dành cho CLDC:
Khi đề ra yêu về phần cứng việc xem xét các chi tiết như bộ xử lý, bộ
nhớ… và các thành phần mềm hiện có trên các thiết bị di động là việc vô
cùng quan trọng. Nhằm mục đích phục vụ tối đa các thiết bị hiện có trên thị
trường, CLDC chỉ đề ra các yêu cầu về bộ nhớ và không đề ra yêu cầu nào
cho các thành phần khác. Yêu cầu tối thiểu để có thể sử dụng CLDC như sau:
 128 kilobytes để chạy JVM và các thư viện của CDLC. Không phân biệt
loại bộ nhớ sử dụng (Rom, Flash,…..), bộ nhớ của thiết bị phải bảo lưu
được nội dung lâu dài, ngay cả khi ngắt điện. Bộ nhớ này thường được
gọi là nonvolatile memory.
 32 kilobytes bộ nhớ trống để cấp phát các đối tượng (objects). Bộ nhớ này
thường được gọi là volatile memory (hay còn được gọi là heap).

-- Trang 16 --


Luận văn tốt nghiệp

2.2.2.2. Yêu cầu phần mềm dành cho CLDC:
 CLDC có yêu cầu tối thiểu về mặt phần mềm. Hệ điều hành phải tương
thích với JVM và có chức năng quản lý các ứng dụng Java như:
 Cho phép chọn và kích hoạt ứng dụng.
 Cho phép gỡ bỏ ứng dụng khỏi thiết bị.

2.2.2.3. Sự khác biệt giữa CLDC 1.0 và CLDC 1.1
Các đặc tả của JCP được gán các số JSR (Java Specification Request). Quy
định CLDC phiên bản 1.0 được gán số JSR – 30 và phiên bản 1.1 được gán
số JSR – 139. Dưới đây là sự khác biệt chính của 2 phiên bản:
 Kiểu số thực được hỗ trợ, 2 class Float và Double được đưa thêm vào
trong CDLC 1.1 và đồng thời cũng kèm theo những phương thức hỗ trợ
cho 2 class này.
 Thiết kế lại những class Calendar/Date/TimeZone so với J2SE.
 Những thread hiện tại đã có phương thức Thread.getName() và chúng ta
có thể ngắt chúng bởi phương thức Thread.interrup()(2).
 Việc bắt lỗi đã trở nên dễ hiểu hơn, có đưa thêm vào một lớp mới đó là
NoClassDefFoundError.
 Nhiều thay đổi trên các thư viện không quan trọng, như là thêm các
trường và các phương thức như:
o Boolean.TRUE and Boolean.FALSE
o String.intern()
o Date.toString()
o Random.nextInt(int n)
 Vùng nhớ nhỏ nhất được nâng lên từ 160 – 192 kilobyte, chủ yếu là do
thêm vào kiểu số thực.(4)
2.2.2.4. Danh sách các lớp mà CLDC cung cấp.
Bên dưới đây là các lớp nằm trong CLDC:
 Lớp hệ thống.
 java.lang.Object
 java.lang.Class
 java.lang.Runtime

-- Trang 17 --



Luận văn tốt nghiệp

 java.lang.System
 java.lang.Thread
 java.lang.Runnable
 java.lang.String
 java.lang.StringBuffer
 java.lang.Throwable
 Lớp nhập xuất.
 java.io.InputStream
 java.io.OutputStream
 java.io.ByteArrayInputStream
 java.io.ByteArrayOutputStream
 java.io.DataInput (interface)
 java.io.DataOutput (interface)
 java.io.DataInputStream
 java.io.DataOutputStream
 java.io.Reader
 java.io.Writer
 java.io.InputStreamReader
 java.io.OutputStreamWriter
 java.io.PrintStream
 Lớp tập hợp.
 java.util.Vector
 java.util.Stack
 java.util.Hashtable
 java.util.Enumeration (interface)
 Lớp kiểu dữ liệu.
 java.lang.Boolean
 java.lang.Byte

 java.lang.Short
 java.lang.Integer
 java.lang.Long

-- Trang 18 --


Luận văn tốt nghiệp

 java.lang.Character
 Lớp ngày giờ.
 java.util.Calendar
 java.util.Date
 java.util.TimeZone
 Lớp tiện ích.
 java.util.Random
 java.lang.Math
 Lớp ngoại lệ.
 java.lang.Exception
 java.lang.ClassNotFoundException
 java.lang.IllegalAccessException
 java.lang.InstantiationException
 java.lang.InterruptedException
 java.lang.RuntimeException
 java.lang.ArithmeticException
 java.lang.ArrayStoreException
 java.lang.ClassCastException
 java.lang.IllegalArgumentException
 java.lang.IllegalThreadStateException
 java.lang.NumberFormatException

 java.lang.IllegalMonitorStateException
 java.lang.IndexOutOfBoundsException
 java.lang.ArrayIndexOutOfBoundsException
 java.lang.StringIndexOutOfBoundsException
 java.lang.NegativeArraySizeException
 java.lang.NullPointerException
 java.lang.SecurityException
 java.util.EmptyStackException
 java.util.NoSuchElementException
 java.io.EOFException

-- Trang 19 --


Luận văn tốt nghiệp

 java.io.IOException
 java.io.InterruptedIOException
 java.io.UnsupportedEncodingException
 java.io.UTFDataFormatException
 Lớp Error
 java.lang.Error
 java.lang.VirtualMachineError
 java.lang.OutOfMemoryError
2.2.3. MIDP
2.2.3.1. Định nghĩa:
Đây là tầng nằm kế trên tầng CLDC, đị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. CLDC chỉ cung cấp các API
đơn giản, giả vụ nếu mà Sun không cung cấp MIDP thì người lập trình sẽ
phải xây dựng lại tất cả các giao diện. 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, vì phải xây dựng thư viện cho một thiết bị
rất hạn chế về tài nguyên nên MIDP cũng có những giới hạn của nó.
2.2.3.2. Những chức năng mà MIDP không hỗ trợ:
 Không hỗ trợ phép tính dấu phẩy động (floating point) là do 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.
 Không hỗ trợ 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
 Không hỗ trợ nhiều cho 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

-- Trang 20 --


Luận văn tốt nghiệp

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.
2.2.3.3. Những chức năng mà MIDP cung cấp.
 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.
2.2.3.4. Những yêu cầu dành cho MIDP.

 Yêu cầu phần cứng:
 Màn hình ít nhất phải có 96 x 54 pixels.
 Có ít nhất 128 kilobytes bộ nhớ non-volatile để chạy các thành phần
của MIDP.
 Có ít nhất 8 kilobytes bộ nhớ non-volatile để lưu các cấu hình chương
trình và dữ liệu.
 Có ít nhất 32 kilobytes để chạy Java.
 Có kết nối không dây (wireless network).

 Yêu cầu phần mềm:
Mặc dù hệ điều hành của từng thiết bị có thể khác nhau nhưng phải đáp
ứng được các yêu cầu tối thiểu sau:
 Hệ điều hành phải hổ trợ việc xử lý ngắt, xử lý exception và hỗ trợ xử
lý đồ họa bitmap để xuất dữ liệu ra màn hình.
-- Trang 21 --


Luận văn tốt nghiệp


 Hệ điều hành phải nhận được tín hiệu nhập liệu và chuyển dữ liệu đó
cho máy ảo Java.
 Hệ điều hành phải hỗ trợ việc đọc và ghi vào bộ nhớ non-volatile.
Không đòi hỏi hệ điều hành phải định nghĩa file system nhưng phải
cho phép ghi dữ liệu dạng persistent (không bị mất khi ngắt máy, tắt
điện).
 Phải hỗ trợ truy xuất mạng, đặc biệt phải có tính năng đọc và ghi dữ
liệu thông qua mạng không dây.
2.2.3.5. Các dạng profile.
Mobile Information Device Profile (MIDP) định nghĩa các hàm API cho
các thành phần giao diện, nhập liệu và xử lý sự kiện, lưu trữ, kết nối mạng
và xử lý thời gian,… phù hợp với màn hình hiển thị và khả năng xử lý của
các thiết bị di động. Profile MIDP được định nghĩa trên nền tảng của
CLDC. Ngoài ra, chúng ta còn một số Profile tiêu biểu khác như:
 PDA Profile: tương ứng 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ư viện của bộ Core Java 2 1.3.
 Ngoài ra còn có Personal Basis Profile, Personal Profile, RIM Profile,
Game Profile.
Lưu ý: Luận văn chủ yếu chỉ đề cập đến Profile MIDP và các thư viện liên quan
để phục vụ cho việc viết ứng dụng trên điện thoại di động.
2.2.3.6. Sự khác nhau giữa MIDP 1.0 và MIDP 2.0.
Bảng 1: Sự cải tiến của MIDP 2.0 so với MIDP 1.0
Loại
Mạng

Đặc trưng
 Hỗ trợ giao thức HTTPS, download qua mạng an toàn hơn.

 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 không có sự
chấp thuận của người sử dụng.

Âm thanh

 Thêm các API hỗ trợ Multimedia. Một trong nhưng cải tiến

-- Trang 22 --


Luận văn tốt nghiệp

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).
UI (Giao diện)

 Mở rộng các tính năng của Form và Item.
 Cải tiến việc bố trí các công cụ.
 Các điều khiển được cải tiến tốt hơn.
 Có thể xây dựng các điều khiển riêng.

Games

 Hỗ trợ lớp Graphics.
 Hỗ trợ 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ình ảnh

 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.2.3.7. Danh sách lớp mà MIDP cung cấp.
 Danh sách các lớp tiện ích.
 java.util.Timer
 java.util.TimerTask
 java.lang.IllegalStateException
 Danh sách các lớp giao diện.
-- Trang 23 --


×