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----------