2 Java Sejarah Teknologi Java Bahasa pemrograman Java

advertisement
2
Java
Sejarah Teknologi Java
Bahasa
pemrograman Java
merupakan suatu
bahasa
pemrograman yang
dikembangkan oleh Sun Microsystems di California pada tahun 1991, yang dipimpin
oleh James Gosling. Bahasa pemrograman Java adalah bahasa pemrograman berbasis
object oriented yang modem. Java memiliki sintaks yang mirip dengan bahasa C dan
C++, tetapi Java menghilangkan banyak kelebihan C dan C++ yang menjadikan C dan
C++ menjadi kompleks, menbingungkan dan tidak aman. Java platform dikembangkan
mengakomodasikan masalah pembangunan piranti lunak untuk media yang
terhubung ke jaringan. Java dirancang untuk mendukung arsitektur komputer yang
berbeda-beda. Untuk
mencapai kebutuhan tersebut,
sebuah program yang
dikompilasi harus dapat dipindahkan di dalam jaringan, bekerja
telah
client dan menjamin
keamanan client yang memakainya.
Java
merupakan
salah
satu
bahasa
pemrograman
yang
multi-platform,
maksudnya bahasa pemrograman ini dapat dijalankan pada sistem operasi yang berbedabeda. Namun untuk
memiliki
Java
dapat menjalankan program java, sistem
Virtual Machine (JVM)
yang
sudah
operasi tersebut harus
ter-install di
dalamnya
(http://java.sun.com/docs/books/vmspec/2nd-editionlhtml/Introduction.doc.html).
2.1.2 Java Virtual Machine
Java Virtual Machine (JVM) merupakan
dari Java platform. JVM sebenamya
adalah komponen teknologi yang bertanggung jawab untuk menangani perangkat keras,
sistem operasi, hasil kompilasi dari program Java (file .class) dan melindungi pengguna
dari program yang tidak dikenali.
JVM adalah
sebuah
mesin
komputasi yang
abstrak. Seperti sebuah mesin
komputsasi yang nyata, JVM memiliki suatu rangkaian instruksi dan memanipulasi area
memory pada saat
Sangat beralasaan dalam mengimplementasikan suatu bahasa
pemrograman
dengan
menggunakan
mesin
menggunakan
virtual
tersebut,
sebuah
bahasa
virtual
machine,
pemrograman
karena
yang
dibuat
dengan
hanya
tergantung kepada mesin virtual tersebut, tidak lagi tergantung terhadap jenis perangkat
keras yang digunakan oleh mesin atau. jenis sistem operasi
yang digunakan, karena
penanganan terhadap mesin dan sistem operasi merupakan tugas dari JVM.
JVM tidak
mengenaH
format
binary,
format
atau
yang
disebut
bahasa
pemrograman Java, JVM hanya
file class. Sebuah file class
bytecode
mengenali
mengandung instruksi JVM
(http://java.sun.com/docslbooks/vmspec/2nd-
edition/html/Introduction.doc.html).
Di dalam Java, konsep Object Oriented merupakan hal yang wajib dikuasai
sebelum menggunakan bahasa ini. Untuk mengerti akan OOP lebih lanjut, maka perlu
diketahui apa itu object, apa
class, bagaimana object dan class berhubungan, dan
bagaimana object berkomunikasi, dan lain-lain.
Object
Dalam
kehidupan nyata
object
memiliki dua
karakteristik.
Semua
object
memiliki state dan behavior. Sebagai contoh, anjing memiliki state (nama, warna,
keturunan, menjadi
lapar) dan
mempunyai behavior
(menyalak, mengambil,
menggoyangkan ekor). Sepeda memiliki state (gigi, pedal, dua roda, jumlah gigi) dan
mempunyai behavior (mengerem, mempercepat, melambat, mengganti gigi).
Variables
(state)
Methods
(behavior)
Gambar 2.1 State dan Behavior Suatu Object
Object di dalam bahasa pemrograman adalah
yang
juga
satu
atau
mempunyai state dan
lebih
variabel
berhubungan sebuah
behavior. Object
(property) dan
object) seperti
behavior
yang
model dari object dunia nyata,
menyimpan state mereka dalam
dengan method
digambarkan pada
(fungsi yang
Gambar 2.1
(http://java.sun.com/docslbooks/tutorialljava/concepts/object.html).
Dalam kehidupan nyata, Anda mungkin memiliki banyak benda (object) yang
sama. Contohnya, sepeda Anda hanyalah satu dari sekian banyak sepeda yang ada di
dunia. Dalam pandangan object oriented, sepeda Anda dapat dikatakan sebagai sebuah
instance dari class yang bernama Sepeda. Sepeda mempunyai beberapa state dan
behavior seperti yang telah disebutkan pada pembahasan tentang object di atas.
Walaupun demikian, masing-masing object sepeda dapat memiliki state yang berbeda
dengan object sepeda lainnya.
Public
API
Private
Implementation
Details
Gambar 2.2 Class
Saat membuat sepeda, pabrik dapat membuat banyak sepeda dari sebuah cetakan
yang sama. Akan sangat tidak efisien bila membuat sebuah cetakan barn untuk setiap
sepeda yang diproduksi. Dalam program, cetakan untuk membuat sebuah object disebut
class. Gamabran umum suatu class secara visual dapat dilihat pada Gambar 2.2
(http://java.sun.com/docslbooks/tutorial/java/concepts/class.html}.
2.1.3.3lnheritance
Sepeda gunung, sepeda balap, dan tandem merupakan jenis-jenis sepeda. Dalam
OOP sepeda gunung, sepeda balap, dan tandem merupakan subclass dari class Sepeda.
Demikian pula class Sepeda merupakan superclass dari sepeda gunung, sepeda balap,
dan tandem. Hubungan class-class tersebut dapat dilihat pada gambar 2.3.
Mountain Bike
Tandem Bike
Racing Bike
Gambar 2.3 Inheritance
Masing-masing subclass mewarisi state
itu
subclass juga
(property) dari
mewarisi behavior (method)
membuat property
dan
superclass. Method
yang
method
sama
yang
sama
tersebut yang
dari
superclass. Subclass
dengan
disebut
superclass, selain
yang
dapat
diwariskan
sebagai
oleh
override method
(http://java.sun.com/docs/books/tutorial/java/concepts/inheritance.html).
2.1.3.4/nterface
Di dalam
bahasa
berhubungan dengan
pemrograman Java, interface berarti
bagaimana sebuah object
sebuah
media
berinteraksi dengan object
yang
lainnya.
Sebuah interface dapat dianalogikan seperti sebuah protocol (an agreed on behavior).
Untuk
program
membuat suatu
Java
lainnya,
program Java yang dinamis yang dapat
dapat
digunakan Java Reflection
(http://java.sun.com/docs/books/tutorial/java/concepts/interface.html).
dan
memanggil
ClassLoader
2.2 Reflection dan ClassLoader
Format binary file yang berekstension .class merupakanfile yang dihasilkan dari
proses kompilasi yang dilakukan oleh kompiler java dari source code program java. File
binary class memiliki format tertentu yang mengikuti spesifikasi yang dikeluarkan oleh
Sun
sehingga
Java
Virtual Machine
dapat
mengenali
format
tersebut
dan
menggunakannya.
Dengan menggunakan reflection kita dapat mengakses informasi internal dari
sebuah class dari file dass-nya sehingga dapat di-load ke dalam NM, dan dengan
menggunakan reflection dapat menuliskan program yang berhubungan dengan sebuah
class ketika saat program tersebut di eksekusi bukan pada source code.
kemampuan ini, menjadikan reflection sebuah alat yang berguna untuk
aplikasi yang bersifat
Dengan
membangun
fleksibel, di mana perubahan atau penanganan class dapat
dilakukan pada saat runtime.
Bahasa seperti c dan c++ mengkompilasi source code menjadi bahasa native
memerlukan
bagian
linking
setelah source
code
dikompilasi. Proses
linking
mengabungkan kode dari beberapa hasil source yang dikompilasi dengan kode library
untuk membentuk program yang dapat di eksekusi.Sedangkan java menerapkan konsep
yang berbeda, dengan
menggunakan java, class-class yang dihasilkan oleh kompiler
akan di-load oleh NM ketika diperlukan, sehingga tidak diperlukan proses linking
dengan bahasa native dari mesin. Java menerapkan late binding, sehingga suatu aplikasi
dapat ditulis menggunakan suatu interface tertentu dengan implementasi aktual tidak
disebutkan sampai ketika pada saat run time.
Aturan untuk melakukan loading suatu class telah dijelaskan secara terperinci
didalam
spesifikasi JVM. Prinsip
dasarnya adalah
suatu
class akan di-load oleh
JVM ketika dibutuhkan. Setiap class yang di-load mungkin memiliki class lain yang
tergantung kepada class tersebut, sehingga proses loading tersebut menjadi rekursif.
Definisi class di dalam Java dan spesifikasi dari NM
memberikan suatu
kerangka kerja yang sangat hebat dalam menciptakan suatu assembly code ketika run
time. Melalui kegunaan dari suatu class loader, fleksibilitas dari sebuah class loader
memungkinkan untuk melakukan loading suatu class secara dinamis ketika suatu
aplikasi dijalankan.
Suatu harga yang mesti dibayar dengan fleksifibilitas tersebut adalah kerja mesin
yang lebih ketika pertama menjalankan suatu aplikasi. Beberapa ratus class hams diload oleh JVM sebelum dia dapat mengeksekusi aplikasi tersebut.
Java menyediakan paket java.lang.reflection di mana di dalam paket tersebut
terdapat beberapa class yang digunakan untuk mendukung reflection, antara lain :
1. class Class
Merupakan class yang terdapat method sebagai class loader, yaitu dengan static
method forName( ), kita dapat membaca suatu byte code dari sebuah class dan dijadikan
object dari class Class.
2. class Constructor
Merupakan class yang digunakan
mendapatkan constructor dari suatu
class.
3. class Field
Merupakan class yang digunakan untuk mendapatkan attribute dari suatu class.
4. class Method
Merupakan class yang digunakan untuk mendapatkan method dari suatu class.
Java
juga
mendukung dalam pembuatan aplikasi yang terhubung melalui
jaringan. Banyak teknik yang dapat digunakan untuk membuat aplikasi Java yang saling
berhubungan
melalui jaringan
intranet
maupun
internet.
Salah satu
yang
dapat
digunakan adalah Remote Method Invocation (JVM) (Green, 2003).
2.3 Remote Method Invocation
Pengertian RMI
Remote
Method Invocation (RMI) memungkin programmer untuk
menciptakan program
terdistribusi dengan teknologi java, dimana suatu method dari
Java
suatu remote object dapat dipanggil dari Java Virtual Machine (JVM) yang lainnya,
yang biasanya dapat berubah mesin yang berlainan. Suatu program yang berbasis Java
dapat memanggil sebuah remote object ketika program tersebut mendapatkan referensi
dari remote object tersebut baik dengan melihat ke naming service yang disediakan oleh
RMI atau menerima referensi dari suatu argumen atau return value. Sebuah client dapat
memanggil sebuah remote object di server dan server juga dapat menjadi client bagi
remote object lainnya. RMI memakai object serialization untuk marhal dan unmarshal
parameter (http://java.sun.com/products/jdklrmil).
RMI memungkinkan object dengan object berkomunikasi di mana terdapat pada
JVM yang berbeda. JVM dapat berada di satu
komputer maupun beda komputer.
Dengan ini kita dapat memungkinkan sebuah aplikasi untuk memanggil method dari
suatu object secara remote, berbagai sumber daya, dan men-load proses dari sistem yang
berbeda. Method dapat juga mengirimkan object dari JVM lainnya dimana JVM tersebut
belum mengenalinya, sehingga memungkinkan men-load suatu object yang diperlukan
secara dinamis (Subranyam, 2000).
RMI runtime adalah arsitektur yang dikembangkan dalam teknologi java. Untuk
semua
implementasi, RMI
runtime
akan
menginstanisasikan sebuah
thread untuk
menangani setiap request dari client. Setelah sebuah request selesai, thread tersebut
akan
menunggu untuk
suatu
periode
waktu
tertentu untuk
request client
yang
selanjutnya. Koneksi RMI akan memakai ulang thread-thread tersebut. Jika tidak ada
request yang masuk ke dalam server maka RMI akan menghancurkan thread terebut.
2.3.2
Tujuan dari RMI adalah membuat object dari JVM yang berbeda kelihatan
seperti object lokal. JVM yang memanggil remote object biasanya disebut sebagai client.
dan JVM yang terdapat remote object biasanya disebut sebagai server. Salah satu aspek
terpenting dari rancangan RMI adalah transparansi. Suatu aplikasi tidak harus tahu
apakah suatu object yang digunakan adalah remote atau adalah lokal.
Pemanggilan
method dari suatu remote object memiliki sintaks yang sama seperti kita memanggil
object
lokal, tetapi
dibawahnya banyak
yang dibungkus sehingga tidak
(Subranyam, 2000).
2.3.3
RMI mempunyai beberapa kelebihan, yaitu :
kelihatan
1. object oriented : di dalam RMI, pengiriman object yang kompleks dapat dilakukan
dengan mudah karena semuanya telah disediakan dan ditanganin oleh RMI itu
sendiri.
2.
safe and secure : RMI menggunakan mekanisme yang telah disediakan oleh Java
untuk melindungi system yang telah dibangun. RMI menyediakan jalur komunikasi
yang aman
antara
client
dan
server.
Dan
RMI juga
menyediakan
object
SecurityManager yang dapat mengontrol beberapa aktivitas remote seperti membaca
file tertentu atau melakukan koneksi terhadap jaringan lain.
3.
Kemudahan dalam membuat dan menggunakan : sangat mudah menggunakan RMI
untuk membuat aplikasi client
server. Sebuah RMI Server
pada dasarnya adalah
sebuah interface yang dibuat dengan menggunakan Java juga, sehingga dapat dibuat
dengan mudah tanpa ada masalah kompabilitas.
4.
Melakukan koneksi ke
suatu
system yang sudah ada
teknologi Java Native Interface (JNI)
: dengan menggunakan
memungkinkan aplikasi yang dibangun
dengan Java melakukan interaksi dengan sistem yang sudah ada (native system) dan
teknologi Java Database Conectivity (JDBC) memungkinkan aplikasi yang dibangun
dengan Java melakukan koneksi kepada basis data relasional yang sudah ada.
5.
"Write Once, Run AnyWhere" : RMI merupakan bagain dari semboyan Java yaitu
"write once, run anywhere". Sistem yang dibangun dengan RMI dapat dengan
mudah dipindahkan ke NM manapun juga.
6. Distributed Garbage Collection_;_ garbage collection adalah komponen yang telah
terintegrasi dengan Java Enviroment. Garbage collection menggunakan algoritma
refrence-counting.
Dimana proses penghapusan
object
computer antara client dan server bekerja secara otomatis.
dari
sistem memory
Download