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
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
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.
Layanan rmi perlu di hosting dalam server. Naming class
menyediakan metode untuk mendapatkan dan menyimpan remote object. Naming Class
menyediakan 5 metode.
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]
- 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:
Posting Komentar