Program Java yang telah dikompilasi adalah
platform-neutral bytecodes yang dieksekusi oleh
Java Virtual Machine(JVM). JVM sendiri terdiri dari:
class loader,
class verification,
runtime interpreter,
Just In-Time(JIT) untuk meningkatkan kinerja kompilator.
Bahasa mesin terdiri dari sekumpulan instruksi yang sangat sederhana dan dapat dijalankan secara langsung oleh CPU dari suatu komputer. Sebuah program yang dibuat dengan bahasa tingkat tinggi tidak dapat dijalankan secara langsung pada komputer. Untuk dapat dijalankan, program tersebut harus ditranslasikan kedalam bahasa mesin. Proses translasi dilakukan oleh sebuah program yang disebut
compiler.
Setelah proses translasi selesai, program bahasa-mesin tersebut dapat dijalankan, tetapi hanya dapat dijalankan pada satu jenis komputer. Hal ini disebabkan oleh setiap jenis komputer memiliki bahasa mesin yang berbeda-beda. Alternatif lain untuk mengkompilasi program bahasa tingkat tinggi selain menggunakan compiler, yaitu menggunakan
interpreter. Perbedaan antara
compiler dan
interpreter adalah
compiler mentranslasi program secara keseluruhan sekaligus, sedangkan
interpreter menstranslasi program secara instruksi per instruksi. Java dibuat dengan mengkombinasikan antara
compiler dan
interpreter.
Program yang ditulis dengan java di-
compile menjadi bahasa mesin. Tetapi bahasa mesin untuk komputer tersebut tidak benar-benar ada. Oleh karena itu disebut
"Virtual" komputer, yang dikenal dengan
Java Virtual Machine (JVM). Bahasa mesin untuk JVM disebut Java
bytecode. Salah satu keunggulan dari Java adalah dapat digunakan atau dijalankan pada semua jenis komputer. Untuk menjalankan program Java, komputer membutuhkan sebuah
interpreter untuk Java
bytecode.
Interpreter berfungsi untuk mensimulasikan JVM sama seperti
virtual computer mensimulasikan PC komputer. Java
bytecode yang dihasilkan oleh setiap jenis komputer berbeda-beda, sehingga diperlukan interpreter yang berbeda pula untuk setiap jenis komputer. Tetapi program Java
bytecode yang sama dapat dijalankan pada semua jenis komputer yang memiliki Java
bytecode.