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

XÂY DỰNG BẢN ĐỒ TRÊN ĐIỆN THOẠI DI ĐỘNG CÓ HỖ TRỢ JAVA - 3 ppsx

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 (847.17 KB, 17 trang )









Chương 1 : Tổng quan về lập trình trên điện thoại di động

18

Cửa sổ quản lý dự án.

Các thư viện khác có thể được tích hợp vào trong công cụ bằng tab
Filesystems trên cửa sổ Explorer.

Hình 1-6 : Cửa sổ quản lý tập tin của Sun ONE Studio 5








Chương 1 : Tổng quan về lập trình trên điện thoại di động

19

 Editor :



Màn hình soạn thảo mã nguồn

Các đặc điểm chính của màn hình soạn thảo mã nguồn :
 Tô màu các từ khóa trong ngôn ngữ Java.
 Đánh số dòng.
 Xem nhiều tập tin trong cùng một cửa sổ.
 Định dạng mã nguồn tự động
 Code completion.

 Biên dịch và đóng gói :
Sun ONE Studio cung cấp trợ giúp trong việc biên dịch và đóng gói một dự
án. Với công cụ này chúng ta có thể kết hợp việc tạo ra đóng gói trong khi thực hiện
biên d
ịch. Khi biên dịch, Sun ONE Studio :
 Dịch MIDlet và tạo ra các tập tin .class.
 Thực hiện tiền kiểm tra các lớp đã được biên dịch.
 Tạo tập tin JAR.








Chương 1 : Tổng quan về lập trình trên điện thoại di động

20
 Tạo tập tin JAD.

 Trình giả lập :
Mặc định khi cài đặt, Sun ONE Studio dùng trình giả lập của WTK để chạy
các ứng dụng MIDP, ngoài ra, chúng ta cũng có thể thêm vào các trình giả lập khác
do hãng thứ ba phát triển bằng chức năng Device Emulator Registry.
Chỉ các trình giả lập có hỗ trợ môi trường giả lập J2ME SDK mới có thể
được dùng chung với Sun ONE Studio. Nghĩa là chúng ta có thể dùng chung công
cụ này với Nokia Developer’s Suite hay Siemens Mobility Toolkit mà không gây
ảnh hưởng gì đến đề án.
Tab Runtime trong cửa sổ Explorer được dùng để quản lý Device Emulator
Registry. Qua chức năng này, chúng ta có thể thêm, xóa hay chọn trình giả lập mặc
định để sử dụng.

Màn hình quản lý trình giả lập.









Chương 1 : Tổng quan về lập trình trên điện thoại di động

21
 Bộ gỡ rối (Debugger) :
Sun ONE Studio cung cấp một trình gỡ rối có thể dùng để dò tìm các lỗi
trong ứng dụng MIDP. Khi một phiên gỡ rối được bắt đầu, màn hình bao gồm ba
cửa sổ là : Debugger Window, Output Window và Source Editor sẽ xuất hiện.
Màn hình Debugger chứa 7 màn hình con, giúp chúng ta xem xét những gì

đang diễn ra trong ứng dụng MIDP của chúng ta, đó là các màn hình :
 Session : liệt kê các ứng dụng đang chạy.
 Breakpoints : liệt kê các breakpoint được thiết lập. Breakpoint có thể
được thiết lập trên một dòng lệnh, trên tên phương thức, trên một ngoại lệ, lớp,
luồng hay một biến.
 Thread : liệt kê các luồng và nhóm luồng đang chạy trong phiên làm việc
hiện hành.
 Call Stack : liệt kê sơ đồ các lời gọi hàm được thực hiện trong quá trình
thực thi luồng hiện hành. Phương thức được thực thi cuối cùng sẽ ở đầu danh sách.
Phương thức được thực thi đầu tiên sẽ
nằm ở cuối danh sách.
 Watches : danh sách các biến và biểu thức mà chúng ta cần khảo sát giá
