ホームページ >Java >&#&チュートリアル >Java エコシステムの概要
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 の主要なコンポーネント
実行タスク
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 サイトの他の関連記事を参照してください。