Máy ảo Java (KVM)

Một phần của tài liệu Môi trường phát triển phần mềm nhúng cho các thiết bị di động (Trang 48)

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.

Một phần của tài liệu Môi trường phát triển phần mềm nhúng cho các thiết bị di động (Trang 48)