2016-09-26 17 views
4

私は、JVMの動作を理解し、Javaプログラミング言語で正しく動作するように、オペレーティングシステムに依存しないJavaコンパイルにとって重要なJVMの量を詳細に調べています。JavaはJVMを使用しないソースコードをコンパイルできますか?

+2

コンパイル済みコードを実行するにはJVMが必要です。コンパイラはコードをコンパイルするために必要な唯一のものですが、JVMはコンパイルとは関係ありません。次に、コンパイラはJavaで書かれているので、コンパイラを実行するにはJVMが必要です。 –

+1

必要に応じて、JavaコンパイラをC言語で記述することができます。 Javaは気にしません。 –

+2

JavaコンパイラはJavaで書かれているので重要です。そうである必要はありませんが、そうです。 – EJP

答えて

-3

JVMはコードをコンパイルせず、解釈します。

Javaは、解釈された言語とコンパイルされた言語の両方です。 Javaコンパイラ「Javac」は、プラットフォームに依存しないバイトコードを生成します。このバイトコードはgenericと言うことができます。つまり、各プラットフォームに固有のマシンレベルの詳細は含まれていません。 このバイトコードの命令は、CPUによって直接実行することはできません。 したがって、コードを解釈し、実行可能なCPUレベルの命令を与えることができる他の「プログラム」が必要です。このプログラムは「JVM」(Java仮想マシン)です。 JVMはプラットフォーム固有のものです。

-3

JVMは、Javaコードのコンパイルとは関係ありません。 JVMは、すでにコンパイルされたコードを実行する責任があります。 JDKに含まれているjavacコンパイラや、ほとんどのIDEの統合コンパイラなど、Javaコードをコンパイルするためのソフトウェアがたくさんあり、gradleantなどのコンパイルツールがあります。

+2

'別のコンパイルツール 'javac'がJavaで書かれていますが、あなたの答えは正しくありません。 – EJP

+0

それは私のところで文章のようなものでした。答えを編集しました。 –

+3

他のものはここでも間違っています。 'gradle'と' ant'は別々のコンパイルツールではなく、 'javac'に依存し、依存関係解決と管理を追加します。広く使われている最新のJavaコンパイラは、実際にJVM上で実行されます。 –

2

プライマリコンパイラJavacを使用している場合は、JVMが必要です。

JVMはコンパイルには影響しません。コンパイルには影響しません.Javaプログラムを実行するためにはプライマリコンパイラが実際にはJavaプログラムそのものであり、JVMが必要であるだけです。理論的に


は、コンパイラでは、Javaコードをコンパイルする必要がある唯一のものです。実際には、the JVM knows nothing of the Java programming language、コンパイラから生成されたバイトコードのみ。 JVMを使用すると、Javaプログラムを実行できますが、コンパイル処理には影響しません。

でも、Javaの主要なコンパイラはJavaで書かれていました。 プライマリコンパイラを実行するには、JVMが必要です。

異なる言語で書かれたコンパイラを使用した場合、JVMでコードをコンパイルする必要はありません。

関連する問題