J2ME (Java To Micro Edition) là nền tảng công nghệ Java của SUN sử dụng để phát triển các ứng dụng trên điện thoại di động hay các thiết bị cầm tay nhỏ gọn khác [26].
Ban đầu, 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. Khi Java 2 ra đời thì Sun quyết định thay thế Personal Java và được gọi với tên mới là Java 2 Micro Edition, viết tắt là J2ME. Đúng với tên gọi, J2ME là nền tảng cho các thiết bị có tính chất nhỏ gọn.
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 để che giấu các chức năng giao tiếp phức tạp với phần cứng khỏi nhà phát triển. Hình 3.14. sau đây là các tầng của J2ME được xây dựng trên CLDC [28]:
Hình 3.14. Kiến trúc J2ME
- 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 sẽ đượ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ộ
nhúng cho các thiết bị di động
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 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ó máy ảo Java.
- 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) cho phép chương trình Java chạy trên thiết bị di động. Tầng này bao gồm một tập các API định nghĩa lõi của ngôn ngữ J2ME. Lập trình viên có thể sử dụng các lớp và phương thức của các API này tuy nhiên tập các API hữu dụng hơn được chứa trong tầng hiện trạng (profile layer).
- Tầng hiện trạng (Profile Layer): Tầng hiện trạng hay MIDP (Mobile Information Device Profile: Hiện trạng thiết bị thông tin di động). Tầng hiện trạng xây dựng bên trên tầng ứng dụng, cung cấp tập các lớp đa dạng nhằm hỗ trợ tốt hơn cho việc phát triển ứng dụng J2ME. Như vậy tầng hiện trạng đóng vai trò trung gian giao tiếp với tầng cấu hình và cung cấp các lớp cho phát triển ứng dụng.
nhúng cho các thiết bị di động