案件評判
JVMを理解する!初心者でも分かる構成、特徴、基礎知識などを簡単に解説!

JVMを理解する!初心者でも分かる構成、特徴、基礎知識などを簡単に解説!

最終更新:2021/07/14 投稿:2021/07/05
JVMを理解する!初心者でも分かる構成、特徴、基礎知識などを簡単に解説!

JVMはJavaプログラムを実行するために必要な仮想マシンです。JVMのおかげでJavaは様々なプラットフォームにおいても動作することができます。この記事ではJVMを理解するために初心者でも分かる構成、特徴、基礎知識などを簡単に解説していきます。

JVMとは

JVM(ジェイブイエム)とはJavaプログラムを実行するために必要な仮想マシンです。Java Virtual Machineの頭文字を取った略称となっております。日本語訳をすると『Java仮想マシン』となります。Javaバイトコードとして定義された命令セットを実行するスタック型の仮想マシンのことです。JVMには大きく分けてNEW領域、OLD領域、Permanent領域の3つが存在します。JavaはJVMが動作する環境でしか利用することができません。

『JVM基本情報』
▼種別
仮想マシン
▼構成
・NEW領域
・OLD領域
・Permanent領域
▼対応言語
・Java
・Scaka
・Kotlin
・Groovy

Java

JavaとはOracle社が開発・提供するオブジェクト指向のプログラミング言語です。1995年にサン・マイクロシステムズ(後にOracle社が買収)のジェームス・ゴブリン氏によって開発されリリースとなりました。プログラミング言語の発展に大きな影響をもたらしたC言語を元に開発されたことでも有名です。当時、最も人気を集めていたC言語はオブジェクト指向ではありませんでした。Javaの登場によってオブジェクト指向が主流の時代が訪れたと言われております。
Javaのキャッチコピーは「Write once, run anywhere」で直訳すると「一度書けば、どこでも実行できる」という意味があります。このことからも分かるようにJavaの特徴は『オブジェクト指向の先駆者』で『どこでも動く』ということらが挙げられます。世界中で最もポピュラーで多くのWebアプリケーションで採用されていることで知られております。

『Java基本情報』
誕生時期:1995年
開発者:サン・マイクロシステムズ(後にOracle社が買収)
種別:コンパイラ言語
特徴:①オブジェクト指向の先駆者/②どこでも動く

Javaの公式サイトはこちら>>
Javaのメリット・基礎知識について解説された記事はこちら>>

JVMの構成要素

JVMの構成要素を見ていきましょう。

NEW領域

NEW領域とは新規作成されたオブジェクトの中でも若いものが格納される領域です。またNEW領域はさらに「Eden」「Survivor」の2つに分けられます。

『Eden』
新しいオブジェクトが作成された際に、格納されるメモリ領域
『Survivor』
時間が経過したオブジェクトが格納されるメモリ領域

OLD領域

OLD領域とは長期間使用されたオブジェクトが格納される領域です。NEW領域に格納された中で使用期間が長いものが管理されます。OLD世代領域に存在する不要となったJavaオブジェクトは、FullGC処理によって回収されます。

『FullGC』
OLD領域が一杯になったときに稼動するGC(ガレージコレクション)

Permanent領域

Permanent領域とはクラスやメソッドなど情報が格納される領域です。JSPを使用する場合などもPermanent領域が利用されます。

『JSP』
JSP(JavaServer Pages)はJavaプログラムをWebページに埋め込むことで、サーバ上で実行された結果を反映しページを動的に生成する技術

JVMの特徴

JVMの特徴を見ていきましょう。

JavaはJVM無しでは実行できない

JavaはJVM無しでは実行できないという特徴があります。JVMが動作する、ある程度リッチ環境でなければ利用できません。コンピュータの中にはJVMに非対応のプラットフォームが存在し、その場合にはJVM上でしか動かすことの出来ないJavaは利用することができません。

自由度の高いプログラム実行環境

JVMは自由度の高いプログラム実行環境であるという特徴があります。JVMがJavaプログラムを様々なプラットフォームで実行可能な形式に変換する方法をとっています。これをクロスプラットフォームと呼びます。これによってWindowsやLinux、MacなどのOSやデバイスを問わずJavaを実行することが出来るのです。

