Java adalah sebuah bahasa pemrograman dan juga sebuah platform. Sebagai
sebuah bahasa pemrograman tingkat tinggi, Java adalah sebuah bahasa
berorientasi objek (object oriented programming). Jika anda pernah
memprogram dengan bahasa pemrograman OOP , seperti C++ atau Smalltalk ,
mungkin anda ingat betapa menyenangkannya memprogram dengan konteks
objek. Anda merancang beberapa objek satu demi satu dengan
mendefinisikan berbagai property yang dimiliki object tersebut dan
pekerjaan (task) yang dapat ditangani oleh objek tersebut. Kemudian anda
merangkai semua objek tersebut dengan mendefinisikan relasi antar objek
tersebut seperti halnya membangun sebuah mobil dari
komponen-komponennya. Belakangan ini , mungkin anda akrab dengan slogan
"reusable of code". "Reuse of code" ini bukanlah cut & paste ( tapi
harus diakui cut & paste memang sangat menyenangkan ). Yang dimaskud
dengan "reuse of code" ini adalah suatu keadaan dimana para programmer
untuk membangun sebuah objek dengan mengextend objek-objek yang telah
ada secara mudah. Secara mudah disini adalah , programmer itu mungkin
tidak perlu tahu dengan kode-kode dari objek yang ingin ia extend , yang
ia butuhkan hanyalah pengetahuan mengenai property dari objek itu dan
hal-hal yang dapat dilakukan oleh objek itu.
[minta tolong diisi ilustrasi yang aneh]
Kemudahan itu dapat diwujudkan dengan inheritance dan encapsulation (yang penjelasannya di luar jangkauan tulisan ini).
Selain
itu Java, sebagai bahasa pemrograman, akan mempermudah tugas kita dalam
merancang sebuah program yang mendukung multithreading. Ada banyak
kasus dimana kita benar-benar membutuhkan multithreading atau dimana
multithreading dapat membuat pemecahan masalah menjadi lebih efisien.
Sebagai
contoh sederhana adalah dalam aplikasi mail client yang anda pakai.
Saat anda mendowload mail dari server, anda mungkin tidak ingin menunggu
sampai semua mail berhasil didownload, baru anda dapat membacanya.
Beberapa mail client memungkinkan anda untuk membaca-baca dan
membrowsing mail-mail yang sudah berhasil didownload. Dan pada saat yang
bersamaan , program itu tetap mendownload mail-mail yang tersisa di
server. Bahkan pada saat yang itu juga anda dapat melihat animasi bumi
berotasi di pojok layar anda. Semua itu, mendownload mail – membrowsing
mail – dan animasi, adalah proses-proses kelas ringan (ligthweight
process) dalam aplikasi mail client itu. Proses-proses itu dikenal
dengan istilah thread. Ide multithreading adalah membagi-bagi waktu
pemrosesan CPU dan menjadwalkannya bagi masing-masing thread itu. Jika
system operasinya dapat memanfaatkan multi-processor, maka thread-thread
akan didistribusikan kepada semua prosesor, dan semua proses itu akan
berjalan paralel.
Satu lagi yang ditawarkan oleh Java, dan
tampaknya sampai saat ini baru Java yang memiliki ini, adalah sifat
portabilitas dan independensi terhadap arsitektur dari program-program
yang ditulis
dengan 100% Java. Yang dimaksud dengan portabilitas dan
independensi terhadap arsitektur adalah : sebuah program yang dibuat
dengan Java akan dapat dijalankan pada semua mesin / komputer yang
mempunyai Java Virtual Machine.
Kita mengenal 2 jenis bahasa
pemrograman , interpreted dan compiled. Contoh bahasa interpreted adalah
bahasa-bahasa script seperti Perl, dan JavaScript. Sedangkan contoh
bahasa compiled adalah C, Pascal, C++, dll.
Pada bahasa
interpreted ada sebuah interpreter yang bertindak untuk menerjemahkan
baris-baris kode dari suatu program ke dalam bentuk kode-kode yang dapat
dimengerti oleh komputer dimana program itu dijalankan. Proses
menerjemahkan itu berlangsung pada saat program itu dijalankan. Hal yang
perlu dicatat dari bahasa interpreted adalah, proses menerjemahkan itu
berlangsung setiap kali program tersebut dijalankan.
Sedangkan
pada bahasa compiled, kode-kode program kita terlebih dahulu diubah ke
dalam bentuk kode-kode biner oleh sebuah compiler. Untuk selanjutnya,
komputer dapat membaca langsung dari kode-kode biner tersebut. Berbeda
dari bahasa interpreted, proses kompilasi ini hanya perlu dilakukan
sekali saja. Seperti telah dibahas di atas, compiler mengubah
baris-baris kode yang kita ketik ke dalam bentuk biner. Yang menjadi
permasalahan adalah, sistem kode biner untuk masing-masing platform
secara umum tidaklah sama. Sistem kode biner pada Macintosh tidak sama
dengan sistem kode biner pada IBM Compatible PC (dengan MS.Windows-nya).
Hal inilah yang membatasi portabilitas dari sebuah program yang dibuat
dari bahasa-bahasa compiled seperti C, dan Pascal. Jadi bila kita hendak
membuat program yang dapat berjalan di banyak platform, sebutlah
PC-Windows—Macintosh—Sun Solaris—dll, kita harus melakukan kompilasi
untuk masing-masing platform itu. Kalau kita ingin menawarkan aplikasi
kita ke seluruh dunia, kita akan menemui kesulitan mengetahui platform
apa saja yang ada di seluruh dunia. Contoh : kita ingin menawarkan
aplikasi yang bisa dilihat/dijalankan lewat web, yang berarti ada
kemungkinan besar aplikasi kita itu akan dijalankan oleh sembarang orang
di seluruh dunia yang menggunakan platform yang berbeda-beda. Kita
tidak mungkin mengetahui secara persis semua platform itu dan kita juga
tidak ingin dipusingkan dengan itu.
Bagaimanapun keunggulan bahasa
compiled adalah , bahasa compiled menawarkan kecepatan eksekusi yang
jauh lebih tinggi dibandingkan dengan bahasa interpreted (sehubungan
dengan kode-kode biner itu).
Java adalah bahasa compiled dan
interpreted. Setelah kita selesai menulis kode dengan bahsa Java, kita
lakukan proses kompilasi. Keluaran dari proses kompilasi itu adalah,
sebuah Java Binary Code. Anda dapat memikirkan Java Binary Code sebagai
ekuivalen dari kode biner yang kita bicarakan diatas. Sistem operasi /
komputer / mesin itu sendiri tidak dapat mengerti Java Binary Code. Maka
diperlukan sebuah Java Interpreter yang akan menerjemahkan Java Binary
Code itu ke dalam bentuk kode biner yang dapat dimengerti oleh operasi /
komputer / mesin yang bersangkutan. Interpreter itu dikenal dengan
sebutan Java Virtual Machine.
Implementasi dari Java Virtual Machine bisa berupa perangkat lunak (software) atau perangkat keras (hardware).
Contoh
paling luas dari perangkat lunak yang mengimplementasikan Java Virtual
Machine adalah Web Browser. Kita sebagai pemrogram bertanggung jawab
sampai tahap kompilasi. Proses selanjutnya menjadi tanggung jawab Java
Virtual Machine. Sebagai contoh, jika kita menulis aplikasi yang bisa
dijalankan melalui web (dikenal dengan sebutan applet), yang kita
berikan ke web browser adalah Java Binary Code hasil keluaran proses
kompilasi yang kita lakukan sebelumnya. Sepanjang web browser itu
mengimplementasikan Java Virtual Machine, ia akan dapat memahami Java
Binary Code itu.
Implementasi dari Java Virtual Machine dalam
bentuk perangkat keras juga tidak sedikit. Semenjak beberapa bulan yang
lalu, sudah beredar mikrochip yang mendukung Java / mengerti Java Binary
Code. Salah satu merk dari mikrochip itu adalah picoJava™ produksi sun
microsystem. Beberapa produsen komputer telah menyertakan picoJava™ itu
ke dalam komputer buatan mereka. Sebagai JVM elektronis, picoJava™ itu
dapat melakukan proses interpretasi dengan kecepatan yang lebih baik
dari JVM perangkat lunak. Beberapa Network Computer ( dengan konsep thin
client-nya ), telah menggunakan picoJava™. Penggunaan chip-chip ini
tidak terbatas pada komputer saja. Chip-chip ini akan dipasangkan pada
perangkat-perangkat elektronis lainnya, seperti telepon, televisi,
mobil, oven mikrowave, bahkan smartcard. Beberapa produk masa depan itu
telah beredar saat ini, perusahaan Schlumberger telah menggunakan
teknologi Java dalam produk-produk smartcard mereka. Perusahaan Hitachi
juga telah menggunakan Java dalam beberapa produk televisi mereka.
Aspek
yang juga cukup penting dari Java adalah sifat tersebar (distributed).
Sifat ini sangat mendukung pengembangan sistem aplikasi yang tidak
dibatasi oleh sebuah komputer saja. Dengan kata lain, mendukung
pembuatan sistem aplikasi jaringan / tersebar dengan relatif mudah.
Perangkat pemrograman Java standar (Java core API) telah menyediakan
pustaka-pustaka yang memadai untuk komunikasi data dalam jaringan
komputer. Pustaka networkingnya mencakup TCP socket, UDP socket, URL,
dan IP Address.
Perkembangan Java tidak bisa lepas dari peranan
beberapa vendor web browser seperti Netscape Corporation. Netscape Corp.
telah mengimplementasikan Java Virtual Machine pada browser Netscape™
3.0 mereka. Pada saat itu, Netscape Corp. menguasai pasaran browser di
seluruh dunia, dan Netscape™ berjalan di beberapa sistem operasi
terkenal , salah satunya adalah Microsoft Windows™ yang merajai pasaran
sistem operasi di dunia. Hal itu memungkinkan applet-applet yang
memperkaya fungsionalitas webpage yang ditulis dengan Java dapat
dijalankan oleh jutaan orang di seluruh dunia. Karena Java berhasil
dengan cepat memperoleh reputasi, maka hampir semua vendor sistem
operasi dan browser berlomba-lomba untuk membuat Java Virtual Machine
bagi sistem operasi / browser mereka. Yang pada gilirannya , semakin
mempercepat perkembangan Java dan memperluas jangkauan Java sebagai
bahasa pemrograman.

Tidak ada komentar:
Posting Komentar