10/10/19

Remote Method Invocation

Name               : Rachma Oktari
Nim                 : 001201907023
Subject            : Distributed Systems
Lecturer           : Tjong Wan Sen
Faculty/Major  : Computing/MSIT
Conference      : Remote Method Invocation

The RMI (Remote Method Invocation) is an API that provides a mechanism to create distributed application in java. The RMI allows an object to invoke methods on an object running in another JVM. The RMI provides remote communication between the applications using two objects stub and skeleton [3].
Stub :
Stub adalah objek, bertindak sebagai gateway untuk sisi klien. Semua permintaan keluar disalurkan melalui stub. Stub berada di sisi klien dan mewakili objek jarak jauh.

Ketika caller memanggil metode pada objek, stub melakukan tugas-tugas berikut: memulai koneksi dengan Mesin Virtual jarak jauh (JVM) -> menulis dan mentransmisikan (marshal) parameter ke Mesin Virtual jarak jauh (JVM)-> Menunggu hasilnya -> dibaca (unmarshals) nilai kembalikan  -> mengembalikan nilai ke caller.

Skeleton :
Skeleton adalah objek, bertindak sebagai gateway untuk objek sisi server. Semua permintaan yang masuk disalurkan melalui skeleton.

Ketika skeleton menerima permintaan masuk, skeleton melakukan tugas-tugas berikut:membaca parameter untuk metode jarak jauh -> memanggil metode pada objek jauh yang sebenarnya -> menulis dan mentransmisikan (marshal) hasilnya ke caller.


RMI is using byte streams in order to transfer data and method calling (invocations) [4].
(Stream byte digunakan untuk memberikan atau menyimpan informasi data dalam bentuk byte. Misalnya untuk menulis dan membaca file biner).

RMI atau ( Remote Method Invocation ) adalah fasilitas yang dimiliki java untuk pemanggilan Object antara client dan server. RMI menyediakan sarana dimana client dan server dapat berkomunikasi dan saling bertukar infomasi. RMI memungkinkan pengembang perangkat lunak untuk merancang aplikasi terdistribusi dimana methods dari remote object dapat dipanggil dari JVM (Java Virtual Mechine) lain, yang mungkin berjalan pada host yang berbeda, Remote object adalah obyek dalam Java yang dapat direferensikan secara remote.

Dalam RMI, server akan membuat remote objects, membuat referensi, dan menunggu client untuk memanggil methods dari remote object ini. Sedangkan client akan mendapatkan remote reference dari satu atau lebih remote object dan memanggil methods untuk remote object tersebut.


Pemrogram seakan-akan memanggil methods lokal dari file kelas lokal, sedangkan dalam kenyataannya semua argumen dikirimkan ke remote target dan diinter-pretasikan, kemudian hasilnya dikirimkan kembali ke pemanggil.

RMI menyediakan mekanisme dimana server dan client berkomunikasi dan memberikan informasi secara timbal balik. Aplikasi semacam ini seringkali disebut aplikasi objek terdistribusi.


Membangun suatu aplikasi terdistribusi menggunakan RMI meliputi 6 langkah.
Keenam langkah tersebut adalah:
1. Mendefinisikan remote interface
2. Implementasi remote interface dan server
3. Pengembangan client yang menggunakan remote interface
4. Mengkompilasi source files dan membuat stub and skeletons
5. Memulai (start) RMI registry
6. Menjalankan server dan client

Contoh RMI [3] :
Dalam contoh ini, dengan mengikuti semua 6 langkah untuk membuat dan menjalankan aplikasi rmi. Aplikasi klien hanya perlu dua file, remote interface and client application. Dalam aplikasi rmi, klien dan server berinteraksi dengan remote interface. Aplikasi klien memanggil metode pada objek proxy, RMI mengirimkan permintaan ke remote JVM. Nilai kembali dikirim kembali ke objek proxy dan kemudian ke aplikasi klien.


Implementasi sederhana [3]:
1. Buat remote interface

