Selasa, 09 Desember 2014

Proses sistem terdistribusi (Bab 3 SISTEM TERDISTRIBUSI)

Secara tidak langsung, proses merupakan program yang sedang dieksekusi. Silberschatz: suatu proses adalah lebi hdari sebuah kode program, yang terkadang disebut text section.
Thread
Thread adalah sebuah alur kontrol dari sebuah proses. Kontrol thread tunggal ini hanya memungkinkan proses untuk menjalankan satu tugas pada satu waktu. Banyak sistem operasi modern telah memiliki konsep yang dikembangkan agar memungkinkan sebuah proses untuk memiliki eksekusi multi-threads, agar dapat secara terus menerus mengetik dan menjalankan pemeriksaan ejaan didalam proses yang sama, maka sistem operasi tersebut memungkinkan proses untuk menjalankan lebih dari satu tugas pada satu waktu. Suatu proses yang multithreaded mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama.
Thread merupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread_ID,program counterregister set, dan stack. Sebuah thread berbagi code sectiondata section, dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebut lightweight process. Sebuah proses tradisional atauheavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali. Perbedaan antara proses dengan thread tunggal dan proses dengan thread yang banyak adalah proses dengan thread banyak dapat mengerjakan lebih dari satu tugas pada satu satuan waktu.
Keuntungan Thread
Keuntungan dari program yang multithreading dapat dipisah menjadi empat kategori:
·         Responsi: Membuat aplikasi yang interaktif menjadi multithreading dapat membuat sebuah program terus berjalan meski pun sebagian dari program tersebut diblok atau melakukan operasi yang panjang, karena itu dapat meningkatkan respons kepada pengguna. Sebagai contohnya dalam web browseryang multithreading, sebuah thread dapat melayani permintaan pengguna sementara thread lain berusaha menampilkan image.
·         Berbagi sumber dayathread berbagi memori dan sumber daya dengan threadlain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.
·         Ekonomi: dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan sumber daya proses yang memilikinya maka akan lebih ekonomis untuk membuat dan context switch thread. Akan susah untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan thread. Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan pembuatan thread, dan context switch proses 5 kali lebih lama dibandingkan context switch thread.
Model-model Multithreading:
·         Model Many-to-OneModel ini memetakan beberapa thread tingkatan pengguna ke sebuah thread. tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna sehingga efisien. Hanya satu thread pengguna yang dapat mengaksesthread kernel pada satu saat. Jadi Multiple thread tidak dapat berjalan secara paralel pada multiprosesor. Contoh: Solaris Green Threads dan GNU Portable Threads.
·         Model One-to-OneModel ini memetakan setiap thread tingkatan pengguna ke setiap thread. Ia menyediakan lebih banyak concurrency dibandingkan modelMany-to-One. Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini ialah setiap pembuatan thread pengguna memerlukan tambahan thread kernel. Karena itu, jika mengimplementasikan sistem ini maka akan menurunkan kinerja dari sebuah aplikasi sehingga biasanya jumlah threaddibatasi dalam sistem. Contoh: Windows NT/XP/2000 , Linux, Solaris 9.
·         Model Many-to-ManyModel ini memultipleks banyak thread tingkatan pengguna ke thread kernel yang jumlahnya sedikit atau sama dengan tingkatan pengguna. Model ini mengizinkan developer membuat thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu. Keuntungan dari sistem ini ialah kernel thread yang bersangkutan dapat berjalan secara paralel pada multiprosessor.
Pembatalan Thread (Thread Cancellation)
Thread Cancellation ialah pembatalan thread sebelum tugasnya selesai. Umpamanya, jika dalam program Java hendak mematikan Java Virtual Machine (JVM). Sebelum JVM dimatikan, maka seluruh thread yang berjalan harus dibatalkan terlebih dahulu. Contoh lain adalah di masalah search. Apabila sebuah thread mencari sesuatu dalamdatabase dan menemukan serta mengembalikan hasilnya, thread sisanya akan dibatalkan. Thread yang akan diberhentikan biasa disebut target thread.
Pemberhentian target Thread dapat dilakukan dengan 2 cara:
1.      Asynchronous cancellationSuatu thread seketika itu juga membatalkan target thread.
2.      Deferred cancellationSuatu thread secara periodik memeriksa apakah ia harus batal, cara ini memperbolehkan target thread untuk membatalkan dirinya secara terurut.
Penjadwalan Thread
Begitu dibuat, thread baru dapat dijalankan dengan berbagai macam penjadwalan. Kebijakan penjadwalanlah yang menentukan setiap proses, di mana proses tersebut akan ditaruh dalam daftar proses sesuai proritasnya dan bagaimana ia bergerak dalam daftar proses tersebut.
Untuk menjadwalkan thread, sistem dengan model mulithreading many to many ataumany to one menggunakan:
·         Process Contention Scope (PCS). Pustaka thread menjadwalkan thread pengguna untuk berjalan pada LWP (lightweight process) yang tersedia.
·         System Contention Scope (SCS). SCS berfungsi untuk memilih satu dari banyakthread , kemudian menjadwalkannya ke satu thread tertentu(CPU / Kernel).
·         Client – Server
Server adalah komputer yang dapat memberikan service ke client, sedangkan clientadalah komputer yang mengakses beberapa service yang ada di server. Ketika clientmembutuhkan suatu service yang ada di server, dia akan mengirim request kepadaserver lewat jaringan. Jika request tersebut dapat dilaksanakan, maka server akan mengirim balasan berupa service yang dibutuhkan untuk saling berhubungan menggunakan SocketSocket adalah sebuah endpoint untuk komunikasi didalam jaringan.
Model Client-Server
Ada beberapa model client/server yang penting untuk diketahui. Dimulai dari arsitektur mainframe hingga arsitektur client/server.
·        Arsitektur Mainframe
Pada arsitektur ini, terdapat sebuah komputer pusat (host) yang memiliki sumber daya yang sangat besar, baik memori, processor maupun media penyimpanan. Melalui komputer terminal, pengguna mengakses sumber daya tersebut. Komputer terminal hanya memiliki monitor/keyboard dan tidak memiliki CPU. Semua sumber daya yang diperlukan terminal dilayani oleh komputer host.
·        Arsitektur File Sharing
Pada arsitektur ini komputer server menyediakan file-file yang tersimpan di media penyimpanan server yang dapat diakses oleh pengguna. Arsitektur file sharing memiliki keterbatasan, terutama jika jumlah pengakses semakin banyak serta ukuran file yang di shaing sangat besar. Hal ini dapat mengakibatkan transfer data menjadi lambat. Model ini populer pada tahun 1990-an.
·        Arsitektur Client/Server
Karena keterbatasan sistem file sharing, dikembangkanlah arsitektur client/server. Salah satu hasilnya yaitu berupa software database server yang menggantikan software database berbasis file server. Dikenalkan pula RDBMS (Relational Database Management System). Dengan arsitektur ini, query data ke server dapat terlayani dengan lebih cepat karena yang ditransfer bukanlah file, tetapi hanyalah hasil dari query tersebut. RPC (Remote Procedure Calls) memegang peranan penting pada arsitektur client/server.
·        Model Two-tier
Model Two-tier terdiri dari tiga komponen yang disusun menjadi dua lapisan: client(yang meminta service) dan server (yang menyediakan service). Tiga komponen tersebut yaitu :
·         User Interface, yaitu antar muka program aplikasi yang berhadapan dan digunakan langsung oleh user.
·         Manajemen proses
·         Database
Model ini memisahkan peranan user interface dan database dengan jelas, sehingga terbentuk dua lapisan.
·        Model Three-tier
Pada model ini disisipkan satu layer tambahan diantara user interface tier dan database tier. Tier tersebut dinamakan middle-tier. Middle-Tier terdiri dari bussiness logic dan rules yang menjembatani query user dan database, sehingga program aplikasi tidak bisa mengquery langsung ke database server, tetapi harus memanggil prosedur-prosedur yang telah dibuat dan disimpan pada middle-tier.
·         Agent
Software Agent adalah entitas perangkat lunak yang didedikasikan untuk tujuan tertentu yang memungkinkan user untuk mendelegasikan tugasnya secara mandiri, selanjutnya software agent nantinya disebut agent saja. Agent bisa memiliki ide sendiri mengenai bagaimana menyelesaikan suatu pekerjaan tertentu atau agenda tersendiri.
Karakteristik dari Agen:
1.      Autonomy
2.      Intelligence, Reasoning, dan Learning
3.      Mobility dan Stationary.
4.      Delegation
5.      Reactivity
6.      Proactivity dan Goal-Oriented
7.      Communication and Coordination Capability
Bahasa Pemrograman yang digunakan
Bahasa pemrograman yang dipakai untuk tahap implementasi dari software agent, sangat menentukan keberhasilan dalam implementasi agent sesuai dengan yang diharapkan. Diantaranya yaitu :
1.      Object-Orientedness:
Karena agent adalah berhubungan dengan obyek, bahkan beberapa peneliti menganggap agent adalah obyek yang aktif, maka juga agent harus diimplementasikan kedalam pemrorgaman yang berorientasi obyek (object-oriented programming language).
2.      Platform Independence:
Seperti sudah dibahas pada bagian sebelumnya, bahwa agent hidup dan berjalan diberbagai lingkungan. Sehingga idealnya bahasa pemrograman yang dipakai untuk implementasi adalah yang terlepas dari platform, atau dengan kata lain program tersebut harus bisa dijalankan di platform apapun (platform independence).
3.      Communication Capability:
Pada saat berinteraksi dengan agent lain dalam suatu lingkungan jaringan (network environment), diperlukan kemampuan untuk melakukan komunikasi secara fisik. Sehingga diperlukan bahasa pemrograman yang dapat mensupport pemrograman yang berbasis network dan komunikasi.
4.      Security:
Faktor keamanan (security) adalah factor yang sangat penting dalam memilih bahasa pemrorgaman untuk implementasi software agent. Terutama untuk mobil agent, diperlukan bahasa pemrograman yang mensupport level-level keamanan yang bisa membuat agent bergerak dengan aman.
5.      Code Manipulation:
Beberapa aplikasi software agent memerlukan manipulasi kode program secara runtime, sehingga diperlikan bahasa pemrograman untuk software agent yang dapat menangani masalah runtime tersebut.
Dari karakteristik di atas dapat disimpulkan bahwa bahasa pemrograman yang layak untuk mengimplementasikan software agent adalah sebagai berikut :
·         Java
·         Telescript
·         Tcl/Tk, Safe-Tcl, Agent-Tcl