trị trong quá trình gỡ rối. Ở đây chúng ta có thể thay đổi giá trị các biến khi chúng
đang chạy.
 Variable : liệt kê các biến cục bộ, các thực thể và các biến tĩnh trong
phạm vi của phương thức mà chúng ta đang xem xét.
 Classes : liệt kê các lớp được sử dụng bởi tiến trình đang được gỡ rối.








Chương 1 : Tổng quan về lập trình trên điện thoại di động

22

Màn hình gỡ rối của Sun ONE Studio


 Nhận xét :
Sun ONE Studio là một trong những chương trình phát triển miễn phí đầu
tiên cho J2ME. Hầu như tất cả các đặc tính mà một lập trình viên mong đợi đều
được tích hợp vào trong công cụ này. Một lập trình viên có hiểu biết vể MIDP và đã
có kinh nghiệm trong việc sử dụng Sun ONE Studio có thể dùng nó để phát triển
ứng dụng MIDP chỉ sau một vài giờ tìm hiểu.
Tuy nhiên, Sun ONE Studio lại thiếu các đặc điểm khác khi lập trình J2ME
để có thể giúp nó nổ
i trội hơn các trình soạn thảo đối thủ khác. Hầu hết các đặc
điểm có được là do được đem từ phiên bản dành cho J2SE sang.
Sun ONE Studio là một phiên bản miễn phí. Do đó một số chức năng của nó
vẫn chưa thực sự tốt so với các công cụ thương mại khác.








Chương 2 : Giới thiệu khái quát về chuẩn J2ME

23
Chương 2 : GIỚI THIỆU KHÁI QUÁT VỀ CHUẨN J2ME
2.1. Nền tảng Java :
Khi Sun Microsystems nhận ra rằng việc tạo ra một nền tảng chung để
chạy trên tất cả các môi trường là điều không thể thực hiện được, công ty đã quyết
định chia công nghệ Java của mình thành 3 phiên bản, mỗi phiên bản được ứng
dụng trong một lĩnh vực riêng biệt, các phiên bản đó là :

 Java 2 Platform, Enterprise Edition (J2EE™) phục vụ cho các nhu cầu về

thương mại như phục vụ khác hàng, các vấn đề về phân phối, các vấn đề về nhân
sự. Phiên bản này được chạy trên các máy server.
 Java 2 Platform, Standard Edition (J2SE™) được cung cấp cho thị trường
máy tính để bàn trong các máy tính phục vụ văn phòng hay trong gia đình.
 Java 2 Platform, Micro Edition (J2ME™) chạy trên các máy với tài
nguyên hạn chế.
Hình vẽ sau minh họa các phiên bản hiện có của Java và lĩnh vực ứng dụng
của chúng, bắt đầu từ bên trái là các nền tảng cao cấp sang bên phải là các nền tảng
cấp thấp hơn. Java 2 Enterprise Edition hỗ trợ các máy tính dùng trong doanh
nghiệp, Java 2 Standard Edition hỗ trợ cho các máy tính các nhân, máy tính để bàn.
Java 2 Micro Edition được chia thành 2 loại cho các thiết bị cấp cao (máy PDA cấp
cao, điện thoại web) và các thiết bị cấp thấp (điện thoại di động và PDA với khoảng
512KB bộ nhớ).








Chương 2 : Giới thiệu khái quát về chuẩn J2ME

24

Hình 2-1 : Kiến trúc J2ME

Kiến trúc J2ME được thiết kế để có thể hỗ trợ các thiết bị nhúng khác nhau

trên thị trường. Để làm được như thế, môi trường J2ME cung cấp nhiều loại máy ảo
Java (Java Virtual Machine) khác nhau.
Với các thiết bị cấp thấp, tài nguyên hạn chế, môi trường J2ME cung cấp một
cấu hình máy ảo Java rất nhỏ và các thư viện Java chỉ gồm các gói/lớp cần thiết cho
thiết bị. Giống như việc các nhà s
ản xuất thiết bị phát triển các tính năng khác trong
sản phẩm của mình, cấu hình này có thể được mở rộng với các thư viện mới phục
vụ cho nhu cầu của thị trường. Để hỗ trợ cho khả năng tùy biến và khả năng mở
rộng này, chúng ta có 3 khái niệm sau trong kiến trúc J2ME.
 Configuration (Cấu hình) :
