JVM uygulamasına hiçbir şekilde dahil olmadığım için gerçek nedenleri bilmiyorum, ancak bazı makul nedenler düşünebilirim:
- Java fikri, her yere bir kez yazılabilen bir dil olmaktır ve sınıf dosyasına önceden derlenmiş şeyler koymak bunu bir nevi ihlal eder (sadece "tür" çünkü tabii ki gerçek bayt kodu hala orada olacaktır)
- Bu, sınıf dosya boyutlarını artırır, çünkü orada aynı koda birden çok kez sahip olursunuz, özellikle aynı programı birden fazla farklı JVM altında çalıştırırsanız (bu, farklı sürümlerin farklı JVM'ler olduğunu düşündüğünüzde çok da nadir değildir. gerçekten yapmak zorunda)
- Sınıf dosyalarının kendileri yazılabilir olmayabilir (bunu kontrol etmek oldukça kolay olsa da)
- JVM optimizasyonları kısmen çalışma zamanı bilgilerine dayalıdır ve diğer çalıştırmalarda uygulanabilir olmayabilir (yine de bazı faydalar sağlamaları gerekir)
Ama gerçekten tahmin ediyorum ve gördüğünüz gibi, nedenlerimin gerçek şovları durdurduğunu düşünmüyorum. Sun'un bu desteği bir öncelik olarak görmediğini düşünüyorum ve belki de ilk nedenim gerçeğe yakın, çünkü bunu alışkanlıkla yapmak insanları Java sınıf dosyalarının gerçekten olmak yerine her VM için ayrı bir sürüme ihtiyaç duyduğunu düşünmeye sevk edebilir. çapraz platform.
Tercih ettiğim yöntem, aslında önceden açıkça böyle bir şey yapmak için kullanabileceğiniz ayrı bir bayt kodu-yerel çevirmene sahip olmak, belirli bir sanal makine için açıkça oluşturulmuş sınıf dosyaları oluşturmak ve muhtemelen orijinal bayt kodu ile içlerinde olmaktır. farklı VM'lerle de çalışabilir. Ama bu muhtemelen benim deneyimimden kaynaklanıyor: Çoğunlukla Java ME yapıyorum, Java derleyicisinin derleme konusunda daha akıllı olmaması gerçekten canımı yakıyor.