『クロスプラットフォーム』
クロスプラットフォームとはWindows、Macのように異なるOSやWebアプリ、デスクトップアプリ、スマートフォンアプリなど様々なデバイスの異なるプラットフォームにおいて同じ仕様のアプリケーションを動かすことに対応したプログラムのこと

クロスプラットフォームのメリット、種類などの基礎知識についての記事はこちら>>

Java以外の言語でも使用できる

JVMはJava以外の言語でも使用できるという特徴があります。JVM上で実行することの出来るプログラミング言語をJVM言語と呼びます。

JVM環境を使用できる言語

JVM環境を使用できる言語を見ていきましょう。

Scalaとは

Scalaとは2001年に設計されたJavaに影響を受けたオブジェクト指向と関数型言語の特徴を統合したプログラミング言語です。世に公開がされたのは2004年始めの頃でJavaプラットフォームにリリースされました。ScalaはJVM上で動作するため、Javaのライブラリを不自由なく使えるという特徴があります。他にも.NET Framework上でも動作するため、同様に.NETライブラリも使用することが出来ます。日本国内でも様々な有名サービスがScalaを用いた開発を行っており、代表的なものとして『SmartNews』『Chatwork』などが挙げられます。

『Scalaの基本情報』
▼誕生時期
2003年
▼開発者
ロバート・グリーセマー氏等
▼特徴
①オブジェクト指向
②関数型言語

Scalaの公式サイトはこちら>>
Scalaの特徴、できることなどの基礎知識について解説された記事はこちら>>

Kotlinとは

Kotlinとは2011年に開発されたJVM上で動作する静的型付けのオブジェクト指向のプログラミング言語です。KotlinはJavaをもっと簡潔・安全になるようにという目的の元に開発されました。Kotlinが大きな注目を集めるキッカケとなったのが2017年にGoogleが発表したAndroid公式開発言語への追加です。AndroidアプリはこれまでJavaで開発するのが基本とされておりましたが、Kotlinの登場によってより簡単にAndroidアプリの開発が実現できるようになりました。Kotlinの特徴は『オブジェクト指向』『Javaを簡潔化した言語』『JVM上で動作する』などが挙げられます。

『Kotlinの基本情報』
▼誕生時期
2011年
▼開発会社
ジェットブレインズ社
▼設計者
アンドリー・ブレスラフ氏、ドミトリー・ジェメロフ氏
▼種別
コンパイラ言語
▼特徴
①オブジェクト指向
②Javaを簡潔化
③JVM上で動作

Kotlinの公式サイトはこちら>>
Kotlinの歴史、特徴などの基礎知識について解説された記事はこちら>>

Groovy

GroovyとはJavaプラットフォーム上で動作するJavaから派生したプログラミング言語です。Rubyからの影響も受けており、機能や概念はRubyライクとなっております。RubyライクなJava版スクリプト言語というのがしっくりきます。Groovyは動的プログラミング言語ですので直接スクリプトを実行することができます。Javaの文法を大きく簡易化しているためJavaユーザーは学習コストを抑えて習得することができるでしょう。特徴として『JVMで動作する』『高度なJava補完機能』『文法が簡単』などが挙げられます。

『Groovyの基本情報』
▼誕生時期
2013年
▼開発者
ジェームス・ストラチャン氏
▼設計者
Java コミュニティ プロセス
▼種別
動的プログラミング言語
▼特徴
①JVMで動作する
②高度なJava補完機能
③文法が簡単

Groovyの公式サイトはこちら>>
Groovyの歴史、特徴などの基礎知識について解説された記事はこちら>>

まとめ

JVMを理解するために初心者でも分かる構成、特徴、基礎知識などを簡単に解説させていただきました。JVMを一言で表すと『Javaプログラムを実行するために必要な仮想マシン』です。特徴として「自由度の高いプログラム実行環境」「Java以外の言語でも使用できる」などが挙げられます。JVMについてこの記事に記載されている最低限の内容は理解をしておくようにしましょう。

案件評判
常駐する会社が、実際どんな会社で、どんな案件が動いているか詳しく知りたい。
これは常駐形態で働く方なら誰もが感じていることだと思います。 常駐の働き方をされている方は是非一度「案件評判」で案件についての評判をチェックしてみてください。