Chương 2 Hệ điều hành thời gian thực
3.4. J2ME
3.4.1.1. Máy ảo Java (KVM)
Vai trò của máy ảo Java hay KVM là dịch mã bytecode được sinh ra từ chương trình Java đã biên dịch sang ngôn ngữ máy. Chính KVM sẽ chuẩn hóa output của các chương trình Java cho các thiết bị di động khác nhau có thể có bộ vi xử lý và tập lệnh khác nhau. Không có KVM, các chương trình Java phải được biên dịch thành tập lệnh cho mỗi thiết bị di động. Như vậy lập trình viên phải xây dựng nhiều đích cho mỗi loại thiết bị di động [21].
Quá trình xây dựng ứng dụng MIDlet được chỉ ra trong Hình 3.15:
Hình 3.15. Tiến trình xây dựng ứng dụng
- Tạo ứng dụng trên desktop: Tạo các tệp tin nguồn Java: các tệp tin có phần mở rộng .java
- Biên dịch mã nguồn thành mã bytecode: Bộ biên dịch Java sẽ biên dịch mã nguồn thành mã bytecode. Mã bytecode này sẽ được KVM dịch thành mã máy. Mã bytecode đã biên dịch sẽ được lưu trong các tệp tin *.class và sẽ có một tệp tin *.class sinh ra cho mỗi lớp Java. - Tạo tệp tin JAR chứa:
o Tất cả các tệp tin *.class
o Các hình ảnh của ứng dụng: hiện tại chỉ hỗ trợ tệp tin *.png o Các tệp tin dữ liệu có thể được yêu cầu bởi ứng dụng
Trên máy Desktop
File nguồn *.java Trình
biên dịch
File bytecode *.class
File bytecode *.class File nguồn *.java
File .jar
Máy ảo KVM
Trên máy thiết bị di động
Mã máy
Thiết bị
nhúng cho các thiết bị di động o Một tệp tin kê khai (manifest.mf) cung cấp mô tả về ứng dụng
cho bộ quản lý ứng dụng (application manager) trên thiết bị di động
o Tệp tin JAR được bán hoặc được phân phối đến người dùng đầu cuối
- Nạp ứng dụng vào thiết bị di động và thực thi: Bộ tiền kiểm tra (Preverifier) kiểm tra tính hợp lệ của mã bytecode. Điều này đảm vảo yêu cầu an toàn và toàn vẹn dữ liệu của J2ME, đảm bảo mã bytecode chuyển cho KVM là hợp lệ và không truy xuất các lớp hay bộ nhớ ngoài giới hạn. Do đó tất cả các lớp đều phải được tiền kiểm tra trước tải lên thiết bị di động. Việc tiền kiểm tra được xem là một phần của môi trường phát triển làm cho KVM có thể được thu nhỏ hơn [11].
o Bộ tiền kiểm tra: Kiểm tra mã bytecode Bộ tiền kiểm tra kiểm tra tất cả các lớp đều có một thuộc tính hợp lệ đã được thêm vào bởi bộ tiền kiểm tra trên trạm phát triển ứng dụng. Nếu tiến trình tiền kiểm tra thất bại thì ứng dụng sẽ không được tải về thiết bị di động.
o Bộ quản lý ứng dụng: Lưu trữ chương trình Bộ quản lý ứng dụng trên thiết bị di động sẽ lưu trữ chương trình trên thiết bị di động. Bộ quản lý ứng dụng cũng điều khiển trạng thái của ứng dụng trong thời gian thực thi và có thể tạm dừng ứng dụng khi có cuộc gọi hoặc tin nhắn đến.
o KVM: Thực thi mã bytecode khi chương trình chạy. KVM thông dịch mã bytecode sang ngôn ngữ máy của thiết bị di động để chạy.