Anda di halaman 1dari 5

Konsep Pemrograman Jaringan dengan Memanfaatkan Middleware CORBA-ORB ...

(Maman Somantri)

KONSEP PEMROGRAMAN JARINGAN DENGAN MEMANFAATKAN


MIDDLEWARE ORB (OBJECT REQUEST BROKER)
Maman Somantri
Jurusan Teknik elektro undip
Jl. Prof. Sudharto, Tembalang – Semarang
Email: mmsomantri@elektro.ft.undip.ac.id
http://www.elektro.undip.ac.id/mmsomantri

Abstrak ORB (Object Request Broker) dimiliki oleh arsitektur


Dalam pemrograman client server tingkat lanjut, atau framework pemrograman CORBA (Common
adalah memungkinkan untuk membangun sebuah Object Request Broker Architectur) dan JAVA, RMI
aplikasi dengan dasar platform pemrograman yang (Remothe Method Invocation) dimiliki oleh teknologi
berbeda-beda. Dalam pemrograman jaringan biasa / JAVA.
konvesional, maka tidak akan mampu untuk
mengkoneksikan dua atau lebih platform yang Pada tulisan ini akan dijelaskan konsep dan
berbeda. Misalnya ada dua buah server aplikasi implementasi pemrograman middleware ORB pada
yang dibangun oleh masing-masing Java dan C++, framework CORBA, dengan kasus client server
sedangkan client-nya dibangun oleh aplikasi delphi. berbeda platform pemrograman.
Untuk membangun aplikasi itu maka dibutuhkan Tulisan ini akan dibagi menjadi beberapa bagian.
sebuah lapisan yang bisa menghubungkan platform Bagian berikutnya adalah bagian II akan membahas
pemrograman yang berbeda, lapisan yang tentang middleware-middleware yang bisa
dimaksudkan adalah diistilahkan sebagai membangun aplikasi bisnis (EAI). Pada bagian ini
‘middleware’. Middleware pada tataran juga akan dibahasa CORBA-ORB serta arsitektur
implementasi merupakan sebuah paket program frameworknya. Pembahasan tentang konsep dan
instan yang dipakai pada suatu platform implementasi pemrograman dengan middleware ini
permograman tertentu, sedangkan pada tataran akan dibahas pada bagian III dan pada bagian IV
konsep, middleware mer upakan sebuah lapisan untuk akan dibahas tentang tinjauan kritis penggunaan
lalulintas penghubung komunikasi antar objek dari middleware dalam membangun aplikasi client server.
sistem yang berbeda. Ada beberapa jenis
middleware, seperti ORB (Object Request Broker), II. Midleware
RMI (Remote Method Invocation), dan MOM 2.1 Middleware dan Enterprise Application
(Message Oriented Middleware). Dalam tulisan ini Integration
akan dibahas tentang tinjauan konseptual untuk
membangun sebuah aplikasi dengan memanfaatkan Middleware adalah sebuah aplikasi yang secara logic
pemrograman jaringan dengan middleware. berada diantar a lapisan aplikasi (application layer)
Middleware yang akan digunakan adalah ORB dan lapisan data dari sebuah arsitektur layer-layer
(Object Request Broker). TCP/IP [1]. Middleware bisa juga disebut protokol.
Kata kunci : Middleware, ORB, CORBA Protokol komunikasi middleware mendukung
layanan komunikasi aras tinggi.
I. Pendahuluan Biasanya program middleware menyediakan layanan
pesan (messaging services ) sehingga aplikasi-aplikasi
Untuk membangun sebuah aplikasi client server multi yang berbeda-beda itu dapat berkomunikasi. Sistem
platform programming salah satu cara adalah dengan middleware mengikat aplikasi-aplikasi yang terpisah.
memanfaatkan middleware. Middleware bisa Penggunaannya dalam aplikasi bisnis dikenal sebagai
dijelaskan pada 2 tataran, yaitu tataran Enterprise Application Integration (EAI).
konsep/paradigma dan tataran aplikasi pemrograman. Middleware EAI membuat penghubung antara
Pada tataran konsep, middleware digunakan sebagai aplikasi-aplikasi dalam berbagai cara, namun secara
jembatan atau penghubung dua aplikasi atau lebih umum cara ini diistilahkan sebagai transformasi dan
yang memiliki perbedaan, middleware kadang routing data dan mengatur aliran proses bisnis. Ada
disebut sebagai plumbing karena middleware implikasi dalam hal ini bahwa aplikasi-aplikasi itu
digunakan untuk menghubungkan 2 bagian dari ber ada dalam sebuah dunia heterogenitas – perbedaan
sebuah aplikasi dan digunakan untuk melewatkan platform operasi, pemisahan model data dan
data diantara mereka. [1] penyimpan data, heterogenitas jaringan dan protokol
Pada tataran implementasi, middleware adalah komunikasi.
sebuah paket program instan yang digunakan untuk
menghubungkan dua program yang berbeda 2.2 Middleware ORB dalam framework CORBA
platforma atau produk/vendor.
Beberapa jenis middleware yang bisa digunakan CORBA (Common Object Request Broker
untuk pemrograman adalah ORB, RPC, RMI, DCE, Architecture)[2] adalah sebuah standar sistem
dan MOM. Produk Middleware biasanya di pakai terdistribusi yang dikembangkan oleh OMG (Object
oleh sebuah arsitektur atau framework pemrograman. Management Group), yaitu sebuah konsorsium yang