Cấu hình là đặc tả định nghĩa một môi trường phần mềm cho một dòng các
thiết bị được phân loại bởi tập hợp các đặc tính, ví dụ như :
 Kiểu và số lượng bộ nhớ
 Kiểu và tốc độ bộ vi xử lý
 Kiểu mạng kết nối
Một configuration định nghĩa các đặc điểm của máy ảo Java và cung cấp các
thư viện lớp tối thiểu mà các nhà sản xuất thiết bị như Samsung, Nokia …bắt buộ
c
phải thực thi đầy đủ để các lập trình viên có thể dựa vào môi trường lập trình nhất








Chương 2 : Giới thiệu khái quát về chuẩn J2ME

25

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ể.
 Profile :
Profile mở rộng configuration bằng cách thêm vào các class để bổ trợ các tính
năng cho từng thiết bị chuyên biệt. Mỗi profile định nghĩa một tập hợp các class
khác nhau, nên thường ta không thể chuyển một ứng dụng Java viết cho một profile
này và chạy trên một máy hỗ trợ một profile khác. Cũng với lý do
đó, chúng ta
không thể lấy một ứng dụng viết trên J2SE hay J2EE và chạy trên các máy hỗ trợ
J2ME. Một thiết bị có thể hỗ trợ nhiều profile.
 Optional package :
Là các API có thể sử dụng trong nhiều thiết bị hay một họ các thiết bị. Một
J2ME option package là một tập các API nằm trên một profile. Một optional
package thường chứa các chức năng độc lập với các thiết bị. Mục đích chính của
các optional package này là cho phép bổ sung các API trên các profiles. Một thiết bị
có thể hỗ trợ nhiều optional package khác nhau.
Configurations, profiles và các optional packages sử dụng các tính năng của
máy ảo Java (Java Virtual Machine). Máy ảo này chạy trên một hệ điều hành thuộc
về phần mềm hệ thống của thiết bị. Quan hệ của chúng được thể hiện qua hình vẽ
sau :









Chương 2 : Giới thiệu khái quát về chuẩn J2ME


26


Hình 2-2 : Các thành phần trong kiến trúc J2ME


 Configuration :
Trong môi trường J2ME, một ứng dụng được viết cho một profile riêng biệt
nào đó, profile này lại mở rộng từ một configuration. Vì thế, tất cả các đặc điểm của
một configuration sẽ được giữ lại trong profile có thể được sử dụng bởi ứng dụng
viết cho profile này.
Một configuration định nghĩa một nền Java cho các thiết bị có các đặc tính
tương tự nhau (chẳng h
ạn như về bộ nhớ, tốc độ xử lý,…). Một configuration sẽ xác
định :
• Các tính năng của ngôn ngữ Java được hỗ trợ.
• Các tính năng của máy ảo Java được hỗ trợ.
• Thư viện chuẩn và các API .
Nói một cách đơn giản, một configuration định nghĩa một đặc tả mà các nhà
sản xuất thiết bị và những người xây dựng profile phải tuân theo. Tất cả các thi
ết bị
có chung đặc tính (bộ nhớ, tốc độ xử lý) phải “đồng ý” cài đặt đúng các đặc điểm
được xác định và những người xây dựng profile chỉ được sử dụng các đặc tính được
định nghĩa trong configuration. Một lập trình viên viết chương trình game cho điện









Chương 2 : Giới thiệu khái quát về chuẩn J2ME

