Javaプログラムを実行するために欠かせないのがJava VMという仮想マシンです。Javaは、ソースコードをそのまま実行することはできず、一度バイトコードに変換し、それをJava VMが解釈・実行することで動作します。
本記事では、Java VMの基本概要から仕組みや設定変更の方法、Javaプログラムの実行手順まで詳しく解説します。
Java VMとは?
Java VM(Java Virtual Machine)とは、Javaプログラムを実行するための仮想マシンを指します。Java言語で書かれたコードは、バイトコードという形に変換され、その後Java VMという仮想マシンで実行されるのが一連の流れです。
Java VMの仕組みとは
Java VMの仕組みは、Javaで書かれたプログラムをバイトコードという中間的なコードに変換し、Java Runtime Environment(JRE)内で実行するというものです。このコンパイルを経て、Javaコードはバイトコードになり、Java VMがそのバイトコードを解釈して実行します。
また、Java VMは、プログラムの速度をより速くするために、JITコンパイル(Just-In-Timeコンパイラ)という技術を使用し、実行時のパフォーマンスを最適化してくれます。これにより、プログラムが実行されるたびに効率的な処理が可能となります。
Java VMの使用用途
Java VMは、Webアプリケーションやスマートフォンアプリなど、さまざまな種類のアプリケーションを動かすのに使われています。Java VMを使えば、WindowsやLinux、MacなどOSが異なっていたとしてもJavaプログラムの実行が行えるのが最大の強みといえます。
パソコンの環境を統一する必要がなく、開発チームの全員が異なる環境であったとしても作業に問題が発生しないのは大きな利点の1つです。
また、統合開発環境(IDE)と組み合わせて使うことで効率的な開発が実現可能です。以下の記事で詳しく解説していますので、ぜひ参考にしてみてください。
Java VMのインストール・導入方法
Java VMを導入するには、まず公式サイトからJava Development Kit(JDK)をダウンロードする必要があります。JDKはJavaプログラムを開発・実行するための必須ツールであり、JDKの中にJava VMが含まれています。
ここでは、Java VMのインストール・導入方法について詳しく説明します。
公式サイトからJava VMをダウンロードする手順
JDK(Java VM)は、以下の手順でダウンロードが可能です。
- Oracleの公式ウェブサイトにアクセスします。
- ダウンロードページで、OSに合ったJDK(Java VM)のバージョンを選択します。
バージョンの指定がない限りは、最新版のJDK(Java VM)をダウンロードすることをおすすめします。
インストール手順
先ほどダウンロードしたJDK(Java VM)をインストールします。
以下の手順に従ってインストールを行いましょう。
- ダウンロードしたJDK(Java VM)のインストーラーファイルをダブルクリックして実行します。
- インストール先を指定します。
インストール先については配置に指定やこだわりがない場合、デフォルトで問題ありません。
コマンドプロンプトで導入の確認方法
インストールが完了した後、コマンドプロンプトやターミナルを使って、JDK(Java VM)が正しくインストールされたか確認できます。
ここでは、コマンドプロンプトを用いた確認手順を紹介します。
- コマンドプロンプトを開きます。
- 「java -version」を入力して実行します。
- 「java version “20.0.1” 2023-04-18」などの情報が表示されていれば導入完了です。
もしエラーメッセージが表示された場合は、JDK(Java VM)が正しくインストールされていない可能性があります。再度インストールを実行することで解決する場合があるので、再実施を行ってみてください。
Java VMで動く6つの言語
Java VMで動作する言語は、Java以外にもいくつか存在します。それぞれ特徴や用途が異なるので、使用言語に合わせて確認をしましょう。
言語 | 特徴・用途 |
---|---|
Java | 大規模なアプリケーション開発に最適 |
Kotlin | Androidアプリの開発で人気、コードが簡潔でNull安全が特徴 |
Scala | 関数型とオブジェクト指向の両方を使える |
Groovy | Javaを拡張した言語 |
Clojure | 関数型プログラミングに特化し、並列処理が得意 |
JRuby | Java上で動くRubyで、Rails開発に利用可能 |
上記のような、異なる言語を同じ環境で動かせることがJavaVMの最大の強みです。
Java VMの設定について
Java VMは、Javaプログラムを効率的に動作させるために、さまざまな設定の変更ができます。
今回紹介する設定の変更内容は次のとおりです。
- ヒープメモリの変更方法
- ガベージコレクションの種類変更
- スレッド数・スタックサイズの変更
- コンパイラの設定変更
- デバッグモード変更
- ログ出力
ここでは、ヒープメモリの変更やガベージコレクションの種類変更など、Java VMの設定をカスタマイズする方法について解説します。
ヒープメモリの変更方法
ヒープメモリは、Javaプログラムが動作する際に使用するメモリ領域のことを指します。デフォルトでは自動的にメモリが管理されますが、ヒープメモリの設定を変更することでパフォーマンスの最適化が可能です。
ヒープメモリの変更コマンドは以下になります。
ヒープサイズは次のコマンドで確認ができます。
ガベージコレクションの種類変更
ガベージコレクションは、自動的に使われなくなったメモリを解放し、再利用する機能です。Java VMはデフォルトでガベージコレクションを使用します。
ガベージコレクションには次の3種類が選択できます。
種類 | 内容 |
---|---|
並列ガベージコレクション | 複数のスレッドでメモリを回収します。 |
G1ガベージコレクション | ヒープ領域を最低限の停止で処理をします。 大規模アプリケーションに適しています。 |
Zガベージコレクション | スレッド実行で1ミリ秒を超えて停止しません。 負荷が高い作業であっても同時実施が可能です。 |
それぞれの設定変更方法は以下のとおりです。
並列ガベージコレクション
G1ガベージコレクション
Zガベージコレクション
スレッド数・スタックサイズの変更
スレッドの使用効率を改善したり、アプリケーションのスレッド動作を調整したいときは、スレッド数・スタックサイズを変更をします。
スレッド数の変更コマンド
スタックサイズの変更コマンド
コンパイラの設定変更
JITコンパイラ(Just-In-Timeコンパイラ)の設定を変更することで、パフォーマンスの向上が期待できます。
JITコンパイラを有効化するコマンド
デバッグモード変更
Java VMで実行中のプログラムの動作を追跡したいときは、デバッグモードを有効化しましょう。
デバッグモードを有効化するコマンド
ログ出力
Java VMのログ出力を活用すれば、問題が発生したときに原因を追跡しやすくなります。ログの出力設定はガベージコレクションと全体ログの2つが設定可能です。
ガベージコレクションのログ出力コマンド
Java VMの全体ログ出力コマンド
Java VMの設定変更をするときの注意点
Java VMの設定を変更する際は、事前に現在の設定をバックアップしておくことをおすすめします。理由としては、変更後に問題が発生してもすぐに元の状態に戻せるため安心だからです。予期しないトラブルを防ぐためにも、事前のバックアップを取るようにしましょう。
Java VMを使ってJavaを動かす方法
ここからは、Java VMを使ってJavaプログラムを動かす方法を紹介します。テキストエディタとJava VMがあれば誰でも簡単に動かすことができるので、参考にしながら実施してみましょう。
Java VMを使ってJavaを動かす手順は大きく3ステップです。
- Javaプログラムを作成
- Javaプログラムをコンパイル
- Javaプログラムの実行
Javaの基本をもっと知りたい方はこちらを参考にしてください。
Javaの基本をしっかり抑えた上で、Javaのプログラムを作成していきましょう。
Javaプログラムを作成
まずパソコンに入っているテキストエディタを新規作成します。テキストエディタの中に以下のコードを書いてください。
public static void main(String[] args) {
System.out.println(“Hello, World!”);
}
}
コードを書き終えたらテキストエディタをHelloWorld.javaという名前で保存します。このとき、拡張子を.txt形式から.java形式に書き換えるのを忘れないようにしてください。
次にHelloWorld.javaのコンパイルへ移ります。
Javaプログラムをコンパイル
HelloWorld.javaをコンパイルすることで、Java VMで実行できるようにバイトコードに変換が行われます。Windowsの場合はコマンドプロンプト、Macの場合はターミナルを開いて次のコードを入力しましょう。
このコードを実行することでHelloWorld.classというファイルが生成されます。このクラスファイルがバイトコードにコンパイルされたJavaプログラムです。
Javaプログラムの実行
コンパイルが完了したら、Java VMを使ってJavaプログラムを実行しましょう。実行するには、コマンドプロンプトまたはターミナルを開き、次のコマンドを入力します。
コマンドを実行すると「Hello, World!」と表示がされます。これでJavaプログラムは実行完了です。
もし、「エラー: メイン・クラスHelloWorld.classを検出およびロードできませんでした」と表示された場合、実行コマンドが間違っている可能性が高いです。
このエラーが発生する主な原因の一つは、HelloWorld.classのように拡張子.classをつけたまま実行しようとしているからです。
Java VMでプログラムを実行する際は、拡張子なしでクラス名のみを指定して実行を行いましょう。
まとめ
本記事では、Javaプログラムを動かすのに必須な仮想マシン「Java VM」について解説しました。Java VMの設定はアプリのパフォーマンスにも影響があるので、変更方法をしっかり押さえておくことをおすすめします。
今回紹介したJavaプログラムも、Java VMを導入してテキストエディタにコードを書くだけでコマンドプロンプトで簡単に実行が行えますので、ぜひ参考にしてみてください。