41
Transmisi, Vol. 10, No. 1, Desember 2005 : 41 – 45

terdiri dari lebih dari 800 perusahaan untuk membuat request ke berbagai macam objek. ORB ini
membantu dalam pemrograman objek-objek terletak diantara layer data dan layer aplikasi dalam
terdistribusi. CORBA adalah sebuah cara bagi objek- susunan arsitektur jaringan 7 layer model OSI. ORB
objek untuk melakukan interoperasi lintas jaringan. akan melakukan negosiasi antara pesan request dari
Sejak spesifikasi CORBA versi 1.2 diperkenalkan objek ke objek atau dari objek server ke sekumpulan
pada tahun 1991, CORBA memberikan sebuah data (data set). Tujuan CORBA adalah untuk
mekanisme standar bagi komunikasi antar objek membuat pemrograman lebih mudah dengan
lintas jaringan, kemudian spesifikasi CORBA membuat aplikasi berbasis CORBA yang sangat
tersebut berkembang dengan diperkenalkannya portable.
CORBA 2.0 di tahun 1994 dan CORBA 3.0 yang di- Untuk melihat lebih detail tentang arsitektur CORBA
release tahun 2000. Hal yang penting untuk dicatat dan ORB berada didalamnya, maka CORBA
bahwa CORBA hanya sebuah spesifikasi untuk memiliki sebuah arsitektur yang disebut OMA
membuat dan menggunakan objek-objek terdistribusi, (Object Management Group).OMA
CORBA bukan sebuah produk atau bahasa mengelompokkan jenis-jenis interak si antar program
pemrograman. Vendor-vendor yang ingin membuat untuk memudahkan penyediaan dukungan. Gambar
produk-produk yang mengikuti spesifikasi CORBA 2.1 menggambarkan konsep OMA.
dapat bebas untuk melakukannya. Tetapi yang perlu
ditekankan/diyakinkan adalah bahwa vendor-vendor
tersebut mengikuti spesifikasi CORBA secara persis
sama. Hal ini agar semua produk yang dihasilkan
vendor-vendor tersebut memiliki keselarasan dengan
CORBA (CORBA compliant), sehingga satu sama
lain dapat berinteraksi. Hal lain yang perlu diingat
bahwa CORBA independen terhadap bahasa
pemrograman selama bahasa-bahasa pemrograman
tersebut memiliki pemeta (mapping) dari bahasa
definisi interface dalam CORBA.
CORBA merupakan sebuah spesifikasi
middleware yang ideal untuk mendukung dan
mengaplikasikan sistem komputer terdistribusi.
Arsitektur CORBA berbasis pada model objek. Gambar 2.1 Konsep Object Management
Model ini berasal dari abstraksi inti model objek Architecture (OMA)
yang didefinisikan oleh OMG dalam sebuah petunjuk
OMA (Object Management Architecture), yang dapat OMA melakukan strukturisasi dunia aplikasi ke
ditemukan dalam [2]. Beberapa hal penting yang dalam dua kelompok besar: kategori layanan
perlu dicatat bahwa CORBA berbeda dengan CORBA (CORBAservices) dan kategori fasilitas
pemrograman objek serupa adalah: CORBA (CORBAfacilities). Layanan CORBA
• Objek-objek CORBA dapat berjalan dalam menyediakan fungsi-fungsi dasar yang digunakan
berbagai platform. oleh hampir setiap obyek dalam berbagai aplikasi.
• Objek-objek CORBA ditempatkan di Fungsi-fungsi ini biasanya bersifat generik dan tidak
manapun dalam jaringan. tergantung pada jenis domain aplikasi. Sebagai
• Objek-objek CORBA dapat ditulis dalam contoh adalah layanan penamaan (naming service).
beberapa bahasa pemrograman yang Bayangkan bila memerlukan sebuah layanan tapi
memiliki pemeta IDL (IDL mapping). tidak tahu ke mana harus mencari server yang
Hal yang juga dimiliki CORBA adalah CORBA menyediakan layanan tersebut. Layanan penamaan
bersifat open, maksudnya bahwa CORBA bisa dapat membantu layaknya sebuah "halaman kuning"
dipakai oleh setiap orang yang ingin menggunakan (yellow pages) ; dia bisa menyiarkan direktori layanan
standarisasi CORBA ini. Sehingga akan muncul yang terdaftar padanya. Karena sifatnya yang
perbedaan-perbedaan dalam menggunakannya, generik, layanan penamaan dapat digunakan oleh
seperti perbedaan platform ataupun bahasa aplikasi dari berbaga i domain.
pemrograman. Tetapi hal ini justru menjadi kelebihan Fasilitas CORBA menyediakan layanan pada level
CORBA bahwa CORBA mampu aplikasi. Ada dua jenis fasilitas: horizontal, yang
mengkomunikasikan sistem yang memiliki diperlukan oleh berbagai jenis domain (misalnya,
perbedaan-perbedaan tersebut. user-interface), dan vertikal, yang berlaku khusus
CORBA merupakan sebuah arsitektur yang untuk domain tertentu. Fasilitas horizontal fungsinya
menyediakan sebuah framework crossplatform untuk mirip dengan layanan CORBA, tetapi beroperasi
membangun dan mengembangkan sistem objek pada level yang lebih tinggi karena berhubungan
terdistribusi. Ide utama dibelakang CORBA adalah langsung dengan aspek fungsional dari aplikasi.
sebuah perangkat lunak perantara (intermedier) atau OMG secara terus-menerus melakukan standarisasi
disebut middleware yang mengatur dan menyebarkan terhadap interface untuk komponen-komponen di
akses request ke sekumpulan data tertentu. Perangkat masing-masing kategori. Semakin banyak layanan
lunak perantara ini adalah middleware ORB (Object dan fasilitas yang distandarisasi, semakin mudah
Request Broker). ORB melakukan interaksi dan untuk mencapai komputasi terdistribusi berbasis