2. Provide the implementation of the remote interface
  
3. Buat object stub and skeleton dengan rmic tool.

  
4. Register service oleh rmiregistry tool
    Mulai register service dengan rmiregistry tool. Jika tidak menentukan port number, akan pakai port default. Tapi dicontoh ini, pakai port number 5000. 
  

5. Buat dan jalankan aplikasi server
    Layanan rmi perlu di hosting dalam server. Naming class menyediakan metode untuk mendapatkan dan menyimpan remote object. Naming Class menyediakan 5 metode.
  
    
Hasil Run




6. Buat dan jalankan aplikasi client
Pada client stub object dengan metode lookup () dari kelas Penamaan dan memanggil metode pada objek ini. Dalam contoh ini menjalankan aplikasi server dan klien, di laptop/pc yang sama sehingga menggunakan localhost. Jika ingin mengakses objek jarak jauh dari komputer lain, ubah localhost ke nama host (atau alamat IP) di mana objek jarak jauh berada.


Hasil Run


Keuntungan dan kerugian dari RMI call over TCP [1]
 

Keuntungan RMI [2]:
  • Berorientasi Objek: RMI dapat mengirimkan objek penuh sebagai argumen dan mengembalikan nilai, bukan hanya tipe data yang telah ditentukan.
  • Mobile beravior : RMI dapat memindahkan perilaku (implementasi kelas) dari klien ke server dan server ke klien.
  • Design Patterns: Passing objects lets you use the full power of object oriented technology in distributed computing, such as two- and three-tier systems.
  • Safe and Secure: RMI uses built-in Java security mechanisms that allow your system to be safe when users downloading implementations. RMI uses the security manager defined to protect systems from hostile applets to protect your systems and network from potentially hostile downloaded code. In severe cases, a server can refuse to download any implementations at all.
  • Easy to Write/Easy to Use: RMI makes it simple to write remote Java servers and Java clients that access those servers. A remote interface is an actual Java interface.
  • Connects to Existing/Legacy Systems: RMI interacts with existing systems through Java's native method interface JNI. Using RMI and JNI you can write your client in Java and use your existing server implementation.
  • Write Once, Run Anywhere: RMI is part of Java's "Write Once, Run Anywhere" approach. Any RMI based system is 100% portable to any Java Virtual Machine *, as is an RMI/JDBC system. If you use RMI/JNI to interact with an existing system, the code written using JNI will compile and run with any Java virtual machine.
  • Distributed Garbage Collection: RMI uses its distributed garbage collection feature to collect remote server objects that are no longer referenced by any clients in the network. Analogous to garbage collection inside a Java Virtual Machine, distributed garbage collection lets you define server objects as needed, knowing that they will be removed when they no longer need to be accessible by clients.
  • Parallel Computing: RMI is multi-threaded, allowing your servers to exploit Java threads for better concurrent processing of client requests.
  • The Java Distributed Computing Solution: RMI is part of the core Java platform starting with JDK?? 1.1, so it exists on every 1.1 Java Virtual Machine. All RMI systems talk the same public protocol, so all Java systems can talk to each other directly, without any protocol translation overhead.

Reference :
 [1] Advantages and Disadvantages of RMI calls over TCP:  Dipetik Oktober 09, 2019, dari https://kbase.zohocorp.com/kbase/Web_NMS/Communication/file_110922.html
[2] Java Remote Method Invocation - Distributed Computing for Java. Dipetik Oktober 09, 2019, dari https://www.oracle.com/technetwork/java/javase/tech/index-jsp-138781.html
[3] Java T point: Dipetik Oktober 06, 2019, dari https://www.javatpoint.com/RMI
[4] Marius Iulian Mihailescu, S. L. (2015, Maret 08). Remote Method Invocation (RMI). Dipetik Oktober 06, 2019, dari Code Project: https://www.codeproject.com/Articles/884158/Remote-Method-Invocation-RMI






Tidak ada komentar:

ADAPTIVE SOFTWARE DEVELOPMENT - GROUP 3