Java の「ソース コード」は grepcode のような場所で表示できることは知っていますが、Java がその上に構築されている C コードを表示する方法を探しています。この質問は何度も聞かれたと思いますが、満足のいく答えを見つけることができませんでした。
これは明示的な目的ではありません。プログラミング言語がどのように「構築」されるかをもう少し理解したいだけです。
また、生成されたバイトコードを表示する方法を誰かが示すことができれば、それもおそらく役立つでしょう。
Oracle の公式 JDK 7 は、そのリンクからダウンロードできるOpenJDK プロジェクトのコードに基づいています。同じサイトから利用可能な JDK 8 ブランチもあります。
*.class
Java 仮想マシン (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 には、このことをよく説明している記事がたくさんあります。