私のJavaの知識はあまり良くありません。これは「言語」だけでなく、仮想マシンも意味します。Java言語の仕組み
ここは私の理解です。
- JavaコンパイラはコードをJavaバイトコードに変換します。ファイルが実行されると、.javaファイル
- の形式で、JVMはバイトコードを読み込んでマシンコードに変換します。
- コンピュータがマシンコードを読み取り、プログラムがコンパイルされたプログラムのように実行されているように見えます(ユーザーに表示されます)。
これは間違っていますか?
私のJavaの知識はあまり良くありません。これは「言語」だけでなく、仮想マシンも意味します。Java言語の仕組み
ここは私の理解です。
これは間違っていますか?
は、すでに多くの答えがありますが、私は一つの重要なポイント不足しています:ファイルが実行されたときに
「2.、JVMが(ジャストインタイムで)読み込むバイトコードとターンをそれを機械コードに変換します。「
これは非常に正しいではありません。
のために最適化。状況が変化した場合(例えば、新しいクラスをロードすることによって)、コンパイルされたコードの中には、最適でないものや不正確なものが表示されることがあります。また、JVMは解釈をしばらく戻した後、 。あなたはJavaクラスを作成する場合
ご理解の方が正しいです。私は適応もHotSpotコンパイラ
A Java仮想マシン(JVM)がコンパイルされ解釈ソフトウェア、あるにバイトコードにコンパイルJavaバイトコードとjavaプログラムを実行します。 Java仮想マシン言語は、概念的には、スタック指向の能力アーキテクチャの命令セットを表す。
Java Virtual Machineには、プログラミング言語に関する情報はありません。 JVMはバイナリバイトコード形式のみを認識します。プログラマは、いずれかのプログラミング言語でこのフォーマットに従うバイトコードを生成することができます。すべてのJavaプログラムは、Java仮想マシンによって定義された境界内で実行されます。
JVM内で実行されるJavaのコードは、Java仮想マシンによって定義されたセキュリティ制約を超えることはできません。 Javaアプリケーションは、このソフトウェアのためにインターネット上の安全なアプリケーションとみなされます。
ほとんど:
正確には、
、拡張子がコンパイル中の.java
だろう、コンパイラが の.classにコード(た.javaファイル)に変換します(バイトコード)。
コードが実行されると、JVMはバイトコード(.classファイル)を に変換します。OSによって解釈されるマシンコード。これにより、プラットフォームに依存しないプラットフォームとしてはJavaが、プラットフォームに依存するとしてはJVMが になります。
Javaバイトコードファイルは '.class'ファイル...' .java'がソースファイルです。 – ColinD
( 's/\。java/\。class /'を使って)右に聞こえますが、これは全体の質問ですか? – delnan
絶望的ではない、多かれ少なかれ大丈夫です。 JVMは単純なバイトコードの読み取り/マシンコードへの変換よりも複雑です。必要に応じて、最適化、プロファイル、およびコード修正をオンザフライで行います。 – bestsss