Komunikasi dalam sistem terdistribusi (Bab 2 SISTEM TERDISTRIBUSI)

Pada bab ini akan dibahas bagaimana komunikasi antara object2 dalam system terdistribusi, khusus nya dengan menggunakan RMI (Remod Method Invokation) dan RPC (Remote Procedure Call). RMI dan RPC berbasiskan metode request dan reply.


Protokol
Protokol adalah sebuah aturan atau standar yang mengatur atau mengijinkan terjadinya hubungan, komunikasi, dan perpindahan data antara dua atau lebih titik komputer. Protokol dapat diterapkan pada perangkat keras, perangkat lunak atau kombinasi dari keduanya. Pada tingkatan yang terendah, protokol mendefinisikan koneksi perangkat keras.
Dahulu, komunikasi antar komputer dari vendor yang berbeda adalah sangat sulit dilakukan, karena mereka mengunakan protokol dan format data yang berbeda-beda. Sehingga International Standards Organization (ISO) membuat suatu arsitektur komunikasi yang dikenal sebagai Open System Interconnection (OSI), model yang mendefinisikan standar untuk menghubungkan komputer-komputer dari vendor-vendor yang berbeda. Model-OSI tersebut terbagi atas 7 layer.
Layer-layer tersebut disusun sedemikian sehingga perubahan pada satu layer tidak membutuhkan perubahan pada layer lain. Layer teratas (5, 6 and 7) adalah lebih cerdas dibandingkan dengan layer yang lebih rendah; Layer Application dapat menangani protocol dan format data yang sama yang digunakan oleh layer lain, dan seterusnya. Jadi terdapat perbedaan yang besar antara layer Physical dan layer Aplication.
Suatu permintaan, dihasilkan dari atas (contohnya Application Layer) diteruskan keenam layer di bawahnya yang setiap layer memiliki tugasnya masing – masing.
Physical Layer
Ini adalah layer yang paling sederhana berkaitan dengan electrical (dan optical) koneksi antar peralatan. Data biner dikodekan dalam bentuk yang dapat ditransmisi melalui media jaringan, sebagai contoh kabel, transceiver dan konektor yang berkaitan dengan layer Physical. Peralatan seperti repeater, hub dan network card adalah berada pada layer ini.
Data-link Layer
Layer ini sedikit lebih “cerdas” dibandingkan dengan layer physical, karena menyediakan transfer data yang lebih nyata. Sebagai penghubung antara media network dan layer protocol yang lebih high-level, layer data link bertanggung-jawab pada paket akhir dari data binari yang berasal dari level yang lebih tinggi ke paket diskrit sebelum ke layer physical. Akan mengirimkan frame (blok dari data) melalui suatu network.. Ethernet (802.2 & 802.3), Tokenbus (802.4) dan Tokenring (802.5) adalah protocol pada layer Data-link.
Network Layer
Tugas utama dari layer network adalah menyediakan fungsi routing sehingga paket dapat dikirim keluar dari segment network lokal ke suatu tujuan yang berada pada suatu network lain. IP, Internet Protocol, umumnya digunakan untuk tugas ini. Protocol lainnya seperti IPX, Internet Packet eXchange. Perusahaan Novell telah memprogram protokol menjadi beberapa, seperti SPX (Sequence Packet Exchange) & NCP (Netware Core Protocol). Protokol ini telah dimasukkan ke sistem operasi Netware. Beberaoa fungsi yang mungkin dilakukan oleh Layer Network :
Membagi aliran data biner ke paket diskrit dengan panjang tertentu
Mendeteksi Error
Memperbaiki error dengan mengirim ulang paket yang rusak
Mengendalikan aliran
Transport Layer
Layer transport data, menggunakan protocol seperti UDP, TCP dan/atau SPX (Sequence Packet eXchange, yang satu ini digunakan oleh NetWare, tetapi khusus untuk koneksi berorientasi IPX). Layer transport adalah pusat dari mode-OSI. Layer ini menyediakan transfer yang reliable dan transparan antara kedua titik akhir, layer ini juga menyediakan multiplexing, kendali aliran dan pemeriksaan error serta memperbaikinya.
Session Layer
Layer Session, sesuai dengan namanya, sering disalah artikan sebagai prosedur logon pada network dan berkaitan dengan keamanan. Layer ini menyediakan layanan ke dua layer diatasnya, Melakukan koordinasi komunikasi antara entiti layer yang diwakilinya. Beberapa protocol pada layer ini: NETBIOS: suatu session interface dan protocol, dikembangkan oleh IBM, yang menyediakan layanan ke layer presentation dan layer application. NETBEUI, (NETBIOS Extended User Interface), suatu pengembangan dari NETBIOS yang digunakan pada produk Microsoft networking, seperti Windows NT dan LAN Manager. ADSP (AppleTalk Data Stream Protocol). PAP (Printer Access Protocol), yang terdapat pada printer Postscript untuk akses pada jaringan AppleTalk.
Presentation Layer
Layer presentation dari model OSI melakukan hanya suatu fungsi tunggal: translasi dari berbagai tipe pada syntax sistem. Sebagai contoh, suatu koneksi antara PC dan mainframe membutuhkan konversi dari EBCDIC character-encoding format ke ASCII dan banyak faktor yang perlu dipertimbangkan. Kompresi data (dan enkripsi yang mungkin) ditangani oleh layer ini.
Application Layer
Layer ini adalah yang paling cerdas , gateway berada pada layer ini. Gateway melakukan pekerjaan yang sama seperti sebuah router, tetapi ada perbedaan diantara mereka. Layer Application adalah penghubung utama antara aplikasi yang berjalan pada satu komputer dan resources network yang membutuhkan akses padanya.
Network Protocol
Middleware dan aplikasi terdistribusi di implementasikan diatas protokol network.
Protocol diimplementasikan dalam beberapa lapisan (layer).
TCP dan UDP
TCP
TCP ( Transport Control Protocol) dan UDP (User Datagram Protocol)
adalah protokol transport yang berada di atas lapisan Internet Protocol (IP).
TCP adalah protocol yang handal, TCP dapat memastikan data yang
dikirimkan sampai ke tujuan begitu juga sebaliknya.
TCP menambahkan beberapa prosedur diatas layer internet protocol untuk
memastikan reliabilitas transport data :
Sequencing
Pada setiap transmisi data (paket) diberi nomor urut. Sehingga pada
titik tujuan tidak ada segmen yang diterima sampai semua segmen
pada urutan bawah belum di terima.
Flow Control
Pengirim tidak akan membanjiri penerima.Karena pengiriman didasarkan
pada periode acknowledgment yang di terima oleh pengirim yang berasal
dari penerima.
Retrasnmission dan duplicate handling
Apabila segmen tidak mendapatkan acknowledge dari penerima sampai waktu timeout yang ditentukan terlampaui maka pengirim akan mengirim ulang. Berdasarkan nomor urut penerima data dapat mendeteksi dan menolak kalau terjadi duplikasi.
Buffering
Digunakan untuk menyeimbangkan antara pengirim dan penerima. Kalau bu¤er pada penerima penuh, maka segmen yang datang akan putus, sehingga menyebabkan tidak ada acknowledge ke pengirim dan pengirim akan melakukan transmot ulang.
Checksum
Setiap segment membawa checksum. Apabila checksum segmen yang di terima tidak sesuai maka paket data tersebut akan di drop (dan kemudian akan di transmit ulang)
UDP
UDP tidak memberikan garansi seperti halnya yang di berikan oleh TCP.
 UDP tidak memberikan garansi terhadap pengiriman data Pada Internet Protocol paket data dapat drop karena suatu hal contohnya jaringan yang rusak, UDP tidak mempunyai mekanisme untuk menanggulangi hal tersebut.
 Kalau ingin menggunakan UDP sebagai protocol pengiriman yang handal, makamekanisme kehandalan yang diinginkan di lakukan pada layer aplikasi.
