İlk olarak, bir açıklama, Java tamamen statik olarak derlenmemiş ve C ++ yolunda bağlı değildir. Bayt koduna derlenir ve bu kod daha sonra bir JVM tarafından yorumlanır. JVM gidip yerel makine diline tam zamanında derleme yapabilir, ancak bunu yapmak zorunda değildir.
Daha da önemlisi: Etkileşimin temel pratik fark olduğunu düşünüyorum. Her şey yorumlandığından, küçük bir kod alıntısı alabilir, ayrıştırıp ortamın mevcut durumuna göre çalıştırabilirsiniz. Bu nedenle, bir değişkeni başlatan bir kod yürüttüyseniz, o değişkene vb. Erişebileceksiniz. Gerçekten de işlevsel stil gibi şeylere yol açar.
Bununla birlikte, yorumlama, özellikle çok fazla referans ve bağlam içeren büyük bir sisteminiz olduğunda çok maliyetlidir. Tanım olarak, israftır, çünkü özdeş kodun iki kez yorumlanması ve optimize edilmesi gerekebilir (çoğu çalışma zamanının bunun için bazı önbellekleme ve optimizasyonları olmasına rağmen). Yine de, bir çalışma zamanı maliyeti ödersiniz ve genellikle bir çalışma zamanı ortamına ihtiyacınız vardır. Aynı zamanda karmaşık süreçler arası optimizasyonları görme olasılığınız daha düşüktür, çünkü şu anda performansları yeterince etkileşimli değildir.
Bu nedenle, çok fazla değişmeyecek büyük sistemler ve belirli diller için, her şeyi önceden derlemek ve önceden bağlamak daha mantıklıdır, yapabileceğiniz tüm optimizasyonları yapın. Bu, hedef makine için zaten optimize edilmiş çok zayıf bir çalışma süresiyle sonuçlanır.
Yürütülebilir dosyalar üretmeye gelince, bunun onunla çok az ilgisi var IMHO. Genellikle derlenmiş bir dilde yürütülebilir dosya oluşturabilirsiniz. Ancak, yorumlayıcı ve çalışma zamanının zaten exectuable'da paketlenmiş ve sizden gizlenmiş olması dışında, yorumlanmış bir dilde bir yürütülebilir dosya da oluşturabilirsiniz. Bu, genellikle çalışma zamanı maliyetlerini ödediğiniz anlamına gelir (her ne kadar bazı diller için her şeyi bir ağaç yürütülebilir dosyasına çevirmenin yolları olduğundan eminim).
Tüm dillerin interaktif hale getirilebileceğine katılmıyorum. C gibi bazı diller, makineye ve tüm bağlantı yapısına o kadar bağlıdır ki, anlamlı bir tam teşekküllü etkileşimli sürüm oluşturabileceğinizden emin değilim