Anda di halaman 1dari 5

Sekilas Tentang RMI

Asfira Sagitri – 13296060

Dosen: Onno W. Purbo

Sistem komputasi terdistribusi yang bekerja di banyak tempat mengharuskan beberapa komputer untuk bisa
berkomunikasi satu sama lain. Untuk komunikasi, bahasa Java mendukung pemakaian socket yang sifatnya
fleksibel dan mencukupi untuk keperluan komunikasi umum. Tapi di sisi lain, untuk membuat socket, klien
dan server harus terhubung melalui protokol pada application level untuk meng-encode dan men-decode
data-data yang akan dikirimkan. Protokol itu sendiri ternyata sulit untuk dibuat dan bisa menjadi rentan
terhadap error.

Alternatif lain dari socket adalah dengan menggunakan Remote Procedure Call (RPC), yang mengabstraksi
interface komunikasi ke level pemanggilan procedure. Programmer tidak akan menangani socket secara
langsung, dan seolah-olah memanggil prosedur lokal, padahal argumen dari prosedur lokal tersebut
dipaketkan dan dikirimkan ke tujuan jarak jauh. Tapi RPC tidak bisa langsung dipakai dalam sistem objek
terdistribusi. Dalam sistem objek terdistribusi, diperlukan komunikasi antara objek-objek yang ada di level
program, yang berada dibanyak tempat. Oleh karena itu, sistem objek terdistribusi memerlukan suatu
Remote Method Invocation (RMI). Pada sistem yang memakai RMI, sebuah objek lokal yang dinamakan
stub mengurus pemanggilan method pada objek jarak jauh.

RMI (Remote Method Invocation) adalah cara programmer Java untuk membuat program aplikasi Java to
Java yang terdistribusi. Program-program yang menggunakan RMI bisa menjalankan metode secara jarak
jauh, sehingga program dari server bisa menjalankan method di komputer klien, dan begitu juga sebaliknya.

Java RMI yang ada pada bahasa Java telah didesain khusus sehingga hanya bisa bekerja pada lingkungan
Java. Hal ini berbeda dengan sistem RMI lainnya, misalnya CORBA, yang biasanya didesain untuk bekerja
pada lingkungan yang terdiri dari banyak bahasa dan heterogen. Pemodelan objek pada CORBA tidak
boleh mengacu pada bahasa tertentu.

Sistem RMI terdiri atas tiga layer/lapisan, yaitu


1. stub/skeleton layer, yaitu stub pada sisi klien (berupa proxy), dan skeleton pada sisi server.
2. remote reference layer, yaitu perilaku remote reference (misalnya pemanggilan kepada suatu objek)
3. transport layer, yaitu set up koneksi, pengurusannya dan remote object tracking.
Stub Skeleton
Remote Reference Layer
Transport layer

Batas antar masing-masing layer disusun oleh interface dan protokol tertentu, yaitu tiap layer bersifat
independen terhadap layer lainnya, dan bisa diganti oleh implementasi alternatif tanpa mengganggu layer
lainnya. Sebagai contoh, implementasi transport yang digunakan RMI adalah yang berbasis TCP
(menggunakan Java socket), tapi bisa digantikan dengan menggunakan UDP.

Layer application berada di atas sistem RMI. Hubungan antara layer-layer tersebut dapat dijelaskan pada
gambar berikut :

Aplikasi

Sistem RMI Stub Skeleton

Sebuah remote method invocation dari klien ke remote server object akan melalui layer-layer pada sistem
RMI dari layer transport pada sisi klien ke layer transport pada sisi server.

Sebuah klien yang menjalankan method pada remote server object sebenarnya menggunakan stub atau
proxy yang berfungsi sebagai perantara untuk menuju remote server object tersebut. Pada sisi klien,
reference ke remote object sebenarnya merupakan reference ke stub lokal. Stub ini adalah implementasi
dari remote interface dari sebuah remote object, dan meneruskan panggilan ke server object melalui remote
reference layer. Stub dibuat dengan menggunakan kompiler rmic.

Supaya sebuat panggilan method tersebut bisa sampai di remote object, panggilan tersebut diteruskan
melalui remote reference layer. Panggilan tersebut sebenarnya diteruskan ke skeleton yang berada di sisi
server. Skeleton untuk remote object ini akan meneruskan panggilan ke kelas remote object implementation
yang menjalankan method yang sebenarnya. Jawaban, atau return value dari method tersebut akan dikirim
melalui skeleton, remote reference layer dan transport layer pada sisi klien, lalu melalui transport layer,
remote reference layer, dan stub pada sisi klien.

Teknik dalam RMI salah satunya adalah dynamic stub loading, yang berfungsi untuk membuat klien me-
load stub yang belum ada di komputernya. Stub mengimplementasi remote interface yang sama dengan
yang diimplementasikan oleh remote object.

Dengan RMI, komputer klien bisa memanggil remote object yang berada di server. Server juga bisa
menjadi klien dari suatu remote object, sehingga komputer klien bisa menjalankan method-method tertentu
di komputer server. Dengan menggunakan RMI, program yang dijalankan di komputer klien bisa berupa
applet, maupun berupa aplikasi.
Program RMI memerlukan remote interface, kelas-kelas implementasi dari remote interface tesebut
(implementation class), dan program rmiregistry yang sedang dijalankan di komputer server (rmiregistry
terdapat dalam paket JDK).

