Bahasa pemrograman Java didisain sebagai bahasa yang “netral” terhadap arsitektur komputer dimana program akan dijalankan. Hal ini dimungkinkan dengan proses kompilasi kode sumber (source code) kedalam format bytecode. Proses eksekusi program Java secara ringkas dapat dilihat pada Gambar di bawah. Dengan mekanisme seperti ini, program yang didistribusikan dalam format bytecode, dapat dijalankan pada bermacam-macam jenis komputer / sistem operasi, selama tersedia bytecode interpreter yang sesuai (cross-platform).
Bahasa Java merupakan bahasa pemrograman yang berorientasi objek (OOP – Object Oriented Programming). Dalam bahasa OOP seperti Java, objek (object) merupakan entitas fundamental, yang secara efektif dapat digunakan untuk merepresentasikan entitas nyata. Entitas nyata ini misalnya seorang pegawai di sebuah perusahaan. Disini, “objek pegawai” menangani semua proses dan manajemen data yang berhubungan dengan pegawai tertentu.
Sebuah objek mempunyai state (status/keadaan) dan behavior (perilaku). State dari objek merupakan atribut atau karakteristik yang menerangkan keadaan objek terkait. Misalnya sebuah objek rekening bank, mempunyai state yang berhubungan nomor rekening dan jumlah saldo. Behavior objek merupakan sesuatu yang bisa dilakukan oleh/pada objek ybs. Untuk objek rekening bank, behavior bisa berupa aksi menabung atau mengambil saldo. Perlu dicatat bahwa behavior objek dapat mengubah dan mempengaruhi state objek tersebut.
Dalam konsep OOP, objek merupakan realisasi (instance) dari sebuah kelas (class). Dengan kata lain:
- Objek merepresentasikan realisasi dari sebuah “konsep”; atau objek didefinisikan oleh kelas.
- Kelas merepresentasikan “konsep”; atau kelas merupakan cetak biru (blue print) dari objek.
Kelas menggunakan metode (method) untuk mendefinisikan behavior objek. Dalam konteks pemrograman Java, kelas yang memuat sebuah metode yang bernama main() merupakan representasi dari sebuah program, dimana alur program secara keseluruhan tercermin didalamnya. Sedangkan state/atribut objek didefinisikan oleh data (member) dalam kelas yang bersangkutan, yang dapat berbentuk konstanta atau variabel. Struktur dari sebuah kelas dapat dilihat pada Gambar.
Program Java terdiri dari satu atau beberapa kelas (dengan satu diantaranya berfungsi sebagai kelas utama (main class), yaitu kelas dengan sebuah metode main(). Kemudian, sebuah kelas dibentuk dari metode dan data. Dan pada gilirannya, sebuah metode merupakan sekumpulan perintah/pernyataan. Sedangkan data member dapat berupa data primitif (sederhana) atau berupa referensi ke kelas yang lain.
Sebuah kelas dapat digunakan untuk „menurunkan“ (inherit) kelas yang lain, sehingga membentuk struktur hirarki. Kelas yang berada pada level hirarki bawah „mewarisi“ sifat-sifat (metode & data dari) kelas hirarki diatasnya.
Gambar diatas menunjukan contoh hirarki kelas untuk entitas kendaraan darat. Kelas mobil dan sepeda motor diturunkan dari kendaraan, sehingga kedua kelas ini mewarisi sifat / konsep kelas induknya (kendaraan darat). Jika kendaraan darat mempunyai atribut tipe, jumlah kilometer dan warna, maka baik kelas mobil maupun kelas sepeda motor akan mempunyai sifat-sifat tersebut tanpa harus mendeklarasikan ulang. Disebelah kiri gambar, dapat dilihat dua buah contoh objek yang merupakan realisasi kelas mobil.
Dalam terminologi OOP, proses menurunkan sebuah kelas baru dari kelas yang telah ada disebut sebagai inheritansi (inheritance). Proses ini merupakan proses yang fundamental dan penting dalam pembuatan kode program yang reusable. Komponen software yang telah ada atau pernah dibuat dapat digunakan, dimodifikasi dan diperluas tanpa harus menulis “segala sesuatu” dari awal. Sehingga software yang didisain dengan baik, akan meningkatkan nilai kegunaan dan efisiensi dalam hal waktu serta tenaga untuk pemeliharaan dan pengembangan lebih lanjut.