Komunikasi Request – Reply
Komunikasi antara proses dan objek pada sistem terdistribusi dilakukan melalui message passing.
Client melakukan :
1. Mengirim (request) pesan ke server
2. Menerima hasil (reply dari server)
Server melakukan :
1. Penerimaan pesan (request) dari client
2. Mengeksekusi permintaan dari client
3. Mengirim hasil (reply) ke client.
RPC dan RMI
Tujuan dari RPC dan RMI dibuat bagi programmer, agar computer yang terdistribusi terlihat seperti computer yang terpusat. Dan berguna untuk melihat sistem terdistribusi dari sisi pemrogramman.

RPC dan RMI berada pada Middleware
RMI (Remote Method Invocation)

Berikut ilustrasi yang terjadi pada metode RMI :
Programmer pada client menulis :
server_id.service(values_to_server,result_arguments);
———————————————————————-
Pada sisi server mempunyai fungsi sebagai berikut :
public service(in type1 arg from client; out type2 arg to_client)
{————};
Programmer pada client tidak mengetahui bahwa reply message yang didapatkan berasal dari server yang dikirim melalui jaringan.
Komponen-komponen dalam RMI (gambar diatas):
 Object A (client) : meminta layanan
 Object B (server) : menghantarkan layanan
 Proxy for B
