ホームページ Java &#&ベース Javaコードのコンパイル順序は何ですか

Javaコードのコンパイル順序は何ですか

Oct 27, 2020 am 10:31 AM
java

Java コードのコンパイル シーケンス: 最初にソース コードが字句アナライザーに入り、次にトークン ストリームが構文アナライザーに入り、次に抽象構文ツリーが処理され、次にセマンティック アナライザーが実行され、次に抽象構文ツリーが実行されます。バイトコード プロセッサを使用して注釈が付けられ、生成され、最終的に jvm バイトコードが生成されます。

Javaコードのコンパイル順序は何ですか

Java コードのコンパイル シーケンス:

Java コードのコンパイルは、Java ソース コード コンパイラによって完了します。フローチャートは次のとおりです:

Javaコードのコンパイル順序は何ですか

Java バイトコードの実行は、JVM 実行エンジンによって完了します。フローチャートは次のとおりです:

Javaコードのコンパイル順序は何ですか

Java コードのコンパイルと実行のプロセス全体には、次の 3 つの重要なメカニズムが含まれます: 1) Java ソース コードのコンパイル メカニズム、2) クラスのロード メカニズム、3) クラスの実行仕組み

## このうち、Javaソースコードのコンパイルは、1) 解析とシンボルテーブルへの入力、2) アノテーション処理、3) 意味解析とクラスファイルの生成の3つのプロセスで構成されます。 # フローチャートは次のとおりです。

最終的に生成されるクラス ファイルは次の部分で構成されます。 Javaコードのコンパイル順序は何ですか

1) 構造情報。クラス ファイル形式のバージョン番号と、各部分の数とサイズに関する情報が含まれます。

2) メタデータ。 Javaソースコードの宣言や定数に関する情報に相当します。クラスの宣言情報、継承されたスーパークラス、実装されたインターフェイス、ドメインとメソッドの宣言情報、および定数プールが含まれます。

3) メソッド情報。 Javaソースコードの文や式に対応する情報に相当します。バイトコード、例外ハンドラテーブル、評価スタックとローカル変数領域のサイズ、評価スタックタイプのレコード、デバッグシンボル情報が含まれます。

クラスロードの仕組み

JVM クラスのロードは ClassLoader とそのサブクラスを通じて行われ、クラスの階層関係とロード順序は次の図のようになります。

##1) BootStrap ClassLoader

Javaコードのコンパイル順序は何ですか は、$JAVA_HOME の jre/lib/rt.jar パッケージ内のすべてのクラスをロードする役割を果たします。これは C によって実装されており、 ClassLoader サブクラスではありません

2) Extension ClassLoader

は、jre/lib/*.jar で指定されたディレクトリ内の jar を含む、Java プラットフォームの拡張機能用のいくつかの jar パッケージをロードする役割を果たします。または $JAVA_HOME バッグ内の -Djava.ext.dirs。

3) アプリ ClassLoader

は、クラスパスで指定された jar パッケージとディレクトリ内のクラスを記録する責任があります。

4) カスタム ClassLoader

が属しますtomcat や jboss などのカスタマイズされた ClassLoader は、j2ee 仕様に従って ClassLoader を実装します。

ロード処理中、最初にクラスがロードされているかどうかがチェックされます。チェック順序は下から上、カスタム ClassLoader から BootStrap の順です。 ClassLoader はレイヤーごとにチェックします。特定のクラスローダーがロードされている限り、そのクラスはロードされているとみなされ、このクラスが 1 回だけロードされることが保証されます。ロード順序は上から下です。

クラス実行メカニズム

JVM はスタック アーキテクチャに基づいてクラスのバイトコードを実行します。スレッドが作成されると、次に実行する命令を格納するプログラム カウンタ (PC) とスタック (Stack) が生成されます。各スタック フレームはスタックに格納されます。各スタック フレームは、各メソッドの呼び出しに対応します。スタック フレームは、ローカル変数領域とオペランド スタックの 2 つの部分で構成されます。ローカル変数領域は、ローカル変数をローカル変数に格納するために使用されます。メソッドとパラメータのオペランド スタックは、メソッドの実行中に生成された中間結果を格納するために使用されます。スタックの構造は次のとおりです:

Javaコードのコンパイル順序は何ですか 関連する無料学習の推奨事項:

Java 基本チュートリアル

以上がJavaコードのコンパイル順序は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaの平方根 Javaの平方根 Aug 30, 2024 pm 04:26 PM

Java の平方根のガイド。ここでは、Java で平方根がどのように機能するかを、例とそのコード実装をそれぞれ示して説明します。

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

Javaのアームストロング数 Javaのアームストロング数 Aug 30, 2024 pm 04:26 PM

Java のアームストロング番号に関するガイド。ここでは、Java でのアームストロング数の概要とコードの一部について説明します。

Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

See all articles