Wie vergleicht die Java Runtime Environment mit dem .NET Framework hinsichtlich des Kompilierungsprozesses?

8

Ich lerne über die Umwandlung von Quellcode in Maschinencode über die Frameworks .NET und JRE . Zu Beginn habe ich einige Untersuchungen durchgeführt, um die beiden Prozesse zu vergleichen und dieses Diagramm erstellt . Ich brauche etwas Hilfe, um seine Korrektheit zu kritisieren und, was noch wichtiger ist, irgendwelche ernsthaften Dinge hinzuzufügen, die ich verpasst habe, um den Kompilierungsweg besser zu verstehen.

    
jesterII 28.06.2012, 21:40
quelle

1 Antwort

10

Sowohl .NET als auch Java kompilieren bis Bytecode, das ist eine Zwischensprache, die Anweisungen für eine virtuelle Maschine enthält. Es ist kein Maschinencode, da er nicht direkt auf einer physischen Maschine ausgeführt werden kann. Was stattdessen passiert (zumindest heute; Java hat eine dunklere Geschichte in dieser Hinsicht) ist, dass zur Laufzeit ein Just-in-Time-Compiler ausgeführt wird, der die VM-Anweisungen in nativen Code übersetzt, der dann direkt ausgeführt wird. Dies hat eine große Leistung, die nur der Interpretation dient.

Sie unterscheiden sich diesbezüglich ein wenig. Su ^ H ^ H Die Java-Implementierung von Oracle verwendet einen cleveren Mix aus Interpretation, Messung und JIT-Compilierung nur der Teile, die stark verwendet werden und ansonsten interpretiert werden. Dies dient dazu, die anfängliche Auswirkung des JIT-Compilers zu reduzieren (der andernfalls im Voraus ausgeführt werden muss, wodurch die Startzeit des Prozesses verlängert wird), während weiterhin eine gute Leistung bei Bedarf ermöglicht wird. Auf der anderen Seite kompiliert JIT immer den gesamten Code, der verwendet wird (nicht verwendeter Code wird jedoch nicht kompiliert).

Was eine Frage betrifft, die Sie in Ihren Kommentaren erwähnt haben: Ja, die CLR und die JVM sind die Plattformen, auf denen solche Programme laufen. Eine virtuelle Maschine ist auch eine Maschine, nur weniger Hardware-y. Beide sind eng mit einem entsprechenden Framework, der Base Class Library für .NET und der Java-Klassenbibliothek für Java, integriert. Das sind Frameworks.

    
Joey 28.06.2012, 22:10
quelle

Tags und Links