42
Konsep Pemrograman Jaringan dengan Memanfaatkan Middleware CORBA-ORB ... (Maman Somantri)

komponen dalam berbagai bidang secara plug-and - bahasa pemrograman yang sesuai yang memiliki
play, tanpa terganggu oleh masalah heterogenitas. pemeta IDL. Sebagai sebuah protokol kompiler, IDL
bisa digambarkan sebagai berikut:

2.3 Software CORBA-ORB

Ada banyak software CORBA-ORB baik yang free


dan opensource maupun yang komersil. Yang akan
digunakan disini adalah software ORB dari Java yang
disebut Java-ORB dan JAC-ORB dari Fu Berlin /
Xtradine. Keduanya berbasis Java. Sementara Gambar 2.2 IDL Compiler
software ORB yang lainnnya dapat dilihat dalam
tabel berikut: III. Implementasi Pemrograman Jaringan
Tabel 2.1 Tabel Software CORBA-ORB [4] Menggunakan Middleware CORBA-ORB
ORB Name Product Bhs Pemrogrmn Licence
JAVA ORB SUN MicroSystem Java Free Untuk membangun aplikasinya ada beberapa langkah
VisiBroker Visigenic/Borland Java, C++, Delphi Evaluation
yang perlu diperhatikan dalam hal pemrograman
JacORB Fu Berlin/XTRADyneJava Free
MICO Mico.org/GPL Soft. C + + Free menggunakan middleware CORBA-ORB. Langkah-
ISP Rusian Univ C++ Free langkah itu adalah :
ORBacus IONA Java, C++ Free
• Membuat rancangan dan analisa kebutuhan
OMNIORB OMNI Java, C++ Evaluation
VBORB Visual Basic Free sistem
MTdORB Phyton Phyton Free • Men-download software y ang akan
digunakan (software yang akan digunakan
Ketika masuk ke pemrograman secara teknis maka adalah Java-ORB dan JAC-ORB)
yang perlu diketahui adalah sebuah bahasa interface • Coding atau melakukan langkah-langkah
yang digunakan untuk menghubungkan berbagai teknis pemrograman
macam aplikasi. Bahasa ini disebut Interface
Definition Language (IDL). Untuk mengenal tentang 3.1 Analisa Kebutuhan
IDL maka berikut adalah pembahasan tentang IDL.
Untuk membangun pemrograman jaringan dengan
2.4 Interface Definition Language (IDL) Middleware CORBA-ORB, maka perlu dianalisa
terlebih dahulu hal-hal yang diperlukan sebelum
IDL merupakan inti untuk pembuatan aplikasi masuk ke langkah coding/pemrograman. Sesuai
CORBA. IDL memuat sekumpulan tipe variabel yang dengan tujuan yang ingin dibuat adalah aplikasi yang
kemudian akan dipetakan ke berbagai bahasa melakukan koneksi melalui ORB, dan bisa
pemrograman. menunjukkan aplikasi yang terpisah dan berbeda
Suatu interface dalam CORBA menyediakan sebuah platform, maka bisa digambarkan sebagai berikut :
deskripsi fungsi-fungsi yang disediakan untuk sebuah
objek. Atribut, method dan parameter adalah
informasi-informasi yang dispesifikasi oleh sebuah
interface. IDL adalah sebuah bahasa yang
menggambarkan objek-objek interface dalam sebuah Server ORB A
Platform bahasa 1
Server ORB B
Platform bahasa 2
aplikasi CORBA. [3] Service: Service:
jumlah() kali()
IDL mendefinisikan tipe-tipe objeknya dengan
via ORB

