1Định nghĩa

Một phần của tài liệu Tìm hiểu cơ chế RMI của Java và xây dựng một môi trường hỗ trợ tính toán song song và phân bố (Trang 36 - 41)

JNI là một Application Progamming Interface cho phép JVM gọi những ứng dụng và sử dụng thư viện được viết bởi các ngôn ngữ khác.

Một lớp Java khai báo native để xác định rằng code thực sự cho method đó được cung cấp bởi ngôn ngữ khác. Code đó được Compile sang native machine code của platform xác định của bạn, gọi là native method.

- 2Đặc điểm

• JNI như là một phần trung gian giữa Java và native application

Hình 22. Vị trí tương đối của JNI

• Invocation API cho phép nhúng (embed) JVM vào ứng dụng native.

• Sử dụng JNI để giải quyết những vấn đề mà được giải quyết tốt hơn ở bên ngoài môi trường lập trình.

• JNI framework cho phép native method dùng Java Object giống như code Java sử dụng những object này. Một native method có thể sử dụng object được tạo ra bởi code Java . Tóm lại cả native language và Java của một ứng dụng đều có thể tạo ra,update, truy cập đối tượng Java và sau đó chia sẽ những đối tượng này với nhau.

• Native methods cũng có thể dễ dàng gọi Java method.

Tóm lại

Với JNI, về mặt xem xét RMI trong Java nói riêng, thì RMI có thể mạnh hơn do nó có thể sử dụng lại các thư viện hoặc chương trình đã có trước đó. Nhưng nhìn chung JNI giúp cho Java có thể trở thành một ngôn ngữ có khả năng sử dụng các ưu điểm của ngôn ngữ khác vào chương trình viết trong Java.

Tổng kết phần lý thuyết

RMI là một cơ chế cho phép một Object trên một Java Virtual Machine(JVM) này gọi một Remote Method của một Remote Object trên một JVM khác.

Với RMI, Java đã cung cấp cho ta một số các đặc tính sau :

♦RMI cho phép các ứng dụng trên mạng được phát triển dễ dàng bởi thao tác gọi hàm. ♦Bởi vì RMI được tích hợp trong Java nên nó là một giải pháp mạnh để xây dựng các ứng dụng theo mô hình đối tượng phân bố trong Java. Cũng chính vì điểm này mà dùng RMI giảm được tính phức tạp do không dùng ngôn ngữ trung gian như một số mô hình khác như CORBA.

♦Cung cấp một môi trường phân bố hướng đối tượng : với RMI chúng ta có thể truyền các tham số không chỉ là các kiểu dữ được định nghĩa trước, mà các tham số này còn có thể là các đối tượng đầy đủ. Với đặt điểm này chúng ta có thể gửi một đoạn chương trình dưới dạng một Method của một Object từ Client lên cho Server xử lý hộ.

♦Thừa kế được tính bảo mật cao của Java

♦Không phụ thuộc vào Platform do Java là một ngôn ngữ không phụ thuộc vào Platform.

♦Không phụ thuộc vào phần cứng cấu tạo trên mạng. ♦Không phụ thuộc vào sơ đồ vật lý của mạng.

Stub Class Skeleton

Class Transport Layer Client Application Remote Object Remote Reference Layer Mô hình RMI

♦Dễ viết và dễ sử dụng : với Server thì người lập trình chỉ quan tâm đến giải thuật là chính yếu. Với Client thì công việc chính yếu cũng chỉ là thuật giải.

♦Làm theo mô hình Client – Server một cách tiện lợi.

♦Hỗ trợ việc load Class động, giúp cho hoạt động của ứng dụng có tính uyển chuyển. ♦Chuẩn giao thức mở, có thể tổ chức địa chỉ toàn cầu, điều này có thể giúp ta xây

dựng một hệ thống khá lớn.

♦RMI còn là một mô hình muti-threaded, nó cho phép các Server khai thác tính chất thread của Java, điều này làm Server có thể thực hiện tốt hơn cho việc xử lý đồng thời các yêu cầu của các Client.

Nhưng kèm theo đó là một số nhược điểm của RMI :

♦Điểm mạnh RMI là mô hình đối tượng phân bố cho Java platform cũng là điểm yếu của RMI. Vì RMI là mô hình đối tượng đơn, không có khả năng tương tác với các mô hình Object khác. Do đó, những phiên bản sau này, Sun đã phát triển cho CORBA được tích hợp trong Java nên có thể RMI sẽ truy xuất được đối tượng của CORBA

♦RMI không có khả năng tự động tìm kiếm đối tượng, vì muốn có được đối tượng ta phải lookup đối tượng đó, so với CORBA thì User chỉ cần biết là có sự tồn tại của đối tượng đó thì đã có thể dùng.

♦Thời gian Overhead cho việc định vị Object quá lớn, do phải đi tìm địa chỉ Server Object.

♦Khó bảo vệ được Server (Agent) khi địa chỉ giao tiếp không còn được bảo mật.

♦Chuẩn giao tiếp giữa các máy đã bị che giấu do đó khó có được tính mở đối với các Object được viết ở ngôn ngữ khác.

♦Hầu hết hoạt động của hệ thống phụ thuộc vào sự tồn tại của Name Server (RMIRegistry).