27
thoại Samsung thì có thể sửa đổi chương trình của mình một cách tối thiểu nhất để
có thể chạy trên điện thoại Nokia. Qua đây ta thấy khẩu hiệu “Write Once, Run
Anywhere” của Java đã không còn đúng nữa, nhưng chúng ta cũng phải đánh giá
cao sự nỗ lực của Sun trong việc tạo ra một môi trường phần mềm chung cho vô số
chủng loại thiết bị di động có trên thị trường. Hiện nay Sun
đã đưa ra 2 dạng
Configuration :
a) CLDC - Connected Limited Device Configuration :

CLDC được thiết kế để nhắm vào thị trường các thiết bị cấp thấp (low-end),
các thiết bị này thông thường là máy nhắn tin, máy điện thoại di động và PDA. Các
thiết bị này có giao diện đơn giản, bộ nhớ khoảng 32K đến 512 KB bộ nhớ, băng
thông nhỏ, trong các thiết bị này, việc truyền thông trên mạng không dựa vào giao
thức TCP/IP. Vì tài nguyên bộ nhớ hạn chế nên CLDC được gắn với Java không
dây (Java Wireless ), dạng nh
ư cho phép người sử dụng mua và tải về các ứng dụng
Java, ví dụ như là Midlet.
b) CDC - Connected Device Configuration :

CDC được đưa ra nhắm đến các thiết bị có tính năng mạnh hơn dòng thiết bị
thuộc CLDC nhưng vẫn yếu hơn các hệ thống máy để bàn sử dụng J2SE. Các thiết
bị thuộc loại này bao gồm các hộp điều khiển TV, tivi Internet, điện thoại Internet,
các thiết bị giải trí, định hướng. Các thiết bị này có giao diện phong phú, bộ nhớ
nhiều hơn (thông thường là trên 2Mb) và có bộ xử

lý mạnh hơn, băng thông lớn và
sử dụng giao thức TCP/IP.
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, 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 hỗ
trợ các phép tính toán dấu phẩy động, nên máy ảo thuộc CLDC không được hỗ trợ
kiểu float và double.









Chương 2 : Giới thiệu khái quát về chuẩn J2ME

28
CLDC CDC
RAM 32K….512K
≥ 256K
ROM 128K….512K
≥ 512K
Nguồn năng lượng Có giới hạn (nguồn pin) Không giới hạn
Network Chậm Nhanh
Bảng 2-1 : Phân loại CLDC và CDC


Hình vẽ sau minh họa quan hệ giữa CLDC, CDC và Java 2 Standard Edition
(J2SE). Theo đó, chúng ta thấy một phần lớn các chức năng trong CLDC và CDC
có được do thừa kế từ Java 2 Standard Edition (J2SE). Mỗi lớp được thừa kế từ
J2SE phải giống hoặc gần giống với lớp tương ứng trong J2SE. Thêm vào đó,
CLDC và CDC có một số đặc tính khác được thiết kế cho các thiết bị nhúng mà
J2SE không có (ví dụ như các thành phần giao diện).



Hình 2-3 : Quan hệ giữa J2ME configuration và J2SE.








Chương 2 : Giới thiệu khái quát về chuẩn J2ME

29

2.2. Sự khác nhau giữa ngôn ngữ Java trên CLDC với Java thông thường :
 Khả năng xử lý số thực :

Các phép toán trên số thực thường cần nhiều thời gian để xử lý. Ngoài ra,
phần lớn các thiết bị không có phần cứng hỗ trợ cho việc tính toán trên số thực, do
đó CLDC không hỗ trợ số thực.
 Finalization :


Trong các lớp được viết bằng J2SE, chúng ta thường định nghĩa một phương
thức có tên là finalize(). Phương thức này sẽ được gọi trước khi bộ thu gom rác
(garbage collector) thu gom đối tượng. Phương thức này là nơi chúng ta đặt các mã
lệnh để giải phóng các tài nguyên đã sử dụng. Tuy nhiên, CLDC không hỗ trợ
phương thức finalize().
 Xử lý lỗi :