Pada paket Whiteboard, RMI digunakan untuk program-program Chat, Whiteboard dan Projector. Dalam
program Chat, RMI digunakan untuk memasukkan input dari para pengguna, baik dosen maupun
mahasiswa, ke komputer server. Setelah itu, server akan mengeluarkan output berupa hasil percakapan
antar pengguna kepada semua komputer klien. Pada Whiteboard, penggunaan RMI terletak pada
pengiriman graphics dan image antara komputer server dan klien. Sedangkan pada Projector, RMI
digunakan agar dosen, sebagai klien, bisa mengatur indeks tampilan pada Projector yang berlangsung pada
komputer mahasiswa, yang berfungsi sebagai klien lainnya.

Kelas WhiteboardClient adalah tampilan yang dimunculkan pada komputer klien, sedangkan penggunaan
RMI dilakukan oleh kelas WhiteboardClientManifestImplementation. Kelas
WhiteboardClientManifestImplementation merupakan kelas yang mengimplementasikan interface
WhiteboardClientManifest. Dalam konsep RMI, interface WhiteboardClientManifest ini adalah remote
interface untuk klien. Sedangkan pada server dijalankan program WhiteboardServer Implementation yang
berupa implementasi dari interface WhiteboardServer. WhiteboardServer juga merupakan remote interface.
Program WhiteboardServer Implementation ini bersifat public, sehingga bisa diakses oleh klien.
Remote interface harus meng-extend interface java.rmi.Remote. Setiap method pada remote interface harus
meng-throw java.rmi.RemoteException.

WhiteboardClientManifestImplementation dan WhiteboardServer Implementation adalah implementation


classes. Implementation class merupakan kelas yang mengimplementasikan remote interface.
Implementation class perlu mendefinisikan konstruktor untuk remote object, sekaligus membuat instance
dari remote object tersebut. Implementation class juga menyediakan implementasi dari method yang bisa
dijalankan secara remote. Selain itu implementation class juga perlu membuat dan menjalankan Security
Manager. Tambahan lagi, implementation class juga harus me-register atau mendaftarkan paling tidak
sebuah remote object pada RMI remote object registry. Pada program implementation class, semua
argumen untuk remote method dan semua return value dari remote method bisa berupa object bertipe apa
saja, asal object-object tersebut mengimplementasi interface java.io.Serializable.

Untuk remote objects, penyampaiannya dilakukan dengan pass by reference. Referensi untuk suatu remote
object sebenarnya merupakan referensi untuk sebuah stub, yaitu proxy pada sisi klien untuk remote object.
Pada method main di implementation class, diperlukan pembuatan dan pemasangan sebuah security
manager, yang bisa berupa RMISecurityManager, ataupun security manager yang sebelumnya telah
didefinisikan dulu secara khusus oleh sang programmer. Security manager ini diperlukan untuk menjaga
agar kelas-kelas yang dipakai tidak melakukan operasi-operasi yang bisa mengancam keamanan sistem.
Jika dalam method main tidak terdapat security manager, RMI tidak bisa digunakan karena kelas-kelas
RMI tidak akann diijinkan untuk di-load.

Dalam method main, suatu instance dari remote object harus diciptakan. Konstruktor akan menghasilkan
remote object, dan sebagai hasilnya, setelah konstruktor dipakai untuk menciptakan instance, sebuah
remote object akan siap untuk mendengar method-method panggilan dari komputer klien.

Agar komputer klien bisa menjalankan method di remote object, klien sebelumnya harus membuat referensi
kepada remote object tersebut. Biasanya referensi diambil dengan cara dijadikan parameter dari suatu
remote method, ataupun diambil dari return value suatu remote method.

Untuk keperluan bootstrapping, RMI menyediakan registry yang bisa mem-bind suatu URL ke remote
object. Bentuk atau format dari URL tersebut adalah : //host/nama_object, dan nama_object harus berupa
nama berbentuk string. Setelah suatu remote object diregistrasi di server, komputer-komputer klien bisa
mencari nama objek tersebut, mengambil referensi ke remote-object, dan seterusnya menjalankan method
pada objek tersebut.

RMI akan membuat referensi ke stub dari remote object dengan referensi yang ditentukan oleh argumen
kedua dari perintah Naming.rebind(URL, argumen ke-2). Objek implementasi yang ada di komputer klien
(remote implementation objects) akan selalu berada di komputer klien, jadi sewaktu klien melakukan
pencarian ke remote object yang ada ada di registry di server, komputer server akan melakukan referensi ke
stub yang berada di komputer klien.

Protokol yang dipakai oleh RMI adalah Java Object Serialization dan HTTP. Protokol Object Serialization
digunakan unntuk meneruskan panggilan klien dan mentransfer data. Protokol HTTP digunakan untuk
mem-"POST" sebuah remote method invocation dan mengembalikan data keluaran untuk situasi ketika
komputer klien dan server dipisahkan oleh firewall.

Contoh implementasi dari RMI di antaranya :


• Perusahaan programming Avitek yang berlokasi di Amerika Serikat, membuat program sistem
accounting untuk intranet yang memungkinkan klien untuk meng-update dan mengubah data dengan
mudah. Tujuan dari proyek ini adalah untuk membuat dan mendukung pembuatan dari bukti nyata
untuk konsep penggunaan Java yang dikombinasikan dengan database.
Perusahaan CEAS Consulting yang menyediakan jasa custom re-engineering dan otomasi proses untuk
perusahaan-perusahaan manufakturing dan teknik, telah membuat program sistem terdistribusi untuk klien
mereka. Gambaran program mereka adalah seperti berikut :

Anda mungkin juga menyukai