Tải xuống mã động sử dụng RMI

Một phần của tài liệu LẬP TRÌNH BẰNG CÁC PHƯƠNG PHÁP PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỖ XE (Trang 27 - 28)

Một trong những khả năng quan trọng nhất của Java là khả năng tải xuống một cách linh hoạt các phần mềm Java từ bất kỳ một URL (Uniform Resource Locator) đến một máy ảo Java JVM (Java virtual machine) đang chạy trong một tiến trình phân lập thông thường trên hệ thống máy tính vật lý khác nhau. Chính nhờ điều này mà một hệ thống máy tính phân tán có thể cùng chạy một chương trình. Điều này tương tự như khi một JVM đang chạy trong một trình duyệt Web có thể tải xuống các bytecode cho các lớp con của java.applet.Applet cũng như bất kỳ lớp nào khác cần cho Applet đó. Các hệ thống có các bộ duyệt đang chạy hầu như chưa bao giờ chạy Applet này cũng như cài đặt nó lên đĩa cục bộ. Khi tất cả các lớp cần thiết đã được tải xuống từ Server các trình duyệt có thể bắt đầu thực thi chương trình của Applet và sử dụng các tài nguyên cục bộ của hệ thống mà bộ duyệt Client đang chạy. Java RMI tận dụng những thuận lợi của khả năng này để tải xuống các lớp và thực thi chúng trên hệ thống nơi mà trước

đó chúng chưa từng được cài đặt trên đĩa. Việc sử dụng RMI API của bất kỳ máy ảo Java nào không chỉ giới hạn ở việc các trình duyệt có thể tải xuống các tệp .class của Java mà còn kèm theo các lớp RMI Stub chuyên dụng, nó cho phép các phương thức thực thi tiến trình gọi Server từ xa và sử dụng các tài nguyên hệ thống của Server đó.

Khái niệm codebase bắt nguồn từ việc sử dụng các trình nạp lớp (classloaders) trong ngôn ngữ lập trình Java. Khi chương trình Java sử dụng classloaders thì bản thân nó cần biết các vị trí nơi mà các lớp được tải về, thông thường các trình nạp lớp liên kết với một Server HTTP mà tại đó đang cung cấp các lớp đã biên dịch cho các ứng dụng của Java. Thông qua cặp classloader/codebase ta có thể liên lạc với một trình nạp lớp Applet (appletclassloader) và codebase đóng vai trò như một phần của thể HTML <applet>, điều này được thể hiện qua đoạn mã HTML sau:

<applet height=100 width=100 codebase="myclasses/" code="My.class">

<param name="ticker"> </applet>

Một phần của tài liệu LẬP TRÌNH BẰNG CÁC PHƯƠNG PHÁP PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỖ XE (Trang 27 - 28)