J2ME là gì? J2ME là viết tắt của Java 2 Micro Edition. J2ME được thiết kết cho các thiết bị nhỏ ví dụ như mobile phone, các thiết bị điều khiển từ xa, các thiết bị khác như PDA, v.v... Có rất nhiều khác biệt giữa J2ME và các phiên bản khác của Java triển...
J2ME là gì?
J2ME là viết tắt của Java
2 Micro Edition. J2ME được thiết kết cho các thiết
bị nhỏ ví dụ như mobile phone, các thiết bị
điều khiển từ xa, các thiết bị khác như
PDA, v.v...
Có rất nhiều khác
biệt giữa J2ME và các phiên bản khác
của Java triển khai trên nền PC, mà lí do
chính là các thiết bị mục tiêu của
J2ME có rất nhiều sự khác biệt so với PC.
Một vài điểm khác
biệt giữa các “thiết bị J2ME” so với PC là:
Hạn chế về tốc độ của
bộ vi xử lý
Hạn chế về bộ nhớ hệ
thống
Hạn chế về khả năng lưu
trữ
Màn hình hiển
thị nhỏ
Hạn chế về nguồn năng
lượng
Khả năng kết nối Internet
yếu.
J2ME đã được thiết kế
với tất cả những cân nhắc đối với các yếu
tố kể trên. Các thiết bị được thiết kế
tương thích với J2ME đều bao gồm một phiên
bản mini của Java Virtual Machine (JVM) được tích hợp
sẵn trong đó, phiên bản này còn có
tên gọi là KVM, rất nhỏ gọn và phù
hợp với các thiết bị nhỏ. KVM cho phép thực
thi các chương trình Java viết trên nền
J2ME, những chương trình này còn được
gọi là các MIDlet. Các midlet không gì
khác là một chương trình viết bằng Java
(tuy có đôi chút khác biệt) khai thác
các Java API mà J2ME cung cấp, chúng tạo ra
sức mạnh mới cho các thiết bị.
Các ứng dụng J2ME có
thể làm được nhiều điều hơn những gì
chúng ta tưởng, một vài trong số chúng có
thể được liệt kê ra đây:
Tạo các kết nối UDP
(User Datagram Protocol- một giao thức của bộ giao thức
TCP/IP) tới các server hoặc giữa 2 thiết bị.
Tạo các kết nối
HTTP tới các HTTP sever từ đó tạo nên
các ứng dụng phong phú.
Tạo các kết nối
kiểu Socket
Quét mã vạch.
Lập trình kết nối
Bluetooth
.... và còn rất
nhiều khả năng khác của J2ME phụ thuộc vào
trí tưởng tượng của bạn.
Về kiến trúc, J2ME có
thể được chia làm 3 tầng như sau:

