Kaynak kodunun .NET
ve JRE
Çerçeveler aracılığıyla makine koduna dönüştürülmesini öğreniyorum. Başlamak için iki süreci karşılaştıran bazı araştırmalar yaptım ve this diagram'u yarattım. Doğruluğunu eleştirmek için biraz yardıma ihtiyacım var ve daha da önemlisi, derleme yolunu daha iyi anlamak için kaçırdığım ciddi şeyleri ekliyorum. baytkoduna aşağı derlemekJava Runtime Environment, derleme işlemi açısından .NET çerçevesiyle nasıl karşılaştırılır?
cevap
Hem NET ve Java, yani sanal makine için talimatlar içeren bir ara dildir. Makine kodu değil, çünkü doğrudan fiziksel bir makinede çalıştırılamıyor. Bunun yerine ne olur (bugün en azından; Java'nın bu açıdan daha koyu bir geçmişi vardır), çalışma zamanında, SM komutlarını doğrudan doğruya çalıştırılan yerel koda çeviren tam zamanında bir derleyicinin çalışmasıdır. Bu sadece yorumlamak için büyük bir performans avantajı var.
Bu konuda biraz farklıdırlar. Su ^H^H Oracle'ın Java uygulaması, yalnızca yoğun olarak kullanılan ve başka şekilde yorumlanan parçaları derleyen, yorumlama, ölçme ve JIT'nin akıllı bir karışımını kullanır. Bu, JIT derleyicisinin (aksi takdirde işlem başlatma süresinin uzaması gereken) başlangıçtaki etkisinin azaltılması ve gerektiğinde iyi performansın sağlanmasıdır. Öte yandan her zaman JIT-kullanılan tüm kodları derler (kullanılmayan kodlar derlenmez).
Yorumlarınızda bahsettiğiniz bir soruya gelince: Evet, CLR ve JVM , gibi programların çalıştırıldığı platformlardır. Bir sanal makine bir makinedir, sadece daha az donanımdır. Her ikisi de, karşılık gelen bir çerçeve, .NET için Temel Sınıf Kütüphanesi ve Java için Java sınıfı kitaplığı ile sıkı bir şekilde bütünleştirilmiştir. Bunlar çerçeveler.
".NET'te bir derleme derleme birimi" ne demek istediğini açıklar mısınız? – jesterII
Visual Studio'da tek bir projede gördüğünüz, tek bir ".exe" veya ".dll" - sonuçtaki derleme için derlenir. Derleme birimi, örneğin kısmi yeniden derleme yapmak istiyorsanız, ilgili olan en küçük birleştirilmiş birimi ifade eder. Java'da değişmiş sınıfları yeniden derlemeniz gerekiyor, .NET'te bir projeyi yeniden derlemelisiniz. Dikkat edin, fark çoğu durumda göz ardı edilebilir - her iki platform için derleyiciler, özellikle C++ ile karşılaştırıldığında, şaşırtıcı derecede hızlıdır. Java .class yeniden derlemesi için – Joey
+1. Bunu hiç fark etmedim, ancak obj klasörüne baktıktan sonra, .NET'in her sınıf için nesne sonucunu ayırmadığı anlaşılıyor. Biri, yeniden derlemeyi azaltmak için sınıfları kitaplıklara ayırabilir, ancak Java her sınıfı açıkça ayırır. – Martheen
- 1. Java Runtime Environment bulamıyor ArgoUML
- 2. Java Runtime Environment tarafından önemli bir hata algılandı: İç Hata; Hata: ShouldNotReachHere()
- 3. Alternatifler Runtime ve ProcessBuilder (Java)
- 4. .NET runtime, tüm projeler başvuru 4.3.1
- 5. runtime
- 6. java kullanarak benzerlik için görüntüleri nasıl karşılaştırılır
- 7. java bellek içi derleme
- 8. İki arraylist nasıl karşılaştırılır?
- 9. Java için bir GUI editörü RUNTIME
- 10. Java bitly işlemi Vs BigInteger
- 11. Maksimum Bellek a .NET işlemi
- 12. .NET 4.0'ın sözleşmeli tasarımı nasıl Eiffel ile karşılaştırılır?
- 13. Scala'da, immutable ve mutable setleri ve haritaları çöp toplama açısından nasıl karşılaştırılır?
- 14. Besteci Kurulum Runtime Exception
- 15. Windows Runtime
- 16. CMAKE, derleme işlemi sırasında eksik sysroot eksik
- 17. .Net: Derleme yüklendiğinde çalışma kodu
- 18. Yükleme .NET derleme bağımlılıkları çalışmıyor
- 19. Varlık çerçevesiyle dinamik sorgular oluşturma
- 20. Derleme Java programı kaçak
- 21. İki kez nasıl karşılaştırılır?
- 22. İki NSInteger nasıl karşılaştırılır?
- 23. Python'da nasıl karşılaştırılır?
- 24. Kabuk betiğinde nasıl karşılaştırılır?
- 25. İki NSIndexPaths nasıl karşılaştırılır?
- 26. Genel türler nasıl karşılaştırılır?
- 27. Eşitlik Türleri Nasıl Karşılaştırılır?
- 28. Spring Environment nesnesinin otomatikleştirilmesi nasıl yapılır
- 29. 0 Java içinden harici .java dosyalarını derleme
- 30. İntihal Analyzer (Web İçeriği karşılaştırılır)
Orada "assembler" ile ne demek istiyorsun? Şimdi göründüğü gibi, yanlış bir şey yok: CLR/JVM, derleme değil, bunun yerine doğrudan makine kodu üretiyor. En azından JVM (CLR'yi düşünmüyorum) bir yan ürün olarak montaj üretebilir, ancak bu zorunlu değildir. – Voo
@Voo, assembler tarafından İnsan tarafından okunabilir derlemeyi, cpu mimarisinin anlayabileceği makine koduna dönüştürecek bir program demek istiyorum. Bunun sürecin tamamında gereksiz olabileceğini görüyorum. – jesterII
@EJP, Voo, JVM'nin bayt kodu üreten Java derleyicisi değil, makine kodu oluşturduğunu söylüyor. – jesterII