Javaアーキテクチャは、コンパイルと解釈のプロセスを組み合わせたものです。それは、処方中に含まれるさまざまなプロセスを説明します 。トピックを始める前に、この記事の議題を紹介します。
以下に述べるポインタは、私たちの議論のトピックになります。
Javaアーキテクチャとは正確に何であるかを理解することから始めましょう。
Javaアーキテクチャとは何ですか?
ここでは、Javaアーキテクチャについて簡単な手順で説明します。
- Javaには、コンパイルと解釈のプロセスがあります。
- で書かれたコード は、Javaコンパイラによって行われるバイトコードに変換されます。
- 次に、バイトコードはJVMによってマシンコードに変換されます。
- マシンコードは、マシンによって直接実行されます。
この図は、Javaコード、正確にはJavaアーキテクチャの内部動作を示しています。
Javaフロントエンド開発者の履歴書
それでは、Javaアーキテクチャをもう少し深く掘り下げて、さまざまなことについて話しましょう。 。
Javaアーキテクチャのコンポーネント
Java言語には3つの主要なコンポーネントがあります。 JVM、JRE、およびJDK 。
それぞれJava仮想マシン、Javaランタイム環境、Java開発キット。
それらのそれぞれを1つずつ詳しく説明します。
Java仮想マシン:
WORAについて聞いたことがありますか? (Write Anywhere Run Anywhere)。そうですね、Javaアプリケーションは、任意のプラットフォームでコードを実行できるため、WORAと呼ばれています。これは、JVMのためにのみ行われます。 JVMは、Javaプログラムを実行するための環境を提供するJavaプラットフォームコンポーネントです。 JVMは、バイトコードをJavaプログラムが実行されているマシンで実行されるマシンコードに解釈します。
つまり、一言で言えば、JVMは次の機能を実行します。
- コードをロードします
- コードを確認します
- コードを実行します
- ランタイム環境を提供します
それでは、JVMアーキテクチャを紹介します。どうぞ!
説明:
クラスローダー :クラスローダーはJVMのサブシステムです。クラスファイルをロードするために使用されます。 Javaプログラムを実行するときは常に、クラスローダーが最初にそれをロードします。
クラスメソッド領域 :これは、クラスデータが格納されるJVMのデータ領域の1つです。静的変数、静的ブロック、静的メソッド、インスタンスメソッドはこの領域に格納されます。
ヒープ :JVMの起動時にヒープが作成されます。アプリケーションの実行中にサイズが増減する場合があります。
スタック :JVMスタックはスレッドスタックと呼ばれます。これは、単一の実行スレッド用に作成されるJVMメモリ内のデータ領域です。スレッドのJVMスタックは、さまざまな要素(ローカル変数、部分的な結果、メソッドとリターンを呼び出すためのデータ)を格納するためにスレッドによって使用されます。
ネイティブスタック :アプリケーションで使用されるすべてのネイティブメソッドが含まれます。
実行エンジン:
- JITコンパイラ
- ガベージコレクター
JITコンパイラ: ザ・ ジャストインタイム(JIT)コンパイラ はランタイム環境の一部です。実行時にバイトコードをマシンコードにコンパイルすることにより、Javaアプリケーションのパフォーマンスを向上させるのに役立ちます。 JITコンパイラはデフォルトで有効になっています。メソッドがコンパイルされると、JVMはそのメソッドのコンパイルされたコードを直接呼び出します。 JITコンパイラは、そのメソッドのバイトコードをマシンコードにコンパイルし、実行するために「ジャストインタイム」にコンパイルします。
ガベージコレクター: 名前が説明するように ガベージコレクター 未使用の材料を収集することを意味します。そうですね、JVMでは、この作業はガベージコレクションによって行われます。 JVMヒープスペースで使用可能なすべてのオブジェクトを追跡し、不要なオブジェクトを削除します。
ガベージコレクターは、マークアンドスイープと呼ばれる2つの簡単な手順で機能します。
- マーク–ガベージコレクターが、使用されているメモリと使用されていないメモリを識別する場所です。
- スイープ–「マーク」フェーズで識別されたオブジェクトを削除します。
Javaランタイム環境:
JREソフトウェアは、Javaプログラムを実行できるランタイム環境を構築します。 JREは、Javaコードを取得し、それを必要なライブラリと組み合わせて、JVMを起動して実行するオンディスクシステムです。 JREには、Javaプログラムを実行するために必要なライブラリとソフトウェアが含まれています。 JREはJDK(後で学習します)の一部ですが、個別にダウンロードできます。
Java Development Kit:
Java Development Kit(JDK)は、Javaアプリケーションおよびアプレットの開発に使用されるソフトウェア開発環境です。これには、JREといくつかの開発ツール、インタープリター/ローダー(java)、コンパイラー(javac)、アーカイバー(jar)、ドキュメントジェネレーター(javadoc)、および別のツールが含まれています。
javaは配列で最大の数を見つけます
図に示されている青い領域はJDKです。それでは、開発ツールについて詳しく説明します。
java :すべてのJavaアプリケーションのランチャーです。
javac :Javaプログラミング言語のコンパイラ。
javadoc :APIドキュメントジェネレータです。
瓶 :すべてのJARファイルを作成および管理します。
Javaアーキテクチャを進めて、Javaプラットフォームがどのように独立しているかを理解しましょう。
Javaプラットフォームはどのように独立していますか?
プラットフォームに依存しないと呼ばれるプログラミング言語はいつですか?まあ、それがその開発とコンパイルに関して利用可能なすべてのオペレーティングシステムで実行できる場合に限ります。
さて、 Java バイトコードのためにプラットフォームに依存しません。バイトコードとは正確には何ですか?簡単な言葉で、
バイトコードは、マシンが理解できるJVMのコードです。
Javaでのバイトコードの実行は、それがプラットフォームに依存しない言語であることを証明しています。
ここでは、Javaバイトコードの実行プロセスに関連する手順を示します。
以下は、関連する手順の説明です。
sample.java→javac(sample .class)→JVM(sample.obj)→最終出力
最初のソースコードはJavaコンパイラによって使用され、.classファイルに変換されます。クラスファイルコードはバイトコード形式であり、そのクラスファイルはJVMがオブジェクトファイルに変換するために使用されます。その後、画面に最終出力が表示されます。
Javaアーキテクチャの記事を進めて、次の概念を理解しましょう。 JavaでのJIT 。
JavaでのJIT
一般にJITとして知られているJustIn Timeコンパイラは、基本的に、実行時のJavaベースのアプリケーションのパフォーマンスの最適化を担当します。アプリケーションのパフォーマンスはコンパイラーに依存します。
これは、進行中の内部プロセスを示す簡単な図です。
JITコンパイラは、メソッドのバイトコードをマシンコードにコンパイルし、「ジャストインタイム」でコンパイルして実行します。メソッドがコンパイルされると、JVMはそのメソッドのコンパイルされたコードを直接呼び出します。
もっと深く掘り下げましょう:
バイトコードは、提供された命令セットに応じて、適切なマシン命令に解釈またはコンパイルする必要があります。また、命令アーキテクチャがバイトコードベースの場合、これらは直接実行できます。バイトコードの解釈は、実行速度に影響します。
パフォーマンスを向上させるために、JITコンパイラーは実行時にJava仮想マシン(JVM)と対話し、適切なバイトコードシーケンスをネイティブマシンコードにコンパイルします(図を参照)。 JITコンパイラを使用している間、JVMに同じバイトコードのシーケンスを繰り返し解釈させ、変換プロセスのオーバーヘッドを発生させるのと比較して、ハードウェアはネイティブコードを実行できます。
これで、Javaアーキテクチャに関するこの記事の終わりに近づきました。上記のトピックがJavaの知識に付加価値をもたらすことを願っています。その他の記事をお楽しみに!
Javaの基本を理解したので、 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。 EdurekaのJavaJ2EEおよびSOAトレーニングおよび認定コースは、Java開発者になりたい学生および専門家向けに設計されています。このコースは、Javaプログラミングをすぐに開始できるように設計されており、HibernateやSpringなどのさまざまなJavaフレームワークに加えて、コアと高度なJavaの両方の概念についてトレーニングします。
Javaで予約語とは何ですか
質問がありますか?この「Javaアーキテクチャとそのコンポーネント」ブログのコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。