Java仮想マシンについて知っておくべきことは何ですか?



このブログでは、Java仮想マシンの概念について、そのアーキテクチャーのコンポーネントと、JVM、JRE、およびJDKの主な違いについて詳しく説明します。

言語は非常に長い間IT業界の巨人でした。それは他のプログラミング言語よりも優れたものにするいくつかの一流の概念を持っています。そのような概念の1つがJava仮想マシンです。この記事では、のさまざまな側面について学習します。 仮想マシンの詳細。このブログで説明されているトピックは次のとおりです。

Java仮想マシンとは何ですか?

Java仮想マシンは、Javaバイトコードが実行されるランタイム環境を提供する、プラットフォームに依存しない抽象マシンです。





これは、Javaバイトコードを機械可読言語に変換するJavaランタイム環境の一部です。メイン Javaプログラムにあるものは、実際にはJava仮想マシンによって呼び出されます。

jvm-Java仮想マシン-edureka

なぜJava仮想マシンが必要なのですか?

Javaを含む開発に非常に必要な、実行するタスクにはJava仮想マシンが必要です。以下は、Java仮想マシンが実行するいくつかのタスクです。



  • コードをロードします
  • コード検証
  • コードの実行
  • アプリケーションにランタイム環境を提供します
  • メモリ領域
  • レジスタセット
  • ガベージコレクションヒープを提供します
  • 致命的なエラーの報告
  • を提供します クラス ファイル形式

これらすべての操作により、Java仮想マシンはJava開発の不可欠な部分です。 Java仮想マシンアーキテクチャの助けを借りて、それがどのように機能するかを理解してみましょう。

Java仮想マシンアーキテクチャ

Java仮想マシンのアーキテクチャは非常にシンプルで、メモリ領域、クラスローダー、実行エンジンなどのコンポーネントがあります。それぞれについて詳しく説明しましょう。

ClassLoader

これは、クラスファイルをロードするために使用されるサブシステムです。 Javaでプログラムを実行するときはいつでも、最初にClassLoaderによってロードされます。主な機能には、初期化、リンク、およびロードが含まれます。以下は、Javaの組み込みクラスローダーです。



    • ブートストラップ ClassLoader –rt.jarファイルをロードするExtensionClassLoaderのスーパークラスです。

    • 拡張 ClassLoader –ディレクトリにあるjarファイルをロードします。

    • システム/アプリケーション ClassLoader –クラスパスからクラスファイルをロードします。

    • 読み込み操作– 最初に、classLoaderは.classファイルをロードし、メソッド領域に保存されるバイナリ形式で対応するデータを生成します。

    • リンク操作– ロード後、準備、検証、解決を行います。 JVMは、クラス変数にメモリを割り当て、メモリをデフォルト値に初期化します。 .classファイルの正確性が保証され、検証が失敗すると、実行時例外エラーが発生します。

    • 初期化– すべての静的変数には、このフェーズのコードブロックで定義された値が割り当てられます。

      chefサーバーのインストール方法

JVMメモリ

  • メソッドエリア– コード、フィールドデータ、ランタイム定数プール、メソッドデータなどの各クラスの構造を格納します。

  • ヒープ– オブジェクトは、実行時にヒープに割り当てられます。

  • JVM言語スタック– ローカル変数と結果を格納します。これは、結果を呼び出して返す際に重要な役割を果たします。メソッドが呼び出されるたびにフレームが作成され、呼び出しが終了または完了するとすぐに破棄されます。

  • PCレジスタ– 実行されているJVM命令のアドレスまたは場所が含まれています。

  • ネイティブメソッドスタック– アプリケーションで使用されるすべてのネイティブメソッドは、ネイティブメソッドスタックに存在します。

  • 実行エンジン– 実行エンジンには、仮想プロセッサ、インタプリタ、および JIT コンパイラ。

  • ネイティブメソッド インターフェース - それは それが提供します。

JVMのアーキテクチャを理解したので、実行プロセスとコードのコンパイルを見てみましょう。

実行プロセス

次の手順は、Javaコードの実行およびコンパイル中に実行されます。

  • mainメソッドは単一のファイルに保存され、他のメソッドは別のファイルに保存されます。
  • コンパイル後、Cとは異なり、リンクなしのバイトコードを持つ対応する.classファイルが提供されます。
  • 実行中に、クラスローダーを使用してクラスファイルの違反がないか検証されます。
  • この後、バイトコードは対応するネイティブマシンコードに変換されます。これは、Javaが比較的遅い理由でもあります。

実行がどのように機能するかがわかったので、JDK、JRE、およびJVMの違いを見てみましょう。

JDK、JRE、JVMの違い

以下は、間のいくつかの重要な違いです JDK 、JVM、およびJRE。

  1. JDKはJavaDevelopment Kitの略で、JREはJavaランタイム環境の略です。
  2. JDKは開発用ですが、JREはランタイム環境用です。
  3. JVMは、Javaプログラムを実行するためのJDKおよびJREの重要な部分です。
  4. JVMはJavaプログラミングの不可欠な部分であり、プラットフォームに依存しません。

これで、Java仮想マシンについて詳しく学んだこの記事の終わりになります。このチュートリアルで共有されているすべてのことを明確に理解していただければ幸いです。

「Java仮想マシン」に関するこの記事が関連していると感じた場合は、Edurekaをチェックしてください。 、25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社が世界中に広がっています。

私たちはあなたの旅のすべてのステップであなたを助け、Java開発者になりたい学生や専門家のために設計されたカリキュラムを考え出すためにここにいます。このコースは、Javaプログラミングをすぐに開始できるように設計されており、HibernateやSpringなどのさまざまなJavaフレームワークに加えて、コアと高度なJavaの両方の概念についてトレーニングします。

ご不明な点がございましたら、「Java仮想マシン」のコメント欄でお気軽にご質問ください。喜んでお答えいたします。