- Ketika object A mempunyai remote reference ke object B, maka akan timbul objek Proxy B pada
hostobject A. Proxy terbuat ketika remote object reference digunakan pertama kali
– Proxy adalah perwakilan objek yang berada pada remote, dengan kata lain ketika terjadi invokasi dari A
ke  B ditangani seolah – olah hanya mengakses Proxy B.
– Ketika invokasi terjadi proxy menggunakan metode marshals untuk membungkus pesan yang akan dikirim
ke server. Dan setelah menerima hasil dari server proxy menggunakan metode unmarshal (membuka
bungkus) untuk kemudian diteruskan ke client (Object A)
 Skeleton for object B
- Pada sisi server, terdapat object kerangka (skeleton) yang berhubungan ke class, kalau object pada class
tersebut dapat diakses oleh
RMI.
– Skeletonmenerima pesan kemudianmelakukan unmarshal danmeneruskan ke method object yang dituju.
Dan kemudianmenunggu hasil dari object B dan kemudian membungkus hasil (unmarshal) dan kemudian
dikirimkan ke client (Objec A).
– Ada bagian dari skeleton B yang disebut dengan dispatcher. dispatcher menerima request dari
communication module, dan kemudian mengidentifikasi invokasi dan mengarahkan permintaan ke
corresponding method ( method pada skeleton yang berfungsi untuk berkomunikasi dengan object).
 Communication Modul (Modul Komunikasi)