Từ đó ta có thể thấy ta sử dụng cơ chế RMI này vào trường hợp thích hợp nhất là : • Khi muốn đơn giản hóa về mặt thực hiện giao tiếp giữa hai máy.

• Khi muốn xây dựng một ứng dụng không phụ thuộc Platform. • Khi cần xây dựng một ứng dụng phân bố hướng đối tượng.

Và để có được các ưu điểm trên, thì RMI cần phải có sự hỗ trợ của nhiều cơ chế, kỹ thuật khác. Ví dụ như :

♦Cơ chế load class động là cơ chế cho phép một JVM có thể đi lấy định nghĩa Class cho một class mà nó chưa hiểu từ một JVM từ xa, hay cũng có thể từ chính hệ thống file của Local JVM.

Cho phép hiện thực một hệ thống uyển chuyển hơn về việc load class trong khi chương trình đang chạy.

Giúp cho cơ chế RMI trở nên mạnh hơn, cụ thể hơn là giúp cho RMI có thể hỗ trợ việc cho việc cho phép Client Object có thể gửi lên cho Remote Object một Object và nhờ Remote Object thực thi hộ một trong các Method của Object được gửi lên đó.

• Nhược điểm của cơ chế :

Đôi khi có thể làm kéo dài thời gian Overhead một cách vô ích, đó là trường hợp Class đó có tại Local JVM nhưng cơ chế tự động này vẫn cứ đi lấy trên một JVM khác.

Và do việc Load Class này được tự động vì vậy cũng sẽ có lúc sẽ gây ra lỗi khi hệ thống tự Load một class sai cùng tên mà User không kiểm soát được. Điều này có thể sẽ làm cho hệ thống bị sai sót.

♦Serialization Object làmột cơ chế của Java cho phép Java chuyển một Object thực sự trong hệ thống thành một chuỗi Byte nhớ và truyền đi. Cơ chế này giúp cho chúng ta có thể gửi và nhận một Object.

♦MultiThread : là kỹ thuật cho phép xử lý đa luồng trong một process, với kỹ thuật này giúp cho RMI có thể nhận và xử lý yêu cầu theo cơ chế MultiThread.

♦JNI : là kỹ thuật cho phép sử dụng lại các thư viện đã có sẵn trước đó. Điều này làm Java có thể mở rộng khả năng xử lý của một thư viện sẵn có một cách dễ dàng.

Và để cho hiệu quả hơn về việc sử dụng tài nguyên cho việc gọi hàm, người ta cũng cung cấp cho ta một cơ chế mà nó được phát triển từ RMI trong Java, đó là cơ chế Activation. Như đã trình bày tóm lược ở trên, thì Activation là cơ chế mà hệ thống sẽ tạo ra Remote Object mỗi khi Object đó nhận được yêu cầu từ phía Client.

Phần II : Phân tích – Thiết kếChương 4 : Phân tích đề tài Chương 4 : Phân tích đề tài

- XIVĐề tài

Đề tài : Tìm hiểu cơ chế RMI của Java và xây dựng một môi trường hỗ trợ tính toán song song và phân bố .

Do đó, bài toán đặt ra cho luận văn này là :

Một hệ thống máy tính gồm nhiều máy tính có khả năng tính toán lớn được nối kết với nhau trên một mạng. Các máy này có thể đảm nhận việc thực hiện các dịch vụ tính toán lớn mà chúng ta gọi là các Service. Yêu cầu đặt ra là xây dựng một hệ thống đóng vai trò là một môi trường cho phép thực thi những bài toán tương đối lớn theo mô hình song song và phân bố. Cơ chế hỗ trợ để xây dựng đề tài là RMI trong Java, là một cơ chế Distributed Object.

Để rõ ràng hơn ta cần làm rõ khái niệm môi trường là gì ? Môi trường trong bài toán này có nghĩa là một hệ thống nền, hệ thống này cho phép người quản trị có thể thêm sửa xóa một dịch vụ nào đó một cách tiện lơi dễ dàng nhất có thể, hệ thống giúp người quản trị có thể quản lý việc phân công công việc cho các máy tính nhằm đạt được kết quả tính toán một cách hiệu quả nhất, hệ thống cũng có thể thống kê hoạt động của các máy Server…Nói tóm lại, môi trường này là một công cụ hỗ trợ chúng ta trong việc quản lý sao cho các máy tính phối hợp với nhau để thực hiện một công việc nào đó một cách hiệu quả nhất.

Đối với một môi trường hỗ trợ việc xử lý song song và phân bố thì những đặc tính mà chúng ta cần quan tâm là : hỗ trợ dùng chung tài nguyên , tính mở, tính đồng thời, khả năng chịu lỗi và tính trong suốt đối với người sử dụng. Do đó những vấn đề cần quan tâm trước tiên khi xây dựng một ứng dụng phân bố chính là những đặc tính trên. Và cũng vì vậy, ta cũng phải quan tâm đến những điểm trên khi xây dựng một môi trường hỗ trợ tính toán song song và phân bố bằng RMI.

Một phần của tài liệu Tìm hiểu cơ chế RMI của Java và xây dựng một môi trường hỗ trợ tính toán song song và phân bố (Trang 36 - 41)

Tải bản đầy đủ (DOC)

(124 trang)
w