Pertama, klarifikasi, Java tidak sepenuhnya dikompilasi statis dan terhubung dengan cara C ++. Ia dikompilasi menjadi bytecode, yang kemudian ditafsirkan oleh JVM. JVM dapat pergi dan melakukan kompilasi just-in-time ke bahasa mesin asli, tetapi tidak harus melakukannya.
Lebih tepatnya: saya pikir interaktivitas adalah perbedaan praktis utama. Karena semuanya ditafsirkan, Anda dapat mengambil kutipan kecil dari kode, parsing dan jalankan melawan kondisi lingkungan saat ini. Jadi, jika Anda sudah mengeksekusi kode yang menginisialisasi variabel, Anda akan memiliki akses ke variabel itu, dll. Itu benar-benar cocok untuk hal-hal seperti gaya fungsional.
Akan tetapi, penafsiran membutuhkan banyak biaya, terutama ketika Anda memiliki sistem besar dengan banyak referensi dan konteks. Menurut definisi, ini boros karena kode identik mungkin harus ditafsirkan dan dioptimalkan dua kali (walaupun sebagian besar runtimes memiliki beberapa caching dan optimisasi untuk itu). Namun, Anda membayar biaya runtime dan seringkali membutuhkan lingkungan runtime. Anda juga cenderung melihat optimasi antar-prosedur yang kompleks karena saat ini kinerjanya tidak cukup interaktif.
Oleh karena itu, untuk sistem besar yang tidak akan banyak berubah, dan untuk bahasa tertentu, lebih masuk akal untuk mengkompilasi dan prelink semuanya, lakukan semua optimasi yang dapat Anda lakukan. Ini berakhir dengan runtime yang sangat ramping yang sudah dioptimalkan untuk mesin target.
Sedangkan untuk menghasilkan executbles, itu tidak ada hubungannya dengan itu, IMHO. Anda sering dapat membuat executable dari bahasa yang dikompilasi. Tetapi Anda juga dapat membuat executable dari bahasa yang ditafsirkan, kecuali bahwa interpreter dan runtime sudah dikemas dalam exectuable dan disembunyikan dari Anda. Ini berarti bahwa Anda umumnya masih membayar biaya runtime (walaupun saya yakin bahwa untuk beberapa bahasa ada cara untuk menerjemahkan semuanya ke pohon yang dapat dieksekusi).
Saya tidak setuju bahwa semua bahasa dapat dibuat interaktif. Bahasa tertentu, seperti C, sangat terikat pada mesin dan seluruh struktur tautan sehingga saya tidak yakin Anda dapat membangun versi interaktif yang lengkap dan bermakna