javac コンパイルにはどのようなプロセスが含まれますか?
Java コンパイル プロセスは主に次のステップに分かれています:
1 . 字句解析 : ソース コード内の文字 (さまざまなキーワード、変数など) を、単一文字に対するプログラム作成の最小単位であるトークンのセットに変換します。トークンはコンパイル プロセスの最小単位です。
2. 構文分析: トークンのコレクションを抽象構文ツリーに構築します。構文ツリーの各ノードは、コード内の構文構造 (パッケージ、タイプ、インターフェイス、修飾子など) を表します。
3. シンボル テーブルを入力します: シンボル テーブルは、シンボル アドレスとシンボル情報のセットで構成されるテーブルです。シンボル テーブルを埋めるプロセスを終了すると、各抽象構文ツリー (および package-info.java) の最上位ノードを含む保留リストが生成されます。
4. プラグイン注釈プロセッサは注釈を処理します: 注釈プロセッサは、抽象構文ツリーの任意の要素を追加、削除、または変更できます。したがって、注釈プロセッサが構文ツリーを変更するたびに、注釈プロセッサが構文ツリーを変更しなくなるまで、ステップ 1、2、および 3 が再実行されます。各サイクルプロセスはラウンドと呼ばれます。
5. セマンティック分析: 構文ツリー構造が正しいソース プログラムを状況に応じてレビューします。
注釈チェック: 変数が宣言されているかどうか、変数と代入型が一致しているかどうかなど、および定数の折りたたみを含みます。
データと制御フローの分析: プログラム コンテキスト ロジックのさらなる検証。使用前に変数に値が割り当てられているかどうか、メソッドに戻り値があるかどうか、例外が正しく処理されるかどうかなどが含まれます。
6. 構文シュガーのデコード: 高度な構文 (ジェネリック、変数パラメーター、アンボックス化など) を基本的な構文構造に変換します。これらは、仮想マシンの実行中はサポートされません。高度な構文。
7. バイトコードの生成: 少量のコード追加と変換作業を実行しながら、構文ツリーとシンボル テーブルの情報をバイトコードに変換してディスクに書き込みます。
上記の内容の大部分は、「Java 仮想マシンの詳細な理解」 -- Zhou Zhiming からの抜粋です。
推奨チュートリアル: 「java チュートリアル 」
以上がjavac コンパイルにはどのようなプロセスが含まれますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。