11

.NETおよびフレームワークを介したソース コードのマシン コードへの変換について学習していJREます。まず、2 つのプロセスを比較する調査を行い、この図を作成しました。その正しさを批判し、さらに重要なことに、コンパイル経路をよりよく理解するために見逃した重大なことを追加するために、助けが必要です。

ここに画像の説明を入力

4

1 に答える 1

14

.NET と Java はどちらもバイトコードにコンパイルされます。これは、仮想マシンの命令を含む中間言語です。物理マシン上で直接実行できないため、マシン コードではありません。代わりに (少なくとも今日では、Java にはこの点で暗い歴史があります) 実行時に、VM 命令をネイティブ コードに変換し、直接実行するジャスト イン タイム コンパイラが実行されます。これには、解釈のみに比べてパフォーマンス上の大きな利点があります。

この点で少し異なります。Oracle の Java 実装 (Hotspot) では、解釈、測定、JIT コンパイルを巧妙に組み合わせて使用​​し、使用頻度の高い部分だけをコンパイルし、それ以外は解釈します。これは、必要に応じて良好なパフォーマンスを維持しながら、JIT コンパイラ (それ以外の場合は事前に実行する必要があり、プロセスの起動時間が長くなる) による初期の影響を軽減するためです。一方、.NET は常に、使用されるすべてのコードを JIT コンパイルします (ただし、未使用のコードはコンパイルされません)。

編集 (2019): 現在、.NET には階層型コンパイルもあり、多く実行されるコードに応じて、そのコードはさらに最適化されます。

コメントで言及した質問について: はい、CLR と JVM、そのようなプログラムが実行されるプラットフォームです。仮想マシンもマシンであり、ハードウェアとは関係ありません。どちらも、対応するフレームワークである .NET の Base Class Library および Java の Java クラス ライブラリと緊密に統合されています。それらはフレームワークです。

于 2012-06-28T22:10:23.813 に答える