-Communication modul pada client atau server bertanggung jawab dalam pertukaran pesan yang dilakukan melalui metode request dan reply.
 Remote Reference Module
- Bagian ini bertugas untuk menterjemahkan antara referensi objek lokal dan remote. Proses berkomunikasi antara mereka disimpan dalam remote object table. Yang mengenerate class untuk proxy dan skeleton adalah middleware. contoh : CORBA, Java RMI
Object A dan object B dipunyai oleh aplikasi (berada pada Application Layer) Remote Reference Modul dan Communication modul dimiliki oleh middleware. Proxy B dan Sekeleton B berada antara middleware dan aplikasi yang di generate oleh middleware. Langkah2 proses dengan RMI :
Urutan pemanggilan pada object client mengaktifkan method pada
proxy yang akan berhubungan dengan invoked method (method yang ter-invokasi) pada object B.
 Kemudian method yang ada pada proxy melakukan pembungkusan argumen
menjadi suatu pesan (marshalling) dan meneruskan ke modul
komunikasi.
 Berdasarkan pada remote reference yang didapat dari remote reference
modul,modul komunikasi memulai request dan reply protocol melalui network.
 Modul komunikasi pada servermenerima request dari client. Kemudian
berdasarkan referensi lokal yang diterima dari remote reference modul maka akan mengaktifkan method untuk berkomunikasi dengan object pada skeleton B (corresponding method).
 Method pada skeletonmeng-ekstrak (unmarshalling) argumen pada pesan
