Java エコシステムは、Java プログラミング言語を取り囲み、サポートする幅広いツール、テクノロジー、ライブラリ、およびフレームワークのセットです。 Java アプリケーションの開発、デプロイ、管理に必要なすべてが含まれています。 JDK、JRE、JVM を中心に展開します
JVM は、コンピュータで Java プログラムや Java バイトコードにコンパイルされた他の言語を実行できるようにするトランスレーターのように機能します。コードは、コンピュータのハードウェアが理解して実行できるものに変換されます。
ロード中
.class ファイルをメモリにロードします。実行のためにクラス ファイル (Java バイトコード) を検索、ロード、およびリンクします。
リンク中
初期化
初期化は、JVM がクラスまたはインターフェイスを使用できるように準備する最後のステップです。このステップは、クラスが (メモリに) ロードされ、リンクされた後に実行されます。
メソッド領域
メソッド領域 メソッドや変数、実行時定数プール、メソッドのコードなどのクラスレベルのデータを格納します。
public class Person { private String name; public void setName(String name) { this.name = name; } }
クラス Person を定義すると、メソッド領域には、そのメソッド (setName) とフィールド (name) を含む Person クラスの構造と、メソッド名や定数値などの参照を含むランタイム定数プールが格納されます。
ヒープ
ヒープは、ランタイム メモリ オブジェクトが割り当てられる場所です。ヒープはすべてのスレッドで共有され、ガベージ コレクション プロセスが行われる場所です。
Person p = new Person();
新しい Person オブジェクトを作成すると、ヒープに割り当てられます。
スタックエリア
スタック領域には、ローカル変数、オペランド スタック、実行中のクラスのランタイム定数プールへの参照が含まれるフレームが格納されます。各スレッドには独自のスタックがあります。
public void someMethod() { int a = 10; int b = 20; int sum = a + b; }
someMethod が呼び出されるたびに、新しいフレームがスタック領域にプッシュされます。このフレームには、ローカル変数 (a、b、sum)、中間計算用のオペランド スタック、およびランタイム定数プール内のメソッドのクラスへの参照が含まれています。
プログラムカウンター (PC) レジスタ
PC には、現在実行されている JVM 命令のアドレスが含まれます。各スレッドには独自の PC レジスタがあります。
ネイティブ メソッド スタック
Java スタックに似ていますが、ネイティブ メソッドに使用されます。
通訳
インタプリタは Java バイトコードを読み取って 1 行ずつ実行し、各バイトコード命令を CPU で実行できる一連のマシンレベル命令に変換します。
ジャストインタイム (JIT) コンパイラー
実行時にバイトコードをネイティブ マシン コードに変換して、パフォーマンスを向上させます。
ガベージコレクター
ガベージ コレクターは、JVM 内のメモリを自動的に管理します。使用されなくなったメモリを特定して割り当てを解除し、新しいオブジェクトのために解放します。
JRE は、Java アプリケーションを実行するために必要な環境を提供するソフトウェア パッケージです。これはマシン上で Java バイトコードを実行するように設計されており、Java の「一度書いたらどこでも実行できる」(WORA) 原則の重要な部分となっています。
public class Person { private String name; public void setName(String name) { this.name = name; } }
Person p = new Person();
public void someMethod() { int a = 10; int b = 20; int sum = a + b; }
JDK (Java Development Kit) │ ├── JRE (Java Runtime Environment) │ │ │ ├── JVM (Java Virtual Machine) │ │ ├── Class Loader │ │ ├── Bytecode Verifier │ │ ├── Execution Engine │ │ │ ├── Interpreter │ │ │ ├── Just-In-Time (JIT) Compiler │ │ │ └── Garbage Collector │ │ └── Runtime Libraries (core libraries like java.lang, java.util, etc.) │ │ │ └── Java APIs (Core libraries and additional libraries) │ ├── Development Tools (like javac, jdb, jar, javadoc, etc.) └── Documentation (API docs, guides)
実行<🎝>タスク
<🎝>JRE<🎝>は、<🎝>JVM<🎝>と< 🎝><🎝>必要な<🎝>ライブラリ<🎝>と<🎝>リソース。<🎝>JRE<🎝>は<🎝>JVM<🎝>が<🎝>すべてを<🎝>持っていることを<🎝>保証します。 ><🎝>これらの<🎝>タスクを<🎝>任意の<🎝>プラットフォームで<🎝>実行する<🎝>必要があります。<🎝><🎝>について<🎝>考えてください<🎝> JRE<🎝>として<🎝><🎝><🎝>JVM、<🎝>重い<🎝>を<🎝>含む<🎝>完全な<🎝>パッケージ<🎝> <🎝>リフティング、<🎝>、および<🎝>Java<🎝>アプリケーションの<🎝>実行<🎝>を<🎝>サポートする<🎝>その他の<🎝>コンポーネント<🎝>。
クラス<🎝>ライブラリ
JRE<🎝>には、<🎝>標準<🎝>Java<🎝>クラス<🎝>ライブラリの<🎝>セット<🎝>が含まれており、<🎝>再利用可能な<🎝>コードを<🎝>提供します<🎝>一般的な<🎝>タスク、<🎝>データ<🎝>構造、<🎝>I/O、<🎝>ネットワーク、<🎝>同時実行性、<🎝>などの<🎝>実行用<🎝>そして<🎝>さらに。
Java<🎝>ネイティブ<🎝>インターフェース<🎝>(JNI)
JNI<🎝>により、<🎝>Java<🎝>アプリケーション<🎝>が<🎝>言語<🎝>で書かれた<🎝>ネイティブ<🎝>コード<🎝>と<🎝>対話<🎝>できるようになります<🎝>。 🎝>C<🎝>または<🎝>C++。<🎝>この<🎝>機能<🎝>は<🎝>プラットフォーム固有の<🎝>機能を<🎝>統合するために<🎝>不可欠<🎝>です<🎝>または<🎝>既存の<🎝>ネイティブ<🎝>ライブラリを使用します。
セキュリティ<🎝>マネージャー<🎝>
<🎝>セキュリティ<🎝>マネージャ<🎝>は、<🎝>Java<🎝>アプリケーションの<🎝>セキュリティ<🎝>ポリシー<🎝>を適用し、<🎝>など<🎝>アクション<🎝>を<🎝>制限します。 <🎝>ファイル<🎝>アクセス、<🎝>ネットワーク<🎝>接続<🎝>、および<🎝>潜在的に<🎝>安全でない<🎝>コードの<🎝>実行<🎝>。
JDK<🎝> は<🎝>開発者<🎝>による<🎝>書き込み、<🎝>コンパイル、<🎝>デバッグ、<🎝>を可能にする<🎝>ツール<🎝>です。 <🎝><🎝>Java<🎝>アプリケーションを<🎝>実行します。<🎝>それ<🎝>は<🎝>JRE<🎝>の<🎝>スーパーセット<🎝>であり、<🎝>追加の<🎝>が含まれています<🎝>Java<🎝>開発用の<🎝>ツール<🎝>。
javac<🎝>(Java<🎝>コンパイラ)
javac<🎝> は、<🎝>Java<🎝>ソース<🎝>コード<🎝>(.java<🎝>ファイル)<🎝>を<🎝>に<🎝>変換するために<🎝>を<🎝>使用します。 >バイトコード<🎝>(.class<🎝>ファイル)。<🎝>この<🎝>バイトコード<🎝>は<🎝>その後<🎝><🎝><🎝>Java<🎝>仮想によって<🎝>実行されます。 <🎝>マシン<🎝>(JVM).
java<🎝>(Java<🎝>アプリケーション<🎝>ランチャー)
java<🎝>コマンド<🎝>は、<🎝>Java<🎝>アプリケーションを<🎝>起動します。<🎝>必要な<🎝>クラス<🎝>ファイル、<🎝>を<🎝>ロードします。 <🎝><🎝>バイトコードを<🎝>解釈し、<🎝><🎝>アプリケーションを<🎝>開始します。
jdb<🎝>(Java<🎝>デバッガー)
jdb<🎝> は<🎝>Java<🎝>プログラム用の<🎝>コマンドライン<🎝>デバッガ<🎝>です。<🎝>これにより<🎝>あなたは<🎝>できるようになります。 ><🎝>実行時に<🎝>Java<🎝>アプリケーション<🎝>を検査<🎝>し、<🎝>デバッグします。
jar<🎝>(Java<🎝>アーカイブ<🎝>ツール)
jar<🎝>ツール<🎝>パッケージ<🎝>複数の<🎝>ファイル<🎝>を<🎝>単一の<🎝>アーカイブ<🎝>ファイル、<🎝>通常<🎝>で<🎝> <🎝>.jar<🎝>拡張子<🎝>これらの<🎝>JAR<🎝>ファイル<🎝>は<🎝>Java<🎝>アプリケーション<🎝>を<🎝>配布するために<🎝>使用されます<🎝>。 <🎝>ライブラリ
javadoc<🎝>(Java<🎝>ドキュメント<🎝>ジェネレーター)
javadoc<🎝>は、<🎝>特別な<🎝>/**<🎝を<🎝>使用して、<🎝>Java<🎝>ソース<🎝>コードから<🎝>HTML<🎝>ドキュメント<🎝>を生成します。 >*/<🎝>コメント<🎝><🎝>として知られている<🎝>ドキュメント<🎝>コメント。
Feature/Aspect | JVM | JRE | JDK |
---|---|---|---|
Purpose | Executes Java bytecode | Provides the environment to run Java applications | Provides tools to develop, compile, debug, and run Java applications |
Includes | JVM itself, which includes class loader, bytecode verifier, and execution engine | JVM + Core libraries (like java.lang, java.util, etc.), and other runtime components | JRE + Development tools (like javac, jdb, jar, etc.), documentation |
Components | - Class Loader - Bytecode Verifier - Execution Engine (Interpreter, JIT) |
- JVM - Core Java libraries - Java Plug-in - Java Web Start |
- JRE - Java Compiler (javac) - JAR Tool (jar) - Debugger (jdb) - Documentation Generator (javadoc) - Other development tools |
Main Functionality | Executes Java bytecode, enabling platform independence | Provides the minimum requirements to run Java applications | Allows developers to write, compile, and debug Java code |
Who Uses It? | End-users running Java applications | End-users running Java applications | Java developers writing and compiling Java applications |
Installation Size | Smallest | Larger than JVM but smaller than JDK | Largest (includes JRE and development tools) |
Developer Tools | No | No | Yes (includes compiler, debugger, profiler, etc.) |
Required to Run Java Programs | Yes | Yes | No (but needed to create Java programs) |
Platform Independence | Provides platform independence by abstracting the underlying hardware | Yes, because it includes the JVM | Yes, it includes everything from JRE |
Examples of Usage | - Running any Java application (e.g., desktop applications, servers) | - Running Java applications in production or end-user environments | - Writing and compiling Java code - Packaging applications - Debugging |
Availability | Part of JRE and JDK | Standalone or part of JDK | Standalone package |
JDK (Java Development Kit) │ ├── JRE (Java Runtime Environment) │ │ │ ├── JVM (Java Virtual Machine) │ │ ├── Class Loader │ │ ├── Bytecode Verifier │ │ ├── Execution Engine │ │ │ ├── Interpreter │ │ │ ├── Just-In-Time (JIT) Compiler │ │ │ └── Garbage Collector │ │ └── Runtime Libraries (core libraries like java.lang, java.util, etc.) │ │ │ └── Java APIs (Core libraries and additional libraries) │ ├── Development Tools (like javac, jdb, jar, javadoc, etc.) └── Documentation (API docs, guides)
以上がJava エコシステムの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。