MENU
PROFILE

なお

本業×複業 | 20歳 | 18歳でリモートインターン▶︎WEBマーケ会社に新卒で部長 | 国語偏差値37でブログ開設▶︎1年3ヶ月で月10万PV▶︎1年半で売上月70万 | 就活・複業、WEB制作~コンサル相談受付中!

 

今井

20歳 | IT系の記事とアイキャッチ画像を担当しています。情報系の大学に通っていて、現在は3年生。カテゴリ整理中。

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

今井

こんにちは!
今井(@ima_maru)です。

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

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

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

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

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

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

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

じゃぱざむ運営主
なお

WEBマーケター

なお

nao

プロフィール

20歳 | WEBメディアの会社で部長をやりながら、じゃぱざむ・特化メディア・WEB制作~コンサル・投資・就活相談など幅広くやっています。【働くこと(就活など)に役立つ情報流してます】 Twitterはこちら

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版です。

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

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

【2020年9月最新版】プログラミング言語の人気ランキングTOP10!それぞれの特徴を解説! 【2020年9月最新】将来性が高いプログラミング言語TOP5はこれだ!

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

今井

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

コメントを残す

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