【Java入門】JVMとは?わかりやすく解説!

この記事では、JVM(Java Virtual Machine)の特徴をわかりやすく解説します。

Javaのプログラムを動かす上で必須となるのがJVMです。

しかし、JVMについて詳しく知っている方は、意外と少ないのではないでしょうか?

JVMって何?
JVMで何ができるの?
JVMの仕組みが知りたい
JVMの構成が知りたい

今回は、そんな悩みを解決するために、JVMについてわかりやすく解説します。

また、次の記事ではそもそもJavaとはどんなプログラミング言語なのか、その特徴やできることをわかりやすく解説しているので良ければ参考にしてください。

Javaとは?初心者向けに言語の特徴や用途をわかりやすく解説

この記事の要約
  • JVMはJavaのプログラムを動かすソフトウェア
  • JVMを活用すればプラットフォームに依存せず、JVM上でJavaを動かせる

なお、収入UPや将来性を見据え、IT企業に転職したいと考えている人は、ぜひ侍エンジニアをお試しください。

侍エンジニアでは現役エンジニアと学習コーチの2名体制で学習をサポート。20〜50代と年齢に関わらず、希望企業への内定を見据え、スキル習得から就業活動の進め方まで一貫して学べます。

未経験からIT企業に転職したい人は、ぜひ一度お試しください。

\ 給付金で受講料が最大80%OFF /

目次

JVMとは

JVMとはJava Virtual Machineの略で、Javaのプログラムを動かすために必要なソフトウェアです。

しかし、Javaは一度プログラムを書けば、どのマシンでもJavaが動くことを思想として作られた言語です。そのため、JVMのような中間コードをプラットフォーム別に、命令文を変換する仮想マシンが実装されました。JVMは「Java仮想マシン」「JavaVM」とも言われています。

JVMの仕組み

JVMがあればJavaプログラムを解釈し、対象のOSで実行可能な形式のコードに変換して動かすことができます。Javaで作ったプログラムをプラットフォームに依存しないで動かすためには、JVM上でJavaを動かすことは必須となります。

JVMとは

画像:JVMの仕組み

図のように、Javaで作ったプログラムはOSではなく、JVMとやりとりするので、OSごとに特別な設定などは不要です。JVMがあれば、OSがWindows、Mac、Linuxなど、環境に依存せずに動かせることがわかりますね!

なお、ITの仕事に興味はあるものの、どの職種が自分にあうのかわからない人もいますよね。そんな人は「ITキャリア診断」をお試しください。

かかる時間はたったの1分。5つの質問に答えるだけで、自分にあうIT職種を診断してもらえます。

自身に適した職種が知りたい人は、手軽に試してみると良いですよ。

\ 5つの質問に答えるだけ /

Javaのプログラムを動かすためには

Javaを動かすには、エディタなどで記述したプログラムをコンパイルしてJavaプログラムを生成します。プログラミング言語は一般的に、プラットフォームやOSごとにコンパイラが用意されていて、特定の環境でしか動かすことができません

しかし、Javaプログラムは前述したようにプログラムとOSの間にJVMを仲介させて動作します。

そのため、Javaのコンパイルは他のプログラミング言語と違い、JVMが理解できるJavaバイナリコードと呼ばれるマシン語に変換されます。(Javaバイナリコードは、中間的なコードという意味で中間コードとも言います)

JVMとは2

画像:動く仕組み

仮想マシンはバイナリコードを読み込んで、OS上でJavaプログラムを実行するために、ネイティブコードと呼ばれるコードに変換されます。

なお、Javaを学びたい気持ちはあるものの本当に自分にあう言語なのか、どう学習を進めればいいのかなどがあいまいな人は「プログラミング学習プラン診断」をお試しください。

かかる時間は1分ほど。4つの質問に答えるだけで、あなたにあう言語や学習プランを診断してもらえます。

効率よくスキル習得したい人は、ぜひ一度お試しください。

\ 4つの質問に答えるだけ /

JVMの構成

ここでは、JVMの構成について説明します。JVMには大きく分けて3つ領域が存在し、それぞれOSのメモリ領域を割り当てられて、管理されています。
JVMとは3

画像:JVMの構成

ヒープとは、OSやアプリケーションなどの、システムが利用するメモリ領域のことを指します。JVMのヒープ領域はオブションで自由に設定することが可能です。3つの領域にはそれぞれ役割があります。以下に各領域の役割について説明します。

Permanent領域(非ヒープ領域)

Permanent領域にはJavaプログラムのクラスやメソッドなど情報が格納されます。そのため、規模の大きいプログラムでJVMにクラスを大量にロードする場合は、Permanent領域のメモリサイズを大きくする必要があります。

New領域(ヒープ領域)

New領域は、さらに3つの領域に分割されており、オブジェクトがインスタンス化された際にまずEden領域に配置されます。Eden領域のメモリがいっぱいになると、オブジェクトを退避するためFrom領域とTo領域に格納されます。

このような処理はScavenge GCと呼ばれています。New領域がいっぱいになるとScavenge GCが頻繁に行われます。

Old領域(ヒープ領域)

New領域に格納されているオブジェクトで、使用期間が長い情報が管理されます。
Old領域がいっぱいになるとFull GCと呼ばれる処理が頻繁に行われます。Full GCは重い処理のため、実行されている間はシステムが止まってしまいます

なお、IT企業への転職や副業での収入獲得を見据え、独学でJavaを習得できるか不安な人は「侍エンジニア」をお試しください。

侍エンジニアでは、現役エンジニアと学習コーチの2名体制で学習をサポートしてもらえます。

「受講生の学習完了率98%」「累計受講者数4万5,000名以上」という実績からも、侍エンジニアなら未経験からでも挫折なく転職や副業収入の獲得が実現できますよ。

\ 給付金で受講料が最大80%OFF /

JVMについてもっと詳しく知りたい方へ

JVMの概要やインストール、設定方法については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!

まとめ

ここでは、JavaにおけるJVMの役割や仕組み、JVMの構成などを説明しました。マルチプラットフォームであるJavaのプログラムを動かす上で、JVMが重要な役割を果たしていることが、理解いただけたのではないでしょうか?

もし、「JVMってなんだっけ?」となったら、この記事を思い出してくださいね!

この記事を書いた人

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

目次