Latest Posts

Minggu, 29 November 2009

Java vs C/C++

Bahasa C
Tidak tersedianya waktu pemeriksaan run – time
Ketiadaan sarana pemeriksaan run – time ini dapat menyebabkan banyak persoalan aneh yang tak terpantau dan liar. Memang inilah harga yang harus dibayar demi efisiensi dan kecepatan.
Bukan merupakan bahasa yang ‘strongly type’
Meskipun sifat bahasa C yang bukan merupakan bahasa yang ‘strongly type’ mempunyai keuntungan yang memungkinkan kita untuk melihat data dengan cara yang berbeda – beda, namun sifat ini juga merugikan. Fleksibilitas pemanipulasian data yang menguntungkan bisa saja menghasilkan efek sampingan merugikan seperti proses pengubahan suatu jenis variable ke jenis yang lain tidak diharapkan, dan bisa jadi ini tidak kita sadari dan berada diluar control kita.

Bahasa C++
Setelah bahasa C, menyusul apa yang kita kenal dengan bahasa C++. Secara sederhana, bahasa C++ merupakan superset dari bahasa C. Bahasa C++ tetap mempertahankan kehebatan C, termasuk kemampuan dan keluwesannya dalam menangani interface hardware dan software, pemrograman low – levelnya, serta efisiensinya. Namun, C++ membawa C kedunia pemrograman Object – Oriented (OOP), dan tetap mempertahankan keterpaduan dan efisiensi eksekusi C.
Bahasa C++ ini menggabungkan bentuk bahasa prosedural standard yang telah dikenal oleh sebagian besar pemrogram dan model object-oriented. Dengan teknik ini, kita dapat menggunakannya untuk menghasilkan solusi yang benar – benar

object – oriented untuk suatu persoalan. Dalam praktek, aplikasi C++ dapat memperlihatkan dualitas ini dengan memadukan model pemrograman prosedural dan object – oriented.
Terdapat tiga perbedaan utama antara program C++ dan program C
1.Tanda komentar diubah dari / * */ menjadi / /
2.Nama file yang mengikuti #include dari stdio.h diubah menjadi iostream.h
3.Call operator output yang menjadi cout

