Pengertian Java

Tulisan ini ditujukan untuk memberikan gambaran sekilas tentang Java bagi para pemrogram dan pengelola sistem (system administrator) dan perancang sistem (system designer). Tulisan ini mencakup penjelasan tentang "apakah Java", "apa yang dapat dilakukan dengan Java", dan "bagaimana perkembangan Java sampai saat ini". Dengan harapan, tulisan ini dapat membantu para pemrogram, pengelola sistem dan juga perancang sistem untuk memutuskan kapan dan dimana dan bagaimana mengimplementasikan teknologi Java dalam sistem mereka. Dan tulisan ini telah diusahakan agar tetap terbuka bagi orang-orang yang tidak mempunyai latar belakang teknis tentang pemrograman dan jaringan komputer. Tulisan ini adalah bagian pembuka dari jalinan ‘cerita’ yang akan menuju kepada pembahasan mengenai pengembangan sistem terdistribusi dengan Java. Kami memulai dengan memberikan gambaran menyeluruh tentang Java ( sebagai bahasa dan sebagai platform ). Dari sana kami akan beranjak kepada pemaparan tentang aspek networking pada Java. Kini, kita hidup dalam sebuah connected world, oleh jaringan komputer. Dimana aplikasi akan bergeser menuju aplikasi berbasis jaringan, aplikasi yang tidak terikat pada sebuah komputer, aplikasi-aplikasi yang bisa saling berkomunikasi, berbagi data , dan menggabungkan kekuatan satu sama lain walaupun dipisahkan oleh jarak yang sangat jauh. Pengetahuan tentang aspek ini sangat penting bagi pihak-pihak yang berkepentingan untuk ambil bagian dalam "trend" itu dengan memanfaatkan kemampuan Java.
Saat ini, Java telah mempunyai teknologi yang dirancang khusus untuk kepentingan pengembangan sistem tersebar (distributed system). Yaitu Remote Method Invocation (RMI). Teknologi RMI inilah yang telah dan sedang kami pelajari. Remote Method Invocation ini akan menuntun kita pada satu teknologi lagi, yang disebut "mobile code" atau dikenal dengan sebutan Agent.


Apakah Java ?

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.

No comments

Silahkan Berkomentar dengan kata-kata yang baik dan sopan dikarenakan blog ini untuk semua umur. Terimakasih

Powered by Blogger.