【図解】JVM-Java仮想マシンとは?わかりやすく解説

JavaJVM言語が動作するためにはこのJVM-Java仮想マシンが必要不可欠です。

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

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

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

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

  • JVM-Java仮想マシンとは?
  • 仕組みはどうなっているの?
  • JVM言語のメリットは?
  • 有名なJVM言語は?

JVM-Java仮想マシンとは

私はJVM(ジェーブイエム)Java仮想マシンと呼ぶことが多いですが、ほかにも呼び方があります。

例えば「Java Virtual Machineジャババーチャルマシン。これを直訳すればJava仮想マシンですし頭文字をとればJVMとなります。

Java VMと呼んだりする人もいますね。

それではまずは概要から。

【図解】JVM-Java仮想マシンの仕組み

Java仮想マシンとは、プログラミング言語Javaあるいは、JVM言語と呼ばれるプログラミング言語から作られるプログラム(ソースコード)をそれぞれのOSに合う形で実行する仮想マシンです。

仮想マシンとはソフトウェアみたいな意味です。

ようは、それぞれのwindowsやらMacやらにこの仮想マシンがインストールされていれば、正常にプログラムが機能するということです。

ほかのプログラミング言語だと、それぞれのOSにあったプログラムを書かないといけないことがあります。

その点Java含めJVM言語は、「JVMがそれぞれのOSで正常に機能するようなクッション材の働きをし、一つのコードでいろんなOSに対応できる」のです。

コンピュータ

ソースコード

↓翻訳

中間コード(バイトコード)

Java仮想マシン

中間コード(バイトコード)

 それぞれのOSにあった機械語に翻訳

ネイティブコード

まず、中間コードに翻訳するまでは、どのOSに向けてでも同じ仕様になっています

中間コード自体は同じということです。しかしながら、このままだと実行することはできないので、それぞれのOSにあった機械語に翻訳しないといけません。

ここでOSに対応させます。Java仮想マシンはこの「それぞれのOSにあった機械語に翻訳」という作業を行ってくれています。

メリットとデメリット

OSに依存せずに動作する

これが一番大きなメリットといえるでしょう。OSに依存しないというのは、WindowsでもMac OSでもLinuxでも動作するということです。マルチプラットフォーム(クロスプラットフォーム)ともよばれる特徴です。

これは、一回中間コードに訳されたときにJVMがそれぞれのOSに合った機械語に翻訳してくれているためです。

Java仮想マシン

中間コード(バイトコード)

 それぞれのOSにあった機械語に翻訳

ネイティブコード

ソースコードを中間コードに翻訳するのはOSを考えずに行います。あとは、それぞれのOSに合う機械語にJava仮想マシンが翻訳してくれます。なので、プログラムをほかのOSに移植するとき、JVM言語ならばソースコードを書き直す必要がありません。

JVMが入っている環境であればいいのです。

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

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

実行速度

コンパイラ型言語 > JVM言語 > インタプリタ型言語

という関係が妥当なのですが、今やPythonやRubyなどのインタプリタ言語は当然のように使われています。それは、処理速度の面でもメモリの面でも現代のコンピュータは進化を遂げていて、いまでは気にならないほどになったからです。インタプリタより速いJVM言語が使われているのはうなづけますね。

コンパイラとインタプリタの違いは?言語の違いを分かりやすく解説!

ただ、気にならないほどですが劣っているというのは事実です。少なからずデメリットとして書いておきます。

人気の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のJava版です。JVMで使えるようにしたよって。

JRuby

RubyのJava版です。

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

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

こちらの記事人気のプログラミング言語について書いています。

プログラミング言語の将来性や難易度を人気度ランキングで紹介!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です