Máy ảo Java hỗ trợ rất ít các ngoại lệ xử lý lỗi trong J2SE, lý do của hạn chế
này là :
• Việc xử lý lỗi trong J2SE là khá toàn diện, và đòi hỏi rất nhiều yêu cầu
về tài nguyên hệ thống.
• Thông thường, các hệ thống nhúng sẽ cung cấp xử lý lỗi của riêng
chúng. Một giải pháp đơn giản cho hầu hết các lỗi nghiêm trọng là thực
hiện khởi động lại máy, trong trườ
ng hợp này, những lập trình viên
không thể xử lý lỗi được vì đã quá trễ.

 Các lớp thừa kế từ J2SE :

CLDC yêu cầu khoảng 160 KB để chạy máy ảo Java và các thư viện cơ bản.
Do đó, chỉ có một số lớp trong J2SE là được giữ lại trong CLDC :

• Các lớp hệ thống (system classes)
java.lang.Class
java.lang.Object
java.lang.Runnable (interface)
java.lang.Runtime
java.lang.String









Chương 2 : Giới thiệu khái quát về chuẩn J2ME

30
java.lang.StringBuffer
java.lang.System
java.lang.Thread
java.lang.Throwable

• Các lớp thuộc kiểu dữ liệu (Data Type Classes)
java.lang.Boolean
java.lang.Byte
java.lang.Character
java.lang.Integer
java.lang.Long
java.lang.Short

• Collection Classes
java.util.Enumeration (interface)
java.util.Hashtable
java.util.Stack
java.util.Vector

• Các lớp nhập/xuất (Input/output Classes)

java.io.ByteArrayInputStream
java.io.ByteArrayOutputStream
java.io.DataInput (interface)
java.io.DataInputStream
java.io.DataOutput (interface)
java.io.DataOutputStream
java.io.InputStream
java.io.InputStreamReader
java.io.OutputStream
java.io.OutputStreamWriter
java.io.PrintStream
java.io.Reader
java.io.Writer

• Calendar and Time Classes
java.util.Calendar
java.util.Date
java.util.TimeZone

• Utility Classes
java.lang.Math
java.util.Random










Chương 2 : Giới thiệu khái quát về chuẩn J2ME

31
• Exception Classes
java.io.EOFException
java.io.InterruptedIOException
java.io.IOException
java.io.UnsupportedEncodingException
java.io.UTFDataFormatException
java.lang.ArithmeticException
java.lang.ArrayIndexOutOfBoundsException
java.lang.ArrayStoreException
java.lang.ClassCastException
java.lang.ClassNotFoundException
java.lang.Exception
java.lang.IllegalAccessException
java.lang.IllegalArgumentException
java.lang.IllegalMonitorStateException
java.lang.IllegalThreadStateException
java.lang.IndexOutOfBoundsException
java.lang.InstantiationException
java.lang.InterruptedException
java.lang.NegativeArraySizeException
java.lang.NullPointerException
java.lang.NumberFormatException
java.lang.RuntimeException
java.lang.SecurityException
java.lang.StringIndexOutOfBoundsException
java.util.EmptyStackException

java.util.NoSuchElementException

• Error Classes
java.lang.Error
java.lang.OutOfMemoryError
java.lang.VirtualMachineError

• Internationalization
java.io.InputStreamReader
java.io.OutputStreamWriter

 Các đặc tính được hỗ trợ :

Có rất ít đặc tính về hệ thống mà chúng ta có thể xem được. Sau đây là danh
sách các đặc tính có được và các câu lệnh để truy xuất chúng :
o Lấy thông tin về platform của thiết bị :








Chương 2 : Giới thiệu khái quát về chuẩn J2ME

32
System.getProperty("microedition.platform")
o Lấy bảng mã ký tự :
System.getProperty("microedition.encoding")

o Lấy tên và phiên bản của cấu hình (configuration)
System.getProperty("microedition.configuration")
o Lấy tên của các profile được hỗ trợ :
System.getProperty("microedition.profiles")

 K Virtual Machine :