Ở đây ta không đi quá
sâu vào phân tích ý nghĩa và
đặc điểm chi tiết các tầng để tránh sự
phức tạp cho bài viết. Các bạn có thể
tham khảo thêm trong nhiều tài liệu về J2ME.
Dưới đây là một vài nét mô tả
sơ lược:
Tầng cao hơn là Profile
bao gồm các thư viện lập trình cơ bản dùng
để phát triển các ứng dụng tương ứng với
từng dòng thiết bị. Có 3 profile phổ biến là
MIDP (Mobile Information Device
Profile ), PDA profile, và Foundation profile. Mỗi
profile đó có chứa một tập hợp các API
khác nhau do vậy ứng dụng phát triển trên
profile nào chỉ chạy được trên các thiết
bị hỗ trợ profile đó.
Tầng trên cùng là
Optional Packages (JSR - Java
Specification Request) bao gồm các gói thư
viện lập trình bổ xung, khi triển khai ứng dụng
các gói này cũng phải được phân
phối theo ứng dụng của bạn (phần lớn đây là
các gói thư viện mà các nhà
cung cấp thiết bị di động tích hợp trong sản
phẩm của họ để phát triển các tính
năng bổ xung như xử lý âm thanh, đồ họa 3D
...).
Cả hai tầng Configuration và
Profile được cung cấp bởi các nhà sản xuất
thiết bị và được nhúng trực tiếp vào
các thiết bị. Trong bài viết này chúng
ta sẽ chỉ tập trung vào configuration và profile
thông dụng nhất được biết đến nhiều là
CLDC và MIDP với các phiên bản là CLDC
1.1 và MIDP 2.0.
Tuy nhiên đối với lập
trình viên thì thường quan tâm đến
các thư viện mà J2ME cung cấp. Bảng sau đây
cho các bạn cái nhìn tổng quan về các
gói thư viện lập trình của CLDC và MIDP:
|
|
Java API packages
|
Mô tả
|
|
General APIs:
|
java.lang
|
Chứa các class Java cơ bản
|
|
java.io
|
Quản lý việc xuất/nhập của hệ thống
|
|
java.util
|
Chứa các lớp hỗ trợ việc tính thời
gian và thao tác với tập hợp
|
|
javax.microedition
|
Quản lý kết nối hệ thống
|
|
+ MIDP 1.0
|
javax.microedition.io
|
Hỗ trợ HTTP
|
|
javax.microedition.lcdui
|
Hỗ trợ xử lý giao diện người dùng
|
|
javax.microedition.rms
|
Quản lý lưu trữ dữ liệu
|
|
javax.microedition.midlet
|
Chứa các base class của ứng dụng Java ME
|
|
+ MIDP 2.0
|
javax.microedition.media
|
Xử lý âm thanh (là một phần của
gói JSR 135 Java Mobile Media API)
|
|
javax.microedition.lcdui.game
|
Hỗ trợ lập trình game
|
|
javax.microedition.pki
|
Hỗ trợ bảo mật
|
|
+ Optional packages (JSR)
|
javax.microedition.messaging
|
Xử lý việc gửi và nhận tin nhắn MMS,
SMS
|
|
javax.microedition.pim
|
Truy cập vào danh bạ điện thoại
|
|
javax.microedition.io.file
|
Tương tác với các file trong bộ nhớ lưu
trữ (ổ cứng, thẻ nhớ v.v...).
|
|
...
|
|
2- Cần những công cụ nào
để lập trình với J2ME?
Để có thể lập trình
các ứng dụng trên nền J2ME (hay còn gọi
là các MIDlets) bạn cần cài tối thiểu
các công cụ sau đây:
JDK version 1.4.2 trở lên
J2ME Wireless toolkit : gói
phần mềm này cung cấp cho bạn một trình giả
lập các thiết bị di động (kèm theo các
API tương ứng), và công cụ biên dịch,
debug, v.v... nhưng không kèm theo trình hỗ
trợ viết code. (các hãng sản xuất thiết bị
di động thường cung cấp một công cụ riêng
tương tự tuy nhiên trong bài viết này ta
sử dụng công cụ của SUN)
Một ứng dụng hỗ trợ viết
code: ví dụ JCreator, Eclipse, Netbeans v.v... Với
JCreator bạn phải cấu hình bằng tay, với Eclipse
bạn phải cài thêm EclipseME plugin, với Netbeans
version 6.0 bạn chỉ cần chọn gói Mobility là
đã đầy đủ, không cần cài thêm
J2ME wireless toolkit.
Trong bài viết này
chúng ta sử dụng công cụ Netbeans version 6.0, tất
nhiên để bắt đầu một cách đơn giản bạn
cũng có thể dùng Notepad kết hợp với Sun
wireless toolkit để biên dịch và chạy chương
trình.
Trước khi bắt tay vào viết
một ứng dụng cụ thể ta hãy dành một chút
thời gian tìm hiểu cấu trúc thư mục của bộ
J2ME wireless toolkit. Sau khi cài đặt, mặc định trong
môi trương Windows thì thư mục của wireless
toolkit là C:\WTK[version].
Bảng sau liệt kê các thư mục và chức
năng tương ứng:
|
Folder
|
Mô tả
|
|
appdb
|
Thư mục này được trình giả lập truy
xuất như là hệ thống file sytem của các
thiết bị di động
|
|
apps
|
Chứa các Midlets mẫu hoặc các Midlets do
toolkit tạo ra.
|
|
bin
|
Chứa toàn bộ các công cụ của bộ
toolkit
|
|
docs
|
Chứa các tài liệu mô tả các
API cho MIDP 1.0 và MIDP 2.0
|
|
lib
|
Chứa các thư viện (các file .jar) của
MIDP và CLDC và các gói thư viện
tùy chọn
|
|
sessions
|
Lưu network và profiling session
|
|
wtkbin
|
Chứa các thư viện riêng của bộ toolkit
và các thư mục cấu hình cho các
thiết bị giả lập
|
----------to be continued----------