MENU
カテゴリー
なお
Webpia運営主
21歳 | WEBメディアの会社で部長をやりながら、Webpia・特化メディア・WEB制作~コンサル・SEOディレクター・投資・就活相談など幅広くやっています。
今井
22卒Webエンジニア
21歳 | Webアプリ開発を独学し、新卒で年収500万円のWebエンジニアとして内定。エンジニア就活の仕方・学んだIT知識などを発信しています。
【随時更新中】本当におすすめのプログラミングスクールを徹底比較!!

JVMとは?Javaの実行環境の仕組みを図でわかりやすく解説!

エンジニア
こんにちは!
今井(@ima_maru)です。

JavaJVM言語と呼ばれるプログラミング言語が動作するためには、
この「JVM」「Java仮想マシン」が必要不可欠です。

Java仮想マシンは簡単に言えば、JavaやJVM言語を動かすためのソフトウェアみたいなものです。

そしてメリットは、書いたプログラムがOSに依存しないこと。

言い換えれば、どんなOS(Windows,Linux,Macなど)でも正常に機能することと言えます。

今回はこのJVM(Java仮想マシン)の仕組みをわかりやすく解説していきます。

この記事に書かれていること
  • JVM-Java仮想マシンとは?
  • Javaの実行環境はどういう仕組み?
  • JVMの仕組みのメリットは?

それでは解説していきます!

好きなところから読む

JVM-Java仮想マシンとは?

JVMとは、「Java Virtual Machine」の頭文字をとった単語です。

日本語に訳して「Java仮想マシン」と言ったりもします。

マシンとは言いますが、「仮想」マシンなので、実際にそういう機械・ハードウェアがあるわけではありません

PC上にインストールされているソフトウェアのことを指しています。

皆さんがお使いのPCにも入っているのではないでしょうか?

上が実行環境、下が開発環境なのですが、上の実行環境の中に、JVMが入っています

Javaで生成されたコードは、一度この実行環境のJVMでもう一度変換され機械語になります。

その辺の説明をしていきます。

Javaの実行環境の仕組み:JVMはどのように働く?

まず、プログラミング言語Javaでプログラムを書きます。

これを「ソースコード」と呼ぶことにしましょう。

次は、そのソースコードをJavaのコンパイラを通して、「バイトコード」と呼ばれる中間コードに変換します。

このバイトコードはそのまま実行することはできません。(まだ完全に機械語になっていない)

そして、このバイトコードは、JVMによってそれぞれのOSにあった機械語に翻訳されます。

つまり、JVMがOSの違いを吸収するクッション材となってくれているのです。

このように、Javaの実行環境は、間にJVMが挟まっているという点で特徴的です。

エンジニア
ほかのプログラミング言語の多くは、コンパイラやインタプリタが直接機械語に翻訳するので違いがありますね。

Javaの実行環境は、JVMがOSの違いを吸収してくれので、JVMがそのOSに対応していれば、プログラムを正常に動作させることができるのです。

ようは、

  • WindowsにはWindows用のJVM
  • macにはmax用のJVM
  • LinuxにはLinux用のJVM

がインストールされていれば、どのOSでも正常にプログラムが機能するのです。

JVMの仕組みのメリットとデメリット

Javaは、実行環境が特徴的で、中間コードをJVMが再度変換するということを行います。

また、JVMがそれぞれのOSに合うような機械語に翻訳してくれるので、

「一つのプログラムがOSに依存せずに動作する」

という特徴を持っています。

マルチプラットフォーム:OSに依存せずに動作する

JVMの仕組みのおかげで、JavaのプログラムはOSに依存しないというメリットがあります。

これが一番大きなメリットといえるでしょう。

「OSに依存しない」というのは、
WindowsでもMac OSでもLinuxでも動作するということです。

この特徴のことを、

「マルチプラットフォーム」
クロスプラットフォーム」

と呼んだりもします。

つまり、いろんなプラットフォーム(OSなどの環境)に対応しているという意味ですね。

