2017-03-29 9 views
-8

in java、javacは、.java個のファイルを.class個のファイルにコンパイルし、JVMのバイトコードを格納します。 .classファイルを実行するときは、.classファイルを解釈するのにjvmを使用して、java *.classを設定する必要があります。Javaのコンパイルとは異なり、C#プログラムのコンパイルの根底にあるのは何ですか?

C#の場合、Visual StudioでC#プログラムをコンパイルすると、.Netインタプリタを指定せずに実行されるファイル.exeが直接作成されているようです。

C#とJavaプログラムはどのようにコンパイルされ実行されるのですか?

C#プログラムをJavaプログラムと同様にコンパイルして実行できますか?

JavaプログラムをC#プログラムと同様の方法でコンパイルして実行できますか?

ありがとうございました。

答えて

0

C#コンパイラで生成された.exeには、インストールされている.NETランタイムをチェックし、.exeに埋め込まれた.NETバイトコードをVMにロードするか、必要なユーザーに警告するネイティブブートストラップコードが含まれています.NETランタイム

+0

ありがとうございました。コンパイルするC#プログラムの.exeファイルをスタンドアロンで実行することはできませんが、実行するには.Net VMが必要ですか? – Tim

+0

修正します。ほとんどの場合、.jarファイルのほとんどはJavaバイトコードです。 – adv12

+0

ありがとうございます。 .netバイトコードを格納するファイル形式は何ですか? WindowsのネイティブマシンコードをPortable Executable(PE)形式で保存するファイル形式はありますか? .exeはファイル拡張子ではなく、ファイル形式であるか、正しいですか?両方が同じファイル形式を使用している場合、.exeファイルに.netバイトコードまたはWindowsのネイティブマシンコードが格納されているかどうかをどのように検出できますか? – Tim

1

実際、C#ソースはCIL(Common Intermediate Language)にコンパイルされています。これは.NET実行環境(Windowsの場合)で実行できます。 Linux(Monoプロジェクト)でも利用可能です。したがって、一般に、C#とJavaプログラムは中間言語でコンパイルされ、後で実行時環境(JVMまたは.Net)によって実行されます。

関連する問題