yang di terima dan mengaktifkan corresponding method (method yang berfungsi untuk melakukan komunikasi) pada object B (server).
 Setelah menerima hasil dari object B, method dari skeleton akan membungkus
hasil tersebut dalamsebuah pesan (marshalling) danmeneruskan pesan yang sudah dibungkus ke modul komunikasi.
 Modul komunikasimengrimkan pesan tersebut ke clientmelalui jaringan.
 Modul komunikasi pada client menerima hasil (reply) dari server dan
meneruskan ke corresponding method pada proxy.
 Kemudian proxy meng-ektrak hasil (unmarshalling) dan meneruskan
ke object A (client).
Contoh RMI dengan menggunakan Java RMI :
Server object akan mencetak “Hello Ruddy” ke layar & mengembalikan
pesan ke klien
Pada sisi server :
 Server Method
import java.rmi.*;
public interface SimpleInterface extends Remote {
String printMessage(String name) throws RemoteException;
}
 Server Object
import java.rmi.*;
import java.rmi.server.*;
public class SimpleServer extends UnicastRemoteObject implements SimpleInterfac
public SimpleServer() throws RemoteException { super(); }
public String printMessage(String name) throws RemoteException {
System.out.println(name);
return(Hello + name);
}
public static void main(String args[]) {
System.setSecurityManager(new RMISecurityManager());
try {
SimpleServer newServer = new SimpleServer();
System.out.println(SimpleServer attempting to
bind to the registry);
Naming.rebind(//ruddy.info:30010/SimpleServer,
newServer);
System.out.println(SimpleServer bound in the registry);
} catch(Exception e) {
System.out.println(SimpleServer error: + e.getMessage());
e.printStackTrace();
}}
}
Pada sisi client :
import java.rmi.*;
public class SimpleClient {
private static SImpleInterface server = null;
public static void main(String args[]) {
try {
server = (SimpleInterface)
Naming.lookup(//ruddy.info:30010/SimpleServer);
System.out.println(server.printMessage(Ruddy));
} catch(Exception e) {
System.out.println(SimpleClient error: + e.getMessage());
e.printStackTrace();
}}
}
RPC (Remote Procedure Call)
Proses nya kurang lebih sama dengan RMI. Kalau RMI kita mengenal Proxy
dan Skeleton, pada RPC dikenal dengan Stub (Client Stub dan Server Stub).
Remote Reference Module dan Communication Module berada pada tatanan sistem operasi.
Konsep Objek Terdistribusi dan Object Interface
Meskipun teknologi RPC ini relatif sudah memberikan kenyamanan bagi developer namun seiring dengan perkembangannya, sistem ini dinilai tidak efisien lagi.  Dalam membuat aplikasi client server, programmer masih harus membuat fungsi-fungsi yang sama untuk aplikasi yang berbeda. Kadang kala kode program yang sama digunakan dengan melakukan copy paste dan melakukan sedikit perubahan untuk menyesuaikan dengan aplikasi yang baru dibuat. Jika ada perubahan, fungsi tersebut dalam masing-masing aplikasi harus di update satu persatu lagi. Hal ini mengakibatkan perawatan program menjadi susah dan fungsi-fungsi tersebut dapat menjadi tidak konsisten satu sama lain.
CORBA
Common Object Request Broker Architecture (CORBA) merupakan standar yang dikeluarkan oleh Object Management Group (OMG). Spesifikasi CORBA ini berisi sebuah spesifikasi  infrastruktur yang disebut Object Request Broker (ORB) yang memungkinkan aplikasi klien untuk dapat berkomunikasi dengan obyek secara remote. Spesifikasi ini meliputi antarmuka program, protokol komunikasi dan model obyek atau layanan yang memungkinkan aplikasi yang ditulis dengan berbagai macam bahasa pemrograman.
CORBA membungkus kode program yang dibuat dengan bahasa pemrograman tertentu menjadi sebuah obyek yang ditambah dengan informasi mengenai kemampuan kode program dan cara mengaksesnya. Obyek tersebut dapat dipanggil oleh program lain melalui jaringan. CORBA menggunakan interface definition languange (IDL) untuk menunjukkan interface atau antarmuka yang dapat digunakan oleh program atau obyek lain. Dari IDL tersebut CORBA akan memetakannya ke implementasi yang lebih spesifik dari masing-masing bahasa pemrograman.
COM
Component Object Model (COM) adalah teknologi yang diciptakan oleh Microsoft untuk memungkinkan komunikasi antaraplikasi. Teknologi ini sudah  disediakan untuk beberapa platform tetapi kebanyakan digunakan untuk platform Windows. Teknologi ini sudah diperkenalkan oleh microsoft pada tahun 1993 tetapi baru populer pada tahun 1997. Perkembangan teknologi COM ini bermula dari teknologi OLE (Object Linking and Embedding) yang dibuat untuk memungkinkan aplikasi dapat saling bertukar data.
DCOM
Pada tahun 1996 diperkenalkan Distributed Component Object Model (DCOM) sebagai jawaban Microsoft atas CORBA. DCOM dibandingkan dengan COM memiliki  kelebihan mampu untuk terdistribusi dan berkomunikasi antarkomponen melalui jaringan. DCOM dan CORBA saling berkompetisi untuk menjadi standar dalam distribusi komponen melalui internet. Namun dibalik kesulitan dalam hal keamanan, sebuah browser yang berjalan menggunakan teknologi http sudah dapat menggantikan teknologi tsb.
RMI
Remote Method Invocation (RMI) adalah sebuah teknik pemanggilan method remote yang lebih secara umum lebih baik daripada RPC. RMI menggunakan paradigma pemrograman berorientasi obyek (Object Oriented Programming). RMI memungkinkan kita untuk mengirim obyek sebagai parameter dari remote method. Dengan dibolehkannya program Java memanggil method pada remote obyek, RMI membuat pengguna dapat mengembangkan aplikasi Java yang terdistribusi pada jaringan.
RMI menyediakan mekanisme dimana server dan client berkomunikasi dan memberikan informasi secara timbal balik. Aplikasi semacam ini seringkali disebut aplikasi objek terdistribusi
Langkah-Langkah Pembuatan Program dengan RMI
Dalam RMI, semua informasi tentang satu pelayanan server disediakan dalam suatu definisi remote interface. Dengan melihat pada definisi interface, seorang pemrogram dapat memberitahukan method apa yang dapat dikerjakan oleh server, meliputi data apa yang diterima dan data apa yang akan dikirim sebagai tanggapan.
Definisi yang ada pada remote interface menentukan karakteristik methods yang disediakan server yang dapat dilihat oleh client. Client programmer harus dapat mengetahui methods apa yang disediakan server dan bagaimana memanggilnya langsung dengan melihat ke remote interface. Client mendapatkan referensi ke remote object melalui RMI registry.
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 (atau applet) yang menggunakan remote interface
4. Mengkompilasi source files dan mem-buat stub and skeletons
5. Memulai (start) RMI registry
6. Menjalankan server dan client