では、なぜOSに依存せずに動作するのでしょうか?

それは、同じJavaプログラムから生成された中間コードでも、JVMがOSに合わせて出力コードを変えるからなんです。

例えば、WindowsさんmacさんLinuxさん
「今から100万円を稼いできてください」と命令したとしましょう。

そうすると、

  • Windowsさんは、アルバイトをして100万円を稼ぐ
  • macさんは、ネットビジネスで100万円を稼ぐ
  • Linuxさんは、宝くじを当てて100万円を稼ぐ

こうなるかもしれません。

それぞれが「100万円を稼ぐ」という命令を「自分ができる行動」に変換したのです。

これをJVMの話に戻すと、

System.out.prinln("Hello, World!!")

というJavaプログラムが生成した中間コードに対して、

  • Windows用のJVMは、WindowsOSが実行できるような機械語に変換
  • mac用のJVMは、macOSが実行できるような機械語に変換
  • Linux用のJVMは、LinuxOSが実行できるような機械語に変換

という風にJVMがそれぞれのOSに適した機械語を出力しているのです。

このことからわかるように、Javaの開発環境はOSを考えてプログラミングすることが少なくなるようにできています。

実行速度が若干遅い、メモリを使う

C,C++などの完全なコンパイラ型の言語に比べると実行速度やメモリの面で性能が劣ります

しかし、処理速度の面でもメモリの面でも現代のコンピュータは進化を遂げていて、いまでは気にならないほどになりました

よほどの実行速度や省メモリ化を目指す開発でない限り、この面は気にする必要はないでしょう。

あわせて読みたい
コンパイラとインタプリタの違いは?言語の違いを分かりやすく解説! 今回は、「コンパイラ言語」と「インタプリタ言語」についての解説記事になります。 具体的には、以下のようなことが書かれています。 この記事に書かれていること! コ...

JVM言語とは?

JVM環境は、Javaのために作られた環境ですが、そのJVM環境を利用できるプログラミング言語が多数存在しています。

それらのことをJVM言語といいます。

つまり、JVM言語とは、JVM環境で動くプログラミング言語になります。

Javaが生み出すような中間コードを生成できるわけですね。

現在Android開発で大注目されているプログラミング言語「Kotlin」などがJVM言語として有名です。

Java

「java ロゴ」の画像検索結果

もちろんのことJavaもJVMで動作するためJVM言語といえます。

ですが、JVMが作られたのはJavaのためなのでちょっと違うかもしれません。

ここではJVMで動作するという点で上げておきます。

Scala

「Scala ロゴ」の画像検索結果

オブジェクト指向と関数型プログラミングを統合したプログラミング言語です。

JVM言語のひとつです。

Kotlin

「kotlin ロゴ」の画像検索結果

2011年にAndroidの公式言語としてGoogleが発表したプログラミング言語です。

主にAndroidアプリを開発するときに使用されます。

Groovy

「Groovy JVM」の画像検索結果

Groovy(グルービー)は、JVM上で動作する動的プログラミング言語です。

Jython

PythonのJVM版です。JVM環境で使えるようにしたよって。

JRuby

RubyのJVM版です。

ほかにもいろいろあります。

さらに詳しく言語について知りたい方へ

あわせて読みたい
【2021年最新】プログラミング言語の人気ランキングTOP10! プログラミング言語の人気ランキングを知りたい方!人気なプログラミング言語の「特徴」を知りたい方!どのプログラミング言語を学ぼうか迷っている方! 今回は、プログ...
あわせて読みたい
【2021年最新】将来性のあるプログラミング言語を7つ紹介! 今回は、「プログラミング言語の将来性」をテーマに記事を書いていきます。 この記事に書かれていること! 将来性のあるプログラミング言語これから伸びると予想されて...

以上、「JVMとは?Javaの実行環境の仕組みを図でわかりやすく解説!」でした。

エンジニア
最後までお読みいただきありがとうございました。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!
好きなところから読む
閉じる