Java
Java adalah bahasa pemrograman yang mempunyai syntax yang (pada dasarnya) sama dengan bahasa C/C++.
Java lebih sederhana daripada C++. Beberapa kemampuan C++, seperti multiple inheritance, overload operator, preprocessor serta pointer telah dihilangkan di dalam bahasa Java.
Java merupakan bahasa yang murni object oriented
C++ masih dapat memakai syntax dari bahasa C, seperti deklarasi function atau variable di luar class. Ini membuat C++ tidak murni object oriented.
seluruh struktur program JAVA berada dalam class-class. Tidak ada function atau variable yang dideklarasikan di luar class.
Java menghasilkan program yang sangat stabil.
Pointer telah dihilangkan di dalam Java
Maka, programmer tidak dapat lagi mengalokasikan atau mengakses memori secara manual.
Seluruh alokasi memori dilakukan oleh Java melalui reference.
Sedangkan seluruh dealokasi memori dilakukan secara otomatis melalui mekanisme yang disebut garbage-collection.
Sehingg tidak ada lagi error akses memori ataupun error alokasi/dealokasi memori yang dapat menyebabkan program serta sistem menjadi tidak stabil.
Fasilitas coercion yang dalam C/C++ dapat dilakukan secara otomatis, tidak lagi didukung oleh Java.
Dalam Java, setiap coercion harus dilakukan secara eksplisit dengan memakai type-casting. Sehingga, ketidakstabilan diketahui secara pasti pada saat perancangan program dan compile-time.
Dalam C/C++ dikenal beberapa function yang mempunyai argumen yang bervariasi.
Misalnya printf() mengijinkan pemakaian argumen dengan jumlah tidak tetap.
Dalam Java, seluruh method (yaitu function yang merupakan bagian dari class) tidak boleh mempunyai argumen yang bervariasi.
menghapus kemungkinan terjadinya error pada saat run-time akibat kesalahan pengisian argumen.
Java dapat dipakai membangun aplikasi Web dan aplikasi stand-alone yang dijalankan dari komputer lokal.
Java adalah bahasa multi-platform.
dapat dijalankan oleh bermacam-macam platform dengan sistem operasi yang berbeda-beda.
Program yang ditulis dalam bahasa Java akan di-compile menjadi sebuah file .class yang disebut compiled-bytecode.
Bytecode dapat dieksekusi oleh JVM (Java Virtual Machine).
File .class dapat berupa applet maupun aplikasi lokal.
Sepanjang sistem telah diinstall dengan JVM, maka semua program Java (.class) akan dapat dijalankan, tidak tergantung kepada perbedaan bahasa mesin, assembler ataupun kernel yang dimiliki oleh masing-masing platform.
berbeda dengan bahasa lain yang di-compile menjadi suatu program executable (misal .exe. )
Bahasa Java mendukung multithreading.
Program dapat dibuat untuk dijalankan oleh thread tertentu.
Beberapa thread (baik yang menjalankan program Java ataupun program lainnya) dapat dijalankan secara bersama-sama.
Java khususnya applet, sangat aman dipakai.
Diterapkan pembatasan. Misal, applet tidak boleh membuka, membaca dan menulis ke dalam file di komputer lokal.
Applet tidak boleh mengambil dan mengirim data ke server lain, selain ke/dari server tempat ia berasal.
Jika applet menampilkan dialog atau membuka window lain, (misalnya untuk meminta data dari user berupa password atau nomor kartu kredit), maka applet akan selalu menampilkan peringatan kepada user berupa logo Java dan identitas.
Program Java selalu diverifikasi oleh interpreter.
Program Java setelah di-compile akan berbentuk instruksi bytecode (.class).
Instruksi bytecode ini yang akan dijalankan oleh interpreter.
Pada waktu dijalankan, bytecode akan diverifikasi untuk mengetahui apakah ada byte yang telah diubah atau terkorupsi.
Ini dapat mencegah program Java tidak disusupi oleh virus, worm ataupun program lain yang merusak.


Kesimpulan
Setiap bahasa pemrograman memilki kelebihan dan kekurangan dan setiap kekurangan itu akan dicarikan jalan keluar agar bisa menutupi kekurangannya, sehingga melahirkan suatu bahasa pemrograman yang baru sebagai penyempurna dari bahasa pemrograman sebelumnya.
Demikian pula dengan java, java merupakan program yang bergaya C/C++. Perbedaan mendasar dari java dan C/C++ adalah bahwa java merupakan pemrograman object - oriented murni, bahasa C++ merupakan gabungan dari pemrograman prosedural dan pemrograman object – oriented sehingga dapat dikatakan bahwa C++ tidak murni object - oriented sedangkan bahasa C merupakan pemrograman prosedural. Bahasa pemrograman C dan C++ menggunakan kompiler (compiler) untuk menterjemahkan program menjadi bahasa assembly atau bahasa mesin yang sesuai dengan hardware komputer yang digunakan. Kalau program itu hendak digunakan pada komputer yang berbeda maka program harus dikompile ulang untuk memperoleh bahasa mesin yang sesuai. Jadi dapat disimpulkan bahwa bahasa C dan C++ menggunakan model compiler tradisional. Sedangkan pada java, ketika dikompilasi program java diubah kedalam bytecode yang dapat diterima oleh semua mesin, sementara pada setiap mesin tersedia java – run – time atau java – virtual – machine (JVM) yang dapat menterjemahkan bytecode sesuai dengan bahasa mesin yang digunakan. Jadi dapat disimpulkan bahwa java menggunakan model compiler dan interpreter java.





read more...