2

Java の「ソース コード」は grepcode のような場所で表示できることは知っていますが、Java がその上に構築されている C コードを表示する方法を探しています。この質問は何度も聞かれたと思いますが、満足のいく答えを見つけることができませんでした。

これは明示的な目的ではありません。プログラミング言語がどのように「構築」されるかをもう少し理解したいだけです。

また、生成されたバイトコードを表示する方法を誰かが示すことができれば、それもおそらく役立つでしょう。

4

1 に答える 1

5

Oracle の公式 JDK 7 は、そのリンクからダウンロードできるOpenJDK プロジェクトのコードに基づいています。同じサイトから利用可能な JDK 8 ブランチもあります。

*.classJava 仮想マシン (JVM) は、ファイルを実行する架空のコンピューターの一種です。ほとんどの場合、JVM は他の言語 (C++ など) で記述された、実際のコンピューターで実行されるプログラムによってエミュレートされます。たとえば、Windows マシンで Java プログラムを実行すると、java.exe大部分が C++ で記述されたプログラムが JVM のふりをして*.classファイルを実行します。のようなJavaコード

++i;

Javaコンパイラ(Javaで書かれています!)によってJVMオペコードに変換されます

iinc 0 1

JVM には、その命令 (および数百の追加命令すべて) を実際の機械語のオペコードであるかのように処理するコード (C++ またはアセンブリで記述) が含まれています。実のところ、実際にはもっと複雑です。最近のすべての JVM は、実行中に JVM オペコードをプラットフォーム固有のマシン コードに変換します。ただし、その変換を行うコードは、もちろん C++ などのネイティブ (Java 以外の) 言語で記述されています。またはアセンブリ。

Interwebs には、このことをよく説明している記事がたくさんあります

于 2013-07-11T02:04:08.283 に答える