b. The flexible Mobile Phone
3.1.4 Kiến trúc J2ME
J2me được xây dựng để phát triển ứng dụng chạy trên nền các thiết bị nhúng, nhóm các thiết bị này rất phong phú và giữa chúng thường có nhiều khác biệt về đặc tính (bộ nhớ, tốc độ xử lý, khả năng kết nối mạng…), ví dụ như các thiết bị điện thoại, Screenphone, PDA, máy chụp ảnh… có thể có sự khác nhau về kích cỡ màn hình, hay giữa những chiếc điện thoại với màn hình có độ lớn như nhau nhưng lại có sự khác nhau về độ phân giải… Sự phong phú và phức tạp này khiến cho việc xây dựng một nền tảng J2me chung cho tất cả các thiết bị là không thể, thay vào đó J2me được xây dựng với một kiến trúc khác, đó là kiến trúc phân tầng, trong đó các thiết bị sẽ được phân nhóm theo đặc tính (bộ nhớ, tốc độ xử lý, khả năng kết nối mạng…) mỗi nhóm thiết bị đó tương đương với một nhóm configuration-cấu hình J2me, cấu hình sẽ đặc tả nền tảng Java trên
nhóm các thiết bị này, hay nói cách khác, cấu hình sẽ định nghĩa các chức năng chung cơ bản nhất cho các thiết bị cùng nhóm.
Tuy nhiên, với những giới hạn về phần cứng như vậy, khả năng phát triển ứng dụng dựa trên configuration là không lớn, hơn nữa, giữa các thiết bị có cùng cấu hình cũng có nhiều đặc điểm, những khả năng nổi trội khác nhau, để cung cấp môi trường lập trình cho các thiết bị chuyên biệt trong cùng một nhóm cấu hình và để linh hoạt hơn khi công nghệ thay đổi, các thiết bị lại một lần nữa được phân nhóm, nhóm cấu hình sẽ được phân nhỏ hơn và được gọi là các profile.
Profile là định nghĩa mở rộng thêm cho một phân loại cấu hình, nó cung cấp một tập các thư viện lập trình cho phép tạo ra các ứng dụng chạy trên một kiểu thiết bị đặc biệt.