kurang() bagi()
via ORB

mendefinisikan interface-interfacenya. Sebuah


interface terdiri dari sekumpulan nama operasi dan
parameter-parameter untuk operasi-operasi tersebut.
Catatan bahwa IDL hanya digunakan untuk
menggambarkan interface, dan bukan sebuah
Client
implementasi. IDL bukan pula bahasa pemrograman.
Melalui IDL, sebuah implementasi objek tertentu Gambar 3.1 Rancangan Arsitektur Sistem Aplikasi
memberitahukan pada client tentang operasi- operasi
apa saja yang tersedia dan memberitahukan Dari gambar diatas terlihat bahwa ada 2 aplikasi yang
bagaimana cara untuk mengambilnya. Dengan jalan di dua platform pemrograman yang berbeda.
definisi IDL, objek-objek CORBA harus dipetakan Platform yang akan digunakan adalah Java-ORB dan
ke beberapa bahasa pemrograman yang akan Jac-ORB. 2 aplikasi tersebut juga akan diinstal pada
digunakan untuk membangun aplikasi client dan juga platform sistem operasi yang berbeda. Sistem operasi
server. Beberapa bahasa pemrograman yang memiliki yang akan digunakan adalah Linux untuk Jac-ORB
pemeta IDL (IDL mapping) adalah C, C++, Java, dan Windows untuk Java-ORB. Dua aplikasi itu pun
Smalltalk, Lisp, Basic, Pascal dan Python. Setelah berada pada mesin yang berbeda. Disisi lain client
mendefinisikan sebuah interface untuk objek-objek pun akan menggunakan platform yang berbeda
dalam IDL, programmer bebas untuk meng- dengan server-nya. Jika ingin mengakses Server
implementasikan objek-objek dengan menggunakan Java-ORB, maka yang akan digunakan adalah

43
Transmisi, Vol. 10, No. 1, Desember 2005 : 41 – 45

aplikasi Client yang dibuat dengan JAC-ORB. POA rootPOA = POAHelper.narrow(obj);


