質問

Java コンパイラ javac )、仮想マシン(JVM)、および java スターターはどの言語で記述されていますか?

役に立ちましたか?

解決

質問の正確な表現はやや誤解を招く可能性があります。複数のJVMベンダーが存在するため、" JVM" または"コンパイラ" ではありません(jrockitは1つ、IBMは別)および複数のコンパイラがあります。

  • Sun JVM C で記述されていますが、そうである必要はありません-マシンで実行されるJVMはプラットフォームです依存実行可能ファイルであるため、元々はどの言語でも書かれている可能性があります 。たとえば、元のIBM JVMは Smalltalk

  • で作成されました
  • Javaライブラリ( java.lang java.util など、多くの場合 Java API と呼ばれる)はそれ自体ですJavaで記述されていますが、 native とマークされたメソッドは C または C ++ で記述されています。

  • Sunが提供するJavaコンパイラもJavaで書かれていると思います。 (また、複数のコンパイラがあります)

他のヒント

最初のJavaコンパイラはSun Microsystemsによって開発され、C ++のライブラリを使用してCで記述されました。現在、JavaコンパイラはJavaで記述され、JREはCで記述されています。

JavaコンパイラがJavaで次のように記述されていることを想像できます。

JavaコンパイラはJavaプログラムとして記述され、C(最初のJavaコンパイラ)で記述されたJavaコンパイラでコンパイルされます。したがって、新しくコンパイルされたJavaコンパイラ(Javaで記述された)を使用して、Javaプログラムをコンパイルできます。

Javaドキュメント

  

コンパイラはJavaで記述され、ランタイムはANSI Cで記述されています

実際には、Oracle JVMはCではなくC ++で記述されています。

次のHotSpot JVMコードをご覧ください: http://openjdk.java.net/groups/hotspot/

このリンクは質問に答える必要があります

コンパイラは現在Javaで記述されているようですが、ランタイムはANSI Cで記述されています

原則としてほとんどすべて、通常はC

Jikes RVM は、研究目的で広く使用されているセルフホスティングJVMがJavaで記述されています。ユーザーがデスクトップで実行するものではありませんが、「言語の一般的な力を見せてみましょう」という私のリストの上位にあります。

Sunが提供するiircであるHotspot JVMについて話していると仮定すると、C ++で記述されています。 Java用のさまざまな仮想マシンの詳細については、このリンクを確認してください。 javac は、ほとんどのJavaコンパイラと同様、Javaで記述されています。

ほとんどのオペレーティングシステムでは、JVMはISO C ++で記述されています。 ANSI Cが使用されているとは思えません。これは、まったく古い言語であり、現在ではかなり古くなっているためです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top