KVM là một máy ảo Java phù hợp với CLDC mà Sun MicroSystems đã phát
triển. KVM được thiết kế nhỏ và hiệu quả, KVM được viết bằng C để có thể hỗ trợ
tốt tính năng khả chuyển. Phần lớn mã lệnh của KVM sẽ không thay đổi theo thiết
bị, chỉ có một phần mã dùng để quản lý bộ nhớ, điều khiển lỗi, xử lý sự kiện… là
phụ thuộc vào thiế
t bị.
2.3. MIDP :
2.3.1. Định nghĩa :

Đây là Profile được định nghĩa dành riêng cho các thiết bị di động và là
thành phần chính trong J2ME. MIDP cung cấp các chức năng cơ bản cho hầu hết
các dòng thiết bị di động phổ biến nhất như các máy điện thoại di động và các máy
PDA. Tuy nhiên MIDP cũng có nhiều hạn chế lớn cũng vì chỉ được thiết kế cho các
máy di động có cấu hình rất thấp.

2.3.2. Yêu cầu về phần cứng :

• Màn hình có kích thước tối thiểu là 96 x 54 pixel.
• Có ít nhất một trong các thiết bị nhập sau : bàn phím, màn hình cảm ứng.
• Ít nhất 128 KB để chạy các thành phần của MIDP
• Ít nhất 8 KB để chạy các ứng dụng để chứa dữ liệu.
• Ít nhất 32 KB để chạy Java
• Kết nối mạng không dây.









Chương 2 : Giới thiệu khái quát về chuẩn J2ME

33
Các hệ điều hành trên các thiết bị thì thay đổi tùy theo thiết bị, do đó, MIDP
không quá khắt khe về các yêu cầu phần mềm. Sau đây là một số yêu cầu :
• Hệ điều hành trên các thiết bị phải cung cấp khả năng xử lý ngoại lệ, xử
lý ngắt, và phải chạy được máy ảo Java
• Hỗ trợ vẽ ảnh bitmap ra màn hình.
• Dùng một trong 3 loại thiết bị
nhập đã liệt kê ở trên,.
• Hỗ trợ đọc và ghi dữ liệu từ bộ nhớ chính.

2.3.3. Các khả năng và hạn chế của MIDP :

 Các hạn chế của MIDP :
MIDP KHÔNG hỗ trợ các tính năng sau :
• Phép tính dấu phẩy động (floating point): Phép tính này đòi hỏi rất nhiều
tài nguyên CPU và phần lớn các CPU cho các thiết bị di động không hỗ trợ phép
tính này, do đó MIDP cũng không có.
• Bộ nạp class (Class Loader).
• Hỗ trợ từ khóa finalize() như trong J2SE: Việc “dọn dẹp“ tài nguyên
trước khi nó bị xóa được đẩy về phía các lập trình viên.

• Không hỗ trợ JNI

Hỗ trợ hạn chế thao tác bắt lỗi.
• Phần lớn các thư viện API cho Swing và AWT không thể sử dụng được
trong MIDP.
• Không hỗ trợ các tính năng quản lý file và thư mục. Điều này có thể làm
chúng ta 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… Tuy nhiên, điều đó không có nghĩa là chúng
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.









Chương 2 : Giới thiệu khái quát về chuẩn J2ME

34
 Những chức năng 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 (Hiện nay tại Việt Nam có rất nhiều
đời điện thoại hỗ trợ MIDP 2.0 như Nokia 6600, Sony Ericsson P900, ). Sau đây là
các cải tiế
n nổi bật so với MIDP 1.0
• Nâng cấp các tính năng bảo mật như :
o Download qua mạng an toàn hơn qua việc hỗ trợ giao thức
HTTPS.
o Kiểm soát việc kết nối giữa máy di động và server: ví dụ như các
chương trình không thể kết nối tới server nếu thiếu sự chấp thuận
của người sử dụng.
• Thêm các API hỗ trợ Multimedia.
• Mở 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

×