{"id":5137,"date":"2025-08-06T01:54:19","date_gmt":"2025-08-05T18:54:19","guid":{"rendered":"https:\/\/www.linuxid.net\/istilah\/?p=5137"},"modified":"2025-08-06T01:54:19","modified_gmt":"2025-08-05T18:54:19","slug":"remote-method-invocation-rmi","status":"publish","type":"post","link":"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/","title":{"rendered":"Remote Method Invocation (RMI)"},"content":{"rendered":"<h2>Apa itu Remote Method Invocation (RMI)?<\/h2>\n<p><i>Remote Method Invocation<\/i> atau disingkat RMI adalah sebuah <a href=\"https:\/\/www.linuxid.net\/istilah\/application-program-interface-API\/\">API<\/a> di dalam bahasa dan lingkungan pengembangan <a href=\"https:\/\/www.linuxid.net\/istilah\/Java\/\">Java<\/a>. RMI memungkinkan <a href=\"https:\/\/www.linuxid.net\/istilah\/object\/\">objek<\/a> pada satu komputer atau <a href=\"https:\/\/www.linuxid.net\/istilah\/Java-virtual-machine-JVM\/\">JVM<\/a> (Java Virtual Machine) berkomunikasi dengan objek lain yang berjalan di JVM berbeda dalam jaringan terdistribusi. Bisa dibilang, RMI itu cara mudah untuk bikin <a href=\"https:\/\/www.linuxid.net\/istilah\/distributed-applications-distributed-apps\/\">aplikasi Java terdistribusi<\/a> cukup lewat pemanggilan method biasa.<\/p>\n<p>RMI ini versi Java-nya <a href=\"https:\/\/www.linuxid.net\/istilah\/Remote-Procedure-Call-RPC\/\">Remote Procedure Call (RPC)<\/a>, tapi punya kelebihan: bisa ngirim objek bersamaan dengan permintaan. Komunikasi antar <a href=\"https:\/\/www.linuxid.net\/istilah\/application\/\">aplikasi<\/a> remote ini dilakukan lewat dua objek utama: stub dan skeleton. RMI udah termasuk dalam paket bawaan Java Development Kit (<a href=\"https:\/\/www.linuxid.net\/istilah\/Java-Development-Kit-JDK\/\">JDK<\/a>) dari Sun Microsystems lewat package <code>java.rmi<\/code>.<\/p>\n<p>Secara teknis, permintaan RMI di Java itu sama kayak kita memanggil method biasa dari objek lokal. Bedanya, objeknya berada di komputer lain. Objek ini bisa mengirim data atau perilaku ke remote computer. Sun menyebut ini sebagai \u201cmoving behavior\u201d, dan proses ngoper objeknya disebut <i>object serialization<\/i>.<\/p>\n<p>Contohnya, user di komputer A mengisi form pengeluaran. Program Java di A bisa pakai RMI untuk ngobrol ke program Java di komputer B, yang punya aturan terbaru soal laporan pengeluaran. Komputer B ngasih balik objek berisi aturan terbaru, dan program di A langsung bisa validasi form sesuai kebijakan terbaru \u2014 tanpa harus update program di A. Cukup update di B aja.<\/p>\n<h2>Kenapa Perlu Remote Method Invocation?<\/h2>\n<p>Dalam pengembangan aplikasi Java yang terdistribusi, kita butuh akses ke method yang ada di remote server. Kita juga perlu bisa komunikasi dengan objek remote dan load <a href=\"https:\/\/www.linuxid.net\/istilah\/class\/\">class<\/a> miliknya. Nah, semua itu dijembatani oleh RMI.<\/p>\n<p>RMI memungkinkan komunikasi <a href=\"https:\/\/www.linuxid.net\/istilah\/client-server\/\">client-server<\/a> lewat internet. Client bisa kirim request ke server, lalu server membalas sesuai logic-nya. Dengan RMI, programmer Java bisa bikin objek remote yang dapat diakses publik. Objek ini bisa dipanggil dari client cukup dengan method biasa. Komunikasi ini bisa dilakukan via <a href=\"https:\/\/www.linuxid.net\/istilah\/URL\/\">URL<\/a> dan <a href=\"https:\/\/www.linuxid.net\/istilah\/HTTP-Hypertext-Transfer-Protocol\/\">HTTP<\/a>.<\/p>\n<figure class=\"main-article-image full-col\" data-img-fullsize=\"https:\/\/www.theserverside.com\/rms\/onlineimages\/client_and_server_requests_and_responses-f.png\/\"><img decoding=\"async\" class=\"lazy\" src=\"https:\/\/www.theserverside.com\/rms\/onlineimages\/client_and_server_requests_and_responses-f_mobile.png\" srcset=\"https:\/\/www.theserverside.com\/rms\/onlineimages\/client_and_server_requests_and_responses-f_mobile.png 960w,https:\/\/www.theserverside.com\/rms\/onlineimages\/client_and_server_requests_and_responses-f.png 1280w\" alt=\"Depiction of client and server requesting and receiving information\" width=\"559\/\" height=\"251\" \/><figcaption><i class=\"icon pictures\" data-icon=\"z\/\"><\/i>Client minta data ke server, dan server merespons, itulah model client-server.<\/figcaption><div class=\"main-article-image-enlarge\/\"><\/div>\n<\/figure>\n<p>RMI dirancang untuk mempertahankan model objek Java di jaringan, tetap aman, tetap konsisten, dan tetap enak dipakai \u2014 baik untuk objek lokal maupun remote.<\/p>\n<h2>Model Implementasi Tiga Layer<\/h2>\n<p>RMI diimplementasikan lewat tiga lapisan utama:<\/p>\n<p><b>1. Stub Program.<\/b> Stub berada di sisi client, dan terlihat seperti objek asli buat program yang memanggil. Di sisi server-nya ada pasangan yang disebut skeleton. Stub juga bisa disebut <i>proxy<\/i>.<\/p>\n<p><b>2. Remote Reference Layer (RRL).<\/b> Layer ini menangani referensi objek remote. Bisa satu target, bisa multicast. Dia juga yang mengatur aliran request dan response.<\/p>\n<p><b>3. Transport Connection Layer.<\/b> Layer ini yang ngurus koneksi jaringan antara stub di client dan skeleton di server. Dia nge-handle request biar bisa nyebrang dari client ke server dan sebaliknya.<\/p>\n<h2>Stub dan Skeleton di RMI<\/h2>\n<p>Stub dan skeleton adalah dua objek RMI yang memfasilitasi komunikasi antar JVM. Stub itu gateway-nya client, sementara skeleton gateway-nya server.<\/p>\n<p>Ketika method dipanggil lewat stub, stub bakal konek ke JVM, ngirim parameter, nunggu hasil atau exception, lalu ngasih balik ke caller.<\/p>\n<p>Skeleton menerima request, baca parameternya, panggil objek sesungguhnya di server, lalu kirim hasilnya ke client.<\/p>\n<p>Jadi dalam aplikasi RMI, kita butuh dua program: satu di client, satu di server. Di server dibuat objek remote, lalu referensinya bisa diakses oleh program client. RRL menghubungkan client dan server seolah-olah mereka terkoneksi secara <a href=\"https:\/\/www.linuxid.net\/istilah\/virtual\/\">virtual<\/a>.<\/p>\n<h2>Cara Kerja Aplikasi RMI<\/h2>\n<p>Misalnya, ada aplikasi word processor yang terinstall di server. Client cukup klik ikon di desktop atau lewat command line untuk akses. Saat klik, client mengirim request ke objek remote di server.<\/p>\n<p>Request ini lewat stub \u2192 masuk ke RRL di client \u2192 diteruskan ke RRL di server \u2192 dikirim ke skeleton \u2192 objek di server dijalankan \u2192 hasilnya dikirim balik ke client. User bisa langsung pakai <a href=\"https:\/\/www.linuxid.net\/istilah\/software\/\">software<\/a> itu di komputernya tanpa install lokal.<\/p>\n<h2>Marshaling dan Unmarshaling di RMI<\/h2>\n<p>Waktu stub di client ngirim parameter ke JVM remote, proses ini disebut <i>marshaling<\/i>. Parameternya bisa berupa tipe primitif atau objek. Biasanya dibungkus dulu jadi satu paket (termasuk header dan serialisasi untuk objek).<\/p>\n<p>Skeleton di server juga melakukan marshaling saat mengirim hasil kembali ke client.<\/p>\n<p>Begitu hasil sampai ke stub, proses <i>unmarshaling<\/i> dimulai \u2014 yaitu membuka kembali data dan memberikan hasil ke pemanggil. Sama juga saat server nerima paket parameter dari client.<\/p>\n<h2>RMI Registry<\/h2>\n<p>RMI Registry adalah namespace di sisi server yang nyimpen semua objek remote. Tiap objek punya nama unik. Client bisa ambil referensinya lewat <code>lookup()<\/code> dengan nama yang udah di-<code>bind()<\/code> atau <code>reBind()<\/code>.<\/p>\n<p>Sebelum jalanin registry, pastikan window\/shell tempat kamu jalanin <code>rmiregistry<\/code> nggak punya variabel CLASSPATH yang mengarah ke class remote. Kalau registry nemu class-nya di awal, dia nggak bakal load ulang dari server VM, dan client jadi nggak bisa <a href=\"https:\/\/www.linuxid.net\/istilah\/downloading\/\">download<\/a> class remote itu.<\/p>\n<p>Secara default, registry ini jalan di <a href=\"https:\/\/www.linuxid.net\/istilah\/port\/\">port<\/a> 1099, tapi kamu bisa ganti asal konsisten antara client dan server <a href=\"https:\/\/www.linuxid.net\/istilah\/code\/\">code<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apa itu Remote Method Invocation (RMI)? Remote Method Invocation atau disingkat RMI adalah sebuah API di dalam bahasa dan lingkungan pengembangan Java. RMI memungkinkan objek pada satu komputer atau JVM (Java Virtual Machine) berkomunikasi dengan objek lain yang berjalan di JVM berbeda dalam jaringan terdistribusi. Bisa dibilang, RMI itu cara mudah untuk bikin aplikasi Java [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[271],"tags":[168,167],"class_list":["post-5137","post","type-post","status-publish","format-standard","hentry","category-software-development","tag-back-end-and-middle-tier-frameworks","tag-front-end"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Apa itu Remote Method Invocation (RMI)? - Istilah Komputer<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apa itu Remote Method Invocation (RMI)? - Istilah Komputer\" \/>\n<meta property=\"og:description\" content=\"Apa itu Remote Method Invocation (RMI)? Remote Method Invocation atau disingkat RMI adalah sebuah API di dalam bahasa dan lingkungan pengembangan Java. RMI memungkinkan objek pada satu komputer atau JVM (Java Virtual Machine) berkomunikasi dengan objek lain yang berjalan di JVM berbeda dalam jaringan terdistribusi. Bisa dibilang, RMI itu cara mudah untuk bikin aplikasi Java [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/\" \/>\n<meta property=\"og:site_name\" content=\"Istilah Komputer\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-05T18:54:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.theserverside.com\/rms\/onlineimages\/client_and_server_requests_and_responses-f_mobile.png\" \/>\n<meta name=\"author\" content=\"adhit\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"adhit\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/\",\"url\":\"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/\",\"name\":\"Apa itu Remote Method Invocation (RMI)? - Istilah Komputer\",\"isPartOf\":{\"@id\":\"https:\/\/linuxid.net\/istilah\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.theserverside.com\/rms\/onlineimages\/client_and_server_requests_and_responses-f_mobile.png\",\"datePublished\":\"2025-08-05T18:54:19+00:00\",\"author\":{\"@id\":\"https:\/\/linuxid.net\/istilah\/#\/schema\/person\/ec7c6c711087fb70886ff5a4fe68e83d\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/#primaryimage\",\"url\":\"https:\/\/www.theserverside.com\/rms\/onlineimages\/client_and_server_requests_and_responses-f_mobile.png\",\"contentUrl\":\"https:\/\/www.theserverside.com\/rms\/onlineimages\/client_and_server_requests_and_responses-f_mobile.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/linuxid.net\/istilah\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Remote Method Invocation (RMI)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/linuxid.net\/istilah\/#website\",\"url\":\"https:\/\/linuxid.net\/istilah\/\",\"name\":\"Istilah Komputer\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/linuxid.net\/istilah\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/linuxid.net\/istilah\/#\/schema\/person\/ec7c6c711087fb70886ff5a4fe68e83d\",\"name\":\"adhit\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/linuxid.net\/istilah\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.linuxid.net\/istilah\/wp-content\/litespeed\/avatar\/808829c8eb1b70c161b392916104c2ba.jpg?ver=1781427353\",\"contentUrl\":\"https:\/\/www.linuxid.net\/istilah\/wp-content\/litespeed\/avatar\/808829c8eb1b70c161b392916104c2ba.jpg?ver=1781427353\",\"caption\":\"adhit\"},\"sameAs\":[\"https:\/\/linuxid.net\/istilah\"],\"url\":\"https:\/\/www.linuxid.net\/istilah\/author\/xsandradietsax\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Apa itu Remote Method Invocation (RMI)? - Istilah Komputer","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/","og_locale":"id_ID","og_type":"article","og_title":"Apa itu Remote Method Invocation (RMI)? - Istilah Komputer","og_description":"Apa itu Remote Method Invocation (RMI)? Remote Method Invocation atau disingkat RMI adalah sebuah API di dalam bahasa dan lingkungan pengembangan Java. RMI memungkinkan objek pada satu komputer atau JVM (Java Virtual Machine) berkomunikasi dengan objek lain yang berjalan di JVM berbeda dalam jaringan terdistribusi. Bisa dibilang, RMI itu cara mudah untuk bikin aplikasi Java [&hellip;]","og_url":"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/","og_site_name":"Istilah Komputer","article_published_time":"2025-08-05T18:54:19+00:00","og_image":[{"url":"https:\/\/www.theserverside.com\/rms\/onlineimages\/client_and_server_requests_and_responses-f_mobile.png","type":"","width":"","height":""}],"author":"adhit","twitter_card":"summary_large_image","twitter_misc":{"Ditulis oleh":"adhit","Estimasi waktu membaca":"4 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/","url":"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/","name":"Apa itu Remote Method Invocation (RMI)? - Istilah Komputer","isPartOf":{"@id":"https:\/\/linuxid.net\/istilah\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/#primaryimage"},"image":{"@id":"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/#primaryimage"},"thumbnailUrl":"https:\/\/www.theserverside.com\/rms\/onlineimages\/client_and_server_requests_and_responses-f_mobile.png","datePublished":"2025-08-05T18:54:19+00:00","author":{"@id":"https:\/\/linuxid.net\/istilah\/#\/schema\/person\/ec7c6c711087fb70886ff5a4fe68e83d"},"breadcrumb":{"@id":"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/#primaryimage","url":"https:\/\/www.theserverside.com\/rms\/onlineimages\/client_and_server_requests_and_responses-f_mobile.png","contentUrl":"https:\/\/www.theserverside.com\/rms\/onlineimages\/client_and_server_requests_and_responses-f_mobile.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.linuxid.net\/istilah\/remote-method-invocation-rmi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/linuxid.net\/istilah\/"},{"@type":"ListItem","position":2,"name":"Remote Method Invocation (RMI)"}]},{"@type":"WebSite","@id":"https:\/\/linuxid.net\/istilah\/#website","url":"https:\/\/linuxid.net\/istilah\/","name":"Istilah Komputer","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/linuxid.net\/istilah\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":"Person","@id":"https:\/\/linuxid.net\/istilah\/#\/schema\/person\/ec7c6c711087fb70886ff5a4fe68e83d","name":"adhit","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/linuxid.net\/istilah\/#\/schema\/person\/image\/","url":"https:\/\/www.linuxid.net\/istilah\/wp-content\/litespeed\/avatar\/808829c8eb1b70c161b392916104c2ba.jpg?ver=1781427353","contentUrl":"https:\/\/www.linuxid.net\/istilah\/wp-content\/litespeed\/avatar\/808829c8eb1b70c161b392916104c2ba.jpg?ver=1781427353","caption":"adhit"},"sameAs":["https:\/\/linuxid.net\/istilah"],"url":"https:\/\/www.linuxid.net\/istilah\/author\/xsandradietsax\/"}]}},"_links":{"self":[{"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/posts\/5137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/comments?post=5137"}],"version-history":[{"count":1,"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/posts\/5137\/revisions"}],"predecessor-version":[{"id":6144,"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/posts\/5137\/revisions\/6144"}],"wp:attachment":[{"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/media?parent=5137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/categories?post=5137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/tags?post=5137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}