rootPOA.the_POAManager().activate();
Sedangkan jika client ingin mengakses aplikasi yang org.omg.CORBA.Object objRef = null;
ada di platform JAC-ORB, maka akan digu nakan objRef =
aplikasi client yang dibangun dengan Java-ORB. rootPOA.servant_to_reference(implRef);

String ior =
3.2 Coding : Implementasi Pemrograman orb.object_to_string(objRef);
System.out.println("IOR : " + ior);
Beberapa langkah yang harus dilakukan untuk FileWriter fw = new
FileWriter("java.ref");
membangun aplikasi sesuai dengan arsitektur diatas
fw.write(ior);
adalah : fw.close();
1. Membuat bahasa definisi IDL System.out.println("Java Server:
2. Membuat aplikasi Server operasi tambah() ..... kurang()...");
System.out.println("Server started");
3. Membuat Aplikasi Client java.lang.Object sync = new
4. Mengkompilasi semua class yang telah java.lang.Object();
dibuat synchronized (sync) {
Contoh kasus ini adalah program jumlah() dan sync.wait();
}
kurang() untuk server Java-ORB dan program kali() }
dan bagi() untuk server JAC-ORB. Maka, untuk catch (Exception e) {
bahasa IDL untuk aplikasi itu adalah sebagai berikut: System.err.println("error : " + e);
e.printStackTrace(System.out);
//idl Source Java-ORB }
// file : javaidl.idl }
module javaidl { }
interface Iface_java {
float tambah(in float a, in float b);
float kurang(in float a, in float b); //*****JAC server source
}; //file : serverJAC.java
};
import org.omg.CORBA.*;
//idl source JAC import java.io.*;
//file : jacidl.idl import jacidl .*;
module jacidl { import org.omg.PortableServer.*;
interface Iface_jac { import org.omg.PortableServer.POA;
float kali(in float a, in float b);
float bagi(in float a, in float b); cla ss servantJac extends Iface_jac {
}; public float kali (float a, float b) {
}; float c = a * b;
return c;
}
Dua file tersebut kemudian dikompilasi dengan
menggunakan IDL Compiler yang dimiliki oleh Java- public float bagi(float a, float b) {
ORB dan JAC-ORB. float c = a / b;
return c;
Langkah berikutnya membuat aplikasi server untuk
}
kedua ORB yang digunakan. }

//Java server source public class serverJAC {


//file : serverJava.java public static void main (String[] args) {
import org.omg.CORBA.*; try {
import java.io.*; java.util.Properties props = new
import javaidl.*; java.util.Properties();
import org.omg.PortableServer.*; props.setProperty("jacorb.implname","
import org.omg.PortableServer.POA; StandardNS");
servantJAC implRef = new
class servantPOA extends Iface_java { servantJAC();
public float tambah ( float a, float b) { org.omg.CORBA.Object obj=
float c = a + b; orb.resolve_i nitial_references("RootPOA");
return c ; POA rootPOA = POAHelper.narrow(obj);
} rootPOA.the_POAManager().activate();
org.omg.CORBA.Object objRef = null;
public float kurang (float a, float b) { objRef =
float c = a- b; rootPOA.servant_to_reference(implRef);
return c;
} String ior =
} orb.object_to_string(objRef);
System.out.println ("IOR : " + ior);
public class serverJava { FileWriter fw = new
public static void main (String[] args) { FileWriter("jac.ref");
try { fw.write(ior);
fw.close();
ORB orb = ORB.init(args,null); System.out.println("Server JacORB :
servantPOA implRef = new operasi kali()...operasi bagi()....");
servantPOA(); System.out.println("Server started”);
org.omg.CORBA.Object obj= java.lang.Object sync = new
orb.resolve_initial_references("RootPOA"); java.lang.Object();

44
Konsep Pemrograman Jaringan dengan Memanfaatkan Middleware CORBA-ORB ... (Maman Somantri)

orb.run(); System.out.println("error : " + e);


} e.printStackTrace(System.out);
catch (Exception e) { }
System.err.println("error : " + e); }
e.printStackTrace(System.out); }
}
}
IV. Tinjauan Kritis tentang Pemrograman
}
Memanfaatkan Middleware
Dua file server diatas sebelum diinstallkan di dua
komputer server yang berbeda terlebih dulu di Hal yang sangat menarik dari pemrograman dengan
kompilasi. memanfaatkan middleware CORBA-ORB adalah isu
Langkah berikutnya adalah membuat aplikasi client : tentang interoperasi, atau diistilahkan
interoperabilitas. Isu ini memandang 2 sistem
//*****client source Java & JAC ORB berbeda yang ingin melakukan komunikasi.
//file : clientAll.java
import javaidl.*; Middleware CORBA-ORB bisa dijadikan suatu
import jacidl.*; fasilitator untuk melakukan interoperasi itu. Middle
import org.omg.CORBA.*; ware CORBA-ORB juga bisa digunakan untuk
import java.io.*; penghubung dari banyak aplikasi yang berbeda
import java.text.*;
import java.util.*; platform bahasa pemrograman.
Isu yang lain yang juga terlibat dalam pemrograman
public class clientAll { middleware CORBA-ORB adalah masalah
public static void main(String[] ar gs) { scalability. Isu ini dimaksudkan untuk penambahan /
try {
BufferedReader baca = new perluasan skala pengembangan aplikasi. Untuk
BufferedReader(new membuat aplikasi jaringan client server tidak dibatasi
InputStreamReader(System.in)); dengan satu platform pemrograman saja tetapi bisa
float nil_a, nil_b;
String dibaca_a, dibaca_b; lebih luas lagi dengan berbagai platform
System.out.println("\nMasukkan Nilai pemrograman.
yang akan di proses oleh tiap Server"); Isu yang juga menarik adalah kemudahan
System.out.print("Nilai A : "); pengembangan. Dengan sistem terpisah-pisah secara
dibaca_a =baca.readLine();
System.out.print("Nilai B : "); fisik maupun logika, maka tim developer bisa
dibaca_b = baca.readLine(); dipecah-pecah secara mudah berdasarkan pemisahan
itu. Ahli pemrograman Java bisa concern dengan
//Client JAVA aplikasi Java, ahli pemrograman C++ bisa concern
FileReader fr1 = new
FileReader("java.ref"); dengan aplikasi C++, begitu juga programer Delphi
BufferedReader br1 = new dan lain-lainnya.
BufferedReader(fr1);
String ior1 = br1.readLine(); V. Kesimpulan
org.omg.CORBA.Object objRef1 =
orb.string_to_object(ior1);
Ifacejava servantJava Beberapa hal bisa dijadikan benang merah dalam
=IfacejavaHelper.narrow(objRef1); tulisan ini.
System.out.println("\nJava ORB 1. Middleware CORBA-ORB bisa membangun
Service... \n"); dua buah sistem untuk bisa saling
nil_a = melakukan interoperasi
Float.valueOf(dibaca_a).floatValue(); 2. middleware CORBA-ORB sangat
nil_b =
Float.valueOf(dibaca_b).floatValue(); membantu untuk pengembangan skala
System.out.println("Hasil Tambah() : program aplikasi
" + servantJava.tambah(nil_a,nil_b)); 3. Middleware CORBA-ORB dapat
System.out.println("Hasil Kurang() :
" + servantJava.kurang(nil_a,nil_b)); memudahkan untuk pengembangan tim
System.out.println("\n"); developer.

//client Jac ORB Pustaka


FileReader fr2 = new
FileReader("jac.ref"); [1] --- , www.webopedia.com/TERM/M/middleware
BufferedReader br2 = new .html
BufferedReader(fr2); [2] --- , www.omg.org
String ior2 = br2.readLine(); [3] Mahmoud H., Qusay , Distributed Programming
org.omg.CORBA.Object objRef2 =
orb.string_to_object(ior2); With Java, Manning, 2000.
Ifacejac servantJac [4] Somantri, Maman, Pemrograman Lintas Bahasa
=IfacejacHelper.narrow(objRef2); Pemrograman dalam Arsitektur CORBA, Prosiding
System.out.println("JAC ORB Seminar Nasional Teknologi Informasi, STTNAS
Service... \n");
System.out.println("Hasil Kali() : " Yogyakarta, Juni 2005.
+ servantJac.kali(nil_a,nil_b));
System.out.println("Hasil Bagi() : "
+ servantJac.bagi(nil_a,nil_b));
}
catch (Exception e) {

45

